TngRootBypassHook 增强 captcha 诊断、TigerTally/JNIC 分层与 HWUI 策略;新增逆向脚本、Frida 工具与 UI dump;同步 MariBank SG hook 与 tng_exit_guard 更新。
9.5 KiB
9.5 KiB
MariBank 菲律宾注册突破 & 新加坡现状(2026-07-06)
设备:Pixel 6(
1C081FDF600K5Q)· Magisk 30.7 + Zygisk + LSPosed
结论:菲律宾 SeaBank 已能发 OTP;新加坡 MariBank 仍 3100012
关联: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)
POST https://api.seabank.ph/uapi/v2/register
加密前明文(MariBankEncrypt in0 byte[1180])核心字段:
{
"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"
}
服务端响应:
{"code":0,"msg":"success","data":{"scene":"REGISTRATION","step":"BSO","tranId":"7f21098a-2113-40fb-bb6a-e2e651460f53",...}}
3.2 第二次 register(OTP 触发,step=BSO)
{
"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 前)
POST https://api.maribank.com.sg/uapi/v2/register
→ {"code":3100012,"msg":"Unexpected error occurred. Please try again later. "}
加密前 deviceFingerprint 示例:
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 一键:
.\scripts\maribank-spoof-device.ps1 # 一次性 resetprop
.\scripts\maribank-spoof-device.ps1 -InstallModule # 安装持久模块
.\scripts\maribank-scheme-b-finish.ps1 # LSPosed 作用域 + pm clear
5.4 Shamiko 配置要点
- Magisk → 开启 Zygisk
- Configure DenyList 开启 → 勾选 MariBank PH/SG 全部进程
- Enforce DenyList 必须关闭(否则 Shamiko 不生效)
- 安装 Shamiko 模块并重启
6. 为何 PH 能过、SG 不过(推断)
详细展开(菲律宾真实原因、
afExtInfo、USB 调试与 Hook):见MariBank风控与载荷说明.md§4–§5。
| 维度 | PH ✅ | SG ❌ |
|---|---|---|
| 同一 deviceFingerprint 结构 | 有,尾部 |00|0 |
有,尾部 |00|0 |
data/dataKey attestation |
服务端接受 | 服务端拒绝(3100012) |
| 测试次数 / 黑名单 | 较少失败记录 | Pixel 6 多次测 SG 注册 |
| API 风控强度 | 当日实测 通过 | 当日实测 拒绝 |
| 干净机对照 | 未详测 PH | 25078RA3EY 关 ADB 可 OTP |
结论:
- 改 riskToken 尾部 alone 不够,但加上 加密前 Hook + Shamiko + 换 ID 后 PH 足够。
- SG 可能在 attestation 解密后仍有 更严规则(Play Integrity、设备信誉、区域黑名单)。
- 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. 常用命令
$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. 新加坡后续建议
- 用 PH 成功时的同一环境 测 SG:关 USB 调试、
pm clearSG 包、冷启动 - diff PH vs SG 加密前 register JSON(
deviceFingerprint段、data长度与字段) - 修复 ProcessBuilder 不抛异常,避免 SHPSSDK 检测 tamper
- 若仍 3100012:考虑 未测过 SG 的干净机 或 native hook
libshpssdk_bank.so - 菲律宾侧:继续走完 OTP → 开户 验证全流程稳定性
10. 相关文档
| 文档 | 说明 |
|---|---|
MariBank风控与载荷说明.md |
register 字段、afExtInfo、USB 调试、PH 真实原因、Xposed/LSPosed |
手机操作手册.md |
Root 机部署、LSPosed、日常操作、抓 log |
Hook指南.md |
Xposed/LSPosed 概念、Telegram Hook、扩展 App |
MariBank实现说明.md |
PH Hook 实现细节(含 7/3 失败记录,已追加 7/6 突破) |
MariBank新加坡逆向.md |
SG 逆向与 ADB 检测 |
MariBank新加坡突破.md |
SG 3100012 突破计划与测试流程 |
工作日志_2026-07-03.md |
7/3 工作记录 |
记录日期:2026-07-06 · 最后更新:文档体系整理(操作手册 + 风控载荷说明)