# 更新说明

## MariBank 风控 bypass（2026-07-06）

- **菲律宾 SeaBank**（`ph.seabank.seabank`）：Root Pixel 6 上 **注册成功、可发 OTP**（`api.seabank.ph` → `code=0`）
- **新加坡 MariBank**（`sg.com.maribankmobile.digitalbank`）：仍 **3100012**
- 新增 / 更新文档：
  - [`docs/MariBank_2026-07-06_菲律宾突破.md`](MariBank_2026-07-06_菲律宾突破.md) — 突破记录与 PH/SG 对比
  - [`docs/MariBank风控与载荷说明.md`](MariBank风控与载荷说明.md) — register 字段、afExtInfo、USB 调试、真实原因
  - [`docs/手机操作手册.md`](手机操作手册.md) — Root 机部署与日常操作
  - [`docs/Hook指南.md`](Hook指南.md) — 新增 §0 Xposed 与 LSPosed
- 脚本：`scripts/maribank-spoof-device.ps1`、`scripts/maribank-scheme-b-finish.ps1`、`scripts/magisk/maribank-device-spoof/`
- 文档文件名已全部改为中文（见 `docs/` 目录）

---

## v2.2.1（2026-07-02）

### 修复：Hook 通道在 notiMessage 后台时丢失消息

**问题**  
TG 在前台、notiMessage 切到后台时，Hook 虽能收到 Xposed 广播，但原先需经 `startService` 才转发到 PC。Android 8+ 会限制后台启动服务，导致 PC 调试台和日志经常收不到 `[Hook/...]` 消息，表现为「必须两个 App 都在当前页面才行」。

**改动**

| 模块 | 说明 |
|------|------|
| `HookMessageReceiver` | 收到广播后**直接在 Receiver 内**调用 `DebugForwarder`；使用 `goAsync()` 等待 HTTP 完成，避免进程被提前回收 |
| `DebugForwarder` | 增加完成回调与详细日志（成功 / HTTP 错误 / 网络失败） |
| `NotificationService` | `submitFromHook` / `requestStartMonitoring` 改用 `startForegroundService`（正式上传模式）；通知通道增加诊断日志 |
| `NotificationHealthCheckWorker` | 健康检查**不再要求联网**；每 15 分钟自动尝试恢复通知监听 |

**诊断 logcat 标签**

```text
HookMessageReceiver   — Hook 广播到达 / 被跳过
DebugForwarder        — PC 转发结果
NotificationService   — 系统通知到达 / 空通知跳过
NotiHealthCheck       — 定时健康检查
```

```powershell
adb logcat | findstr /i "HookMessageReceiver DebugForwarder NotificationService NotiHealthCheck"
```

**验证步骤**

1. 安装新版主 App：`scripts\install-debug.ps1`
2. 启动 PC 调试台：`scripts\start-debug-server.ps1`
3. notiMessage 点「开始监听」后**切到桌面**
4. 打开 TG 发消息 → PC 应出现 `[Hook/xposed_telegram]`

> **说明**：TG 在后台时仍走**通知通道**，需 TG 弹出系统通知。若 TG 被系统冻结或未弹通知，请给 TG / notiMessage 设「电池不受限制」，并确认群未静音。

---

## v2.2 + Xposed v1.1.0

### 新功能

- **Telegram 专用 Hook**（`TelegramMessageHook`）：前台抓取已解密消息，支持文字 / 图片说明 / 群名
- **双 APK 架构**：主 App + `xposed-module`，LSPosed 作用域需勾选 Telegram 与 notiMessage
- **PC 本地调试台**（`debug-server/server.py`，端口 8765）：按群/会话分组展示
- **`MessageLogStore`**：监听页日志持久化，App 后台再打开可恢复历史
- **`DebugForwarder`**：消息 POST 到 PC（`AppConfig.ENABLE_DEBUG_FORWARD`）
- **安装脚本**：`build-debug.ps1`、`install-debug.ps1`、`install-full.ps1`、`configure-lsposed.py`

### 配置（`AppConfig.java`）

| 开关 | 当前默认值 | 含义 |
|------|------------|------|
| `ENABLE_SERVER_UPLOAD` | `false` | 正式后端上传 |
| `ENABLE_DEBUG_FORWARD` | `true` | 转发到 PC 调试台 |
| `DEBUG_SERVER_URL` | `http://127.0.0.1:8765` | 调试服务地址（USB 用 adb reverse） |

### 双通道机制

| 场景 | 通道 | 日志标识 |
|------|------|----------|
| TG 后台 / 锁屏有系统通知 | 通知监听 | 无前缀 |
| TG 前台（通常无通知） | Xposed Hook | `[Hook/xposed_telegram]` |

### 已知限制

- 通用 SQLite Hook 对 Telegram **无效**（消息在加密 `data` 字段）
- 监听包名须与实际安装一致，如 `org.telegram.messenger.web`
- 空内容通知（纯图片无文字）会被跳过
- Android Studio 直接 Run 只装主 App；完整能力需 `install-full.ps1`

### 文档

- 架构与扩展：`docs/Hook指南.md`
- Agent 说明：`AGENTS.md`

---

## 安装与升级

```powershell
# 构建
powershell -ExecutionPolicy Bypass -File scripts\build-debug.ps1

# 安装双 APK
powershell -ExecutionPolicy Bypass -File scripts\install-debug.ps1

# 完整安装（含 LSPosed 作用域 + adb reverse + 电池白名单）
powershell -ExecutionPolicy Bypass -File scripts\install-full.ps1

# PC 调试台
powershell -ExecutionPolicy Bypass -File scripts\start-debug-server.ps1
```

升级 v2.2.1 后**至少需重装主 App**；若只改了主 App 代码，Xposed 模块无需重装。
