TngRootBypassHook 增强 captcha 诊断、TigerTally/JNIC 分层与 HWUI 策略;新增逆向脚本、Frida 工具与 UI dump;同步 MariBank SG hook 与 tng_exit_guard 更新。
257 lines
9.5 KiB
Markdown
257 lines
9.5 KiB
Markdown
# MariBank 菲律宾注册突破 & 新加坡现状(2026-07-06)
|
||
|
||
> **设备**:Pixel 6(`1C081FDF600K5Q`)· Magisk 30.7 + Zygisk + LSPosed
|
||
> **结论**:**菲律宾 SeaBank 已能发 OTP**;**新加坡 MariBank 仍 3100012**
|
||
> **关联**:[`MariBank实现说明.md`](MariBank实现说明.md) · [`MariBank新加坡逆向.md`](MariBank新加坡逆向.md)
|
||
|
||
---
|
||
|
||
## 1. 结果一览
|
||
|
||
| 地区 | 包名 | API | 注册结果 | 错误码 |
|
||
|------|------|-----|----------|--------|
|
||
| **菲律宾** | `ph.seabank.seabank` | `https://api.seabank.ph` | ✅ **成功 → OTP 短信** | `code=0` |
|
||
| **新加坡** | `sg.com.maribankmobile.digitalbank` | `https://api.maribank.com.sg` | ❌ 仍失败 | **3100012** |
|
||
|
||
**关键意义**:同一台 Root 机、同一套 Xposed + Magisk 伪装下,**PH 服务端已放行注册**,说明 Hook 链与 attestation 载荷 **对 PH 有效**;SG 失败更可能是 **区域风控策略差异** 或 **SG 侧设备黑名单**,而非「Root bypass 完全无效」。
|
||
|
||
---
|
||
|
||
## 2. 测试环境
|
||
|
||
| 项 | 值 |
|
||
|----|-----|
|
||
| 手机 | Google Pixel 6(oriole) |
|
||
| Root | Magisk **30.7**(`MAGISK:R`) |
|
||
| Magisk 模块 | `maribank_device_spoof`、`zygisk_shamiko`、`playintegrityfix`、`zygisk_vector` |
|
||
| DenyList | MariBank PH/SG 均已加入;**Enforce DenyList = OFF**(Shamiko 要求) |
|
||
| LSPosed 模块 | `com.miraclegarden.smsmessage.xposed` |
|
||
| LSPosed 作用域 | `ph.seabank.seabank`、`sg.com.maribankmobile.digitalbank` 等 |
|
||
| 伪装 serial | `Y1Rr2fxhOI0ZCQSb`(resetprop + Magisk 模块) |
|
||
| 伪装 android_id | `87ec910ab5d6f423` |
|
||
| 对照干净机 | `25078RA3EY`:关 USB 调试可进 SG OTP(无 LSPosed) |
|
||
|
||
---
|
||
|
||
## 3. 菲律宾突破 — log 证据(2026-07-06 13:40)
|
||
|
||
### 3.1 第一次 register(step=BE)
|
||
|
||
```text
|
||
POST https://api.seabank.ph/uapi/v2/register
|
||
```
|
||
|
||
加密前明文(`MariBankEncrypt in0 byte[1180]`)核心字段:
|
||
|
||
```json
|
||
{
|
||
"cyCode": "63",
|
||
"phone": "<RSA 加密>",
|
||
"rdVerifyInfo": {
|
||
"bioStatus": 0,
|
||
"data": "tPNHr/0eZzaPXs9oimvMNVWI/...",
|
||
"dataKey": "H/A6AqA8NhXZoaL0alG5VGRovcfuJykY92U...",
|
||
"deviceFingerprint": "jrKyNF/Fx4gcnzVpf1u9bw==|WJMksio9SaKKuyk1KMSilUGivdF+SHbqjB+aL65fucQcOCdojhBN3GKoY58sxVomiCfi5w==|TXeh8FyEf/8qHdAS|00|0",
|
||
"afExtInfo": { "modeInCall": "N", "modeInCommunication": "N", "modeCallScreening": "N" }
|
||
},
|
||
"scene": "REGISTRATION",
|
||
"step": "BE",
|
||
"source": "app"
|
||
}
|
||
```
|
||
|
||
服务端响应:
|
||
|
||
```json
|
||
{"code":0,"msg":"success","data":{"scene":"REGISTRATION","step":"BSO","tranId":"7f21098a-2113-40fb-bb6a-e2e651460f53",...}}
|
||
```
|
||
|
||
### 3.2 第二次 register(OTP 触发,step=BSO)
|
||
|
||
```json
|
||
{
|
||
"cyCode": "63",
|
||
"rdVerifyInfo": {
|
||
"action": "OTP_SMS_TRIGGER",
|
||
"deviceFingerprint": "jrKyNF/...|00|0",
|
||
"operationId": "61f9bcc6-dc0c-4f3d-8566-e1d3dc02653f1783316458430"
|
||
},
|
||
"scene": "REGISTRATION",
|
||
"step": "BSO",
|
||
"tranId": "7f21098a-2113-40fb-bb6a-e2e651460f53"
|
||
}
|
||
```
|
||
|
||
响应仍为 **`code=0`** → **App 可发验证码**。
|
||
|
||
### 3.3 与 7 月 3 日对比
|
||
|
||
| 日期 | PH register | 说明 |
|
||
|------|-------------|------|
|
||
| 2026-07-03 | ❌ 4067012 | 仅 riskToken 尾部净化,无加密前 Hook |
|
||
| 2026-07-06 | ✅ code=0 → OTP | 加密前 Hook + Attestation Hook + 方案 B 换 ID + Shamiko |
|
||
|
||
---
|
||
|
||
## 4. 新加坡仍失败 — log 证据
|
||
|
||
### 4.1 典型失败(11:50,换 ID 前)
|
||
|
||
```text
|
||
POST https://api.maribank.com.sg/uapi/v2/register
|
||
→ {"code":3100012,"msg":"Unexpected error occurred. Please try again later. "}
|
||
```
|
||
|
||
加密前 `deviceFingerprint` 示例:
|
||
|
||
```text
|
||
X4Ln9cRV1v6aabPt4Ymnqw==|RmdlV34wu8nk8n9nj9A+32Z0BjF/29py3UVnqGWHBJRj5HuTmmOPX+pfJWkZBOn/n41pYw==|3ailMzmgCFzRDFGv|00|0
|
||
```
|
||
|
||
尾部 `\|00\|0` 已净化,**仍 3100012**。
|
||
|
||
### 4.2 SG 错误码含义(推断)
|
||
|
||
| 码 | 地区 | 文案 |
|
||
|----|------|------|
|
||
| 4067012 | PH | For your account's security, temporarily blocked... |
|
||
| 3100012 | SG | Unexpected error occurred. Please try again later. |
|
||
|
||
同属 **服务端风控拒绝**,非本地 Root 弹窗。
|
||
|
||
---
|
||
|
||
## 5. 已实现的 bypass 架构
|
||
|
||
### 5.1 分层模型
|
||
|
||
```
|
||
客户端本地层 服务端层
|
||
───────────────── ─────────────────
|
||
SafeMode Root 弹窗/自杀 → (不决定 OTP,只决定能否进 App)
|
||
SG ADB 全屏拦截页 →
|
||
SHPSSDK assessRisk → 解密 rdVerifyInfo.data/dataKey
|
||
riskToken / deviceFingerprint → 查 deviceHash 黑名单
|
||
Magisk resetprop 换 serial → 区域策略(PH 松 / SG 严)
|
||
```
|
||
|
||
### 5.2 Xposed 模块文件
|
||
|
||
| 文件 | 作用 |
|
||
|------|------|
|
||
| `MariBankRootBypassHook.java` | SafeMode、SHPSSDK、ADB Settings、OkHttp 日志、4067/3100012 记录 |
|
||
| `MariBankShpsNativeHook.java` | `/proc` 过滤、SystemProperties、requestDefense 净化(不再 block) |
|
||
| `MariBankSdkUtilsHook.java` | 加密前 Hook `utils.d` / `uvwuvwuv` / Gson |
|
||
| `MariBankRegisterPayloadUtil.java` | `scene=REGISTRATION` JSON 净化 |
|
||
| `MariBankAttestationHook.java` | native 桥 attestation 链 + 环境探测拦截 |
|
||
| `MariBankRiskTokenUtil.java` | riskToken 尾部 `\|09\|1` → `\|00\|0` |
|
||
|
||
### 5.3 方案 B:Magisk 设备 ID 伪装
|
||
|
||
路径:`scripts/magisk/maribank-device-spoof/`
|
||
|
||
| 脚本 | 时机 | 内容 |
|
||
|------|------|------|
|
||
| `post-fs-data.sh` | 早期启动 | `resetprop` serial、boot 属性、关 adb 属性 |
|
||
| `service.sh` | 开机完成后 | 写入新 `Settings.Secure.android_id` |
|
||
|
||
PC 一键:
|
||
|
||
```powershell
|
||
.\scripts\maribank-spoof-device.ps1 # 一次性 resetprop
|
||
.\scripts\maribank-spoof-device.ps1 -InstallModule # 安装持久模块
|
||
.\scripts\maribank-scheme-b-finish.ps1 # LSPosed 作用域 + pm clear
|
||
```
|
||
|
||
### 5.4 Shamiko 配置要点
|
||
|
||
1. Magisk → 开启 **Zygisk**
|
||
2. **Configure DenyList** 开启 → 勾选 MariBank PH/SG 全部进程
|
||
3. **Enforce DenyList 必须关闭**(否则 Shamiko 不生效)
|
||
4. 安装 **Shamiko** 模块并重启
|
||
|
||
---
|
||
|
||
## 6. 为何 PH 能过、SG 不过(推断)
|
||
|
||
> **详细展开**(菲律宾真实原因、`afExtInfo`、USB 调试与 Hook):见 [`MariBank风控与载荷说明.md`](MariBank风控与载荷说明.md) §4–§5。
|
||
|
||
| 维度 | PH ✅ | SG ❌ |
|
||
|------|-------|-------|
|
||
| 同一 deviceFingerprint 结构 | 有,尾部 `\|00\|0` | 有,尾部 `\|00\|0` |
|
||
| `data`/`dataKey` attestation | 服务端接受 | 服务端拒绝(3100012) |
|
||
| 测试次数 / 黑名单 | 较少失败记录 | Pixel 6 多次测 SG 注册 |
|
||
| API 风控强度 | 当日实测 **通过** | 当日实测 **拒绝** |
|
||
| 干净机对照 | 未详测 PH | 25078RA3EY 关 ADB 可 OTP |
|
||
|
||
**结论**:
|
||
|
||
1. **改 riskToken 尾部 alone 不够**,但加上 **加密前 Hook + Shamiko + 换 ID** 后 **PH 足够**。
|
||
2. SG 可能在 attestation 解密后仍有 **更严规则**(Play Integrity、设备信誉、区域黑名单)。
|
||
3. PH 成功 **不能** 直接类推 SG;需 **diff 两次 register 明文** 或 **换未测过 SG 的环境** 再试。
|
||
|
||
---
|
||
|
||
## 7. 已知问题与踩坑
|
||
|
||
| 问题 | 现象 | 处理 |
|
||
|------|------|------|
|
||
| Gson Hook 误报 | i18n 文案含 "register" 刷屏 | 已改为只匹配 `scene=REGISTRATION` |
|
||
| `requestDefense` 被 block | 缺 `x-sap-fixme` | 已改为执行后净化,不 block |
|
||
| ProcessBuilder 抛异常 | `which su` → SecurityException | **待修**:应返回空进程而非抛异常 |
|
||
| Magisk zip 在 Windows 打包 | 只解压 module.prop | 用 `tar -a -cf` 或 adb 手动 push sh |
|
||
| 关 USB 调试后 adb 断开 | 收尾脚本卡住 | `maribank-scheme-b-finish.ps1` 已加 60s 超时 |
|
||
| Attest native Hook 命中少 | 仅 8 个 hook | `data`/`dataKey` 仍未在 native 层改写 |
|
||
|
||
### 禁止操作(会导致白屏/崩溃)
|
||
|
||
- Hook `System.loadLibrary`(SG RN 崩溃)
|
||
- Hook `RealInterceptorChain.proceed`
|
||
- 过早 Hook `ShpssInstall` / `vuvuwwwuw`
|
||
|
||
---
|
||
|
||
## 8. 常用命令
|
||
|
||
```powershell
|
||
$adb = "C:\Users\Administrator\AppData\Local\Android\Sdk\platform-tools\adb.exe"
|
||
|
||
# 构建安装
|
||
.\scripts\build-debug.ps1
|
||
.\scripts\install-debug.ps1
|
||
|
||
# 抓注册 log(先 logcat -c,再点 Next)
|
||
& $adb logcat -d | Select-String "MariBankEncrypt in0 byte\[1|MariBankRoot HTTP.*register|3100012|4067012|OTP_SMS"
|
||
|
||
# 验证伪装 ID
|
||
& $adb shell su -c "getprop ro.serialno; settings get secure android_id"
|
||
```
|
||
|
||
---
|
||
|
||
## 9. 新加坡后续建议
|
||
|
||
1. **用 PH 成功时的同一环境** 测 SG:关 USB 调试、`pm clear` SG 包、冷启动
|
||
2. **diff PH vs SG** 加密前 register JSON(`deviceFingerprint` 段、`data` 长度与字段)
|
||
3. 修复 **ProcessBuilder** 不抛异常,避免 SHPSSDK 检测 tamper
|
||
4. 若仍 3100012:考虑 **未测过 SG 的干净机** 或 **native hook `libshpssdk_bank.so`**
|
||
5. 菲律宾侧:继续走完 **OTP → 开户** 验证全流程稳定性
|
||
|
||
---
|
||
|
||
## 10. 相关文档
|
||
|
||
| 文档 | 说明 |
|
||
|------|------|
|
||
| [`MariBank风控与载荷说明.md`](MariBank风控与载荷说明.md) | **register 字段、afExtInfo、USB 调试、PH 真实原因、Xposed/LSPosed** |
|
||
| [`手机操作手册.md`](手机操作手册.md) | **Root 机部署、LSPosed、日常操作、抓 log** |
|
||
| [`Hook指南.md`](Hook指南.md) | Xposed/LSPosed 概念、Telegram Hook、扩展 App |
|
||
| [`MariBank实现说明.md`](MariBank实现说明.md) | PH Hook 实现细节(含 7/3 失败记录,已追加 7/6 突破) |
|
||
| [`MariBank新加坡逆向.md`](MariBank新加坡逆向.md) | SG 逆向与 ADB 检测 |
|
||
| [`MariBank新加坡突破.md`](MariBank新加坡突破.md) | **SG 3100012 突破计划与测试流程** |
|
||
| [`工作日志_2026-07-03.md`](工作日志_2026-07-03.md) | 7/3 工作记录 |
|
||
|
||
---
|
||
|
||
*记录日期:2026-07-06 · 最后更新:文档体系整理(操作手册 + 风控载荷说明)*
|