feat(maribank): PH 注册 OTP 突破、SG bypass 与中文文档
菲律宾 SeaBank 在 Root+LSPosed+Shamiko 下 register 已通过并触发 OTP;扩展 SG 包名、加密前 Hook、Magisk 设备伪装脚本,并将 docs 整理为中文操作与风控说明。
This commit is contained in:
@@ -1,6 +1,43 @@
|
||||
# 消息抓取架构与 Hook 扩展指南
|
||||
|
||||
本文说明 notiMessage 的双通道抓取机制、Telegram 的实现方式,以及日后接入其他 App 的步骤。
|
||||
本文说明 notiMessage 的双通道抓取机制、Telegram 的实现方式、**Xposed 与 LSPosed**,以及日后接入其他 App 的步骤。
|
||||
|
||||
> 手机部署步骤见 [`手机操作手册.md`](手机操作手册.md) · MariBank 载荷与风控见 [`MariBank风控与载荷说明.md`](MariBank风控与载荷说明.md)
|
||||
|
||||
---
|
||||
|
||||
## 0. Xposed 与 LSPosed
|
||||
|
||||
### 0.1 是什么关系
|
||||
|
||||
| | **Xposed(经典)** | **LSPosed** |
|
||||
|--|-------------------|-------------|
|
||||
| 性质 | Hook 框架概念 + 老实现(改 `/system`) | 现代实现,**不动 system** |
|
||||
| 依赖 | 老 Root / Recovery | **Magisk + Zygisk** |
|
||||
| 作用域 | 全局或 Installer 里选 | **按 App 勾选** |
|
||||
| 模块 API | `IXposedHookLoadPackage` 等 | **同一套 API** |
|
||||
| 本项目 | 源码在 `xposed-module/` | **手机上实际加载框架** |
|
||||
|
||||
日常说法:**「Xposed 模块」= APK**;**「启用 Xposed」= 在 LSPosed 里打开模块并勾选作用域**。
|
||||
|
||||
### 0.2 与本项目的关系
|
||||
|
||||
```
|
||||
Magisk → Zygisk → LSPosed → com.miraclegarden.smsmessage.xposed
|
||||
├── MariBankRootBypassHook(银行)
|
||||
├── TelegramMessageHook(Telegram)
|
||||
└── …
|
||||
```
|
||||
|
||||
测银行 App 时通常还需 **Shamiko**(Hide Magisk),与 LSPosed 分工见 [`MariBank风控与载荷说明.md` §6](MariBank风控与载荷说明.md)。
|
||||
|
||||
### 0.3 与其他工具对比
|
||||
|
||||
| 工具 | 特点 |
|
||||
|------|------|
|
||||
| **LSPosed** | 常驻、开机自动,适合银行 bypass |
|
||||
| **Frida** | 临时 attach,与 LSPosed 同时开易冲突 |
|
||||
| **Magisk 模块** | 改系统属性(serial),不是 Hook Java |
|
||||
|
||||
---
|
||||
|
||||
255
docs/MariBank_2026-07-06_菲律宾突破.md
Normal file
255
docs/MariBank_2026-07-06_菲律宾突破.md
Normal file
@@ -0,0 +1,255 @@
|
||||
# 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 检测 |
|
||||
| [`工作日志_2026-07-03.md`](工作日志_2026-07-03.md) | 7/3 工作记录 |
|
||||
|
||||
---
|
||||
|
||||
*记录日期:2026-07-06 · 最后更新:文档体系整理(操作手册 + 风控载荷说明)*
|
||||
@@ -1,11 +1,11 @@
|
||||
# MariBank 实现说明与问题记录
|
||||
|
||||
> **日期**:2026-07-03
|
||||
> **日期**:2026-07-03(**2026-07-06 更新:PH 注册已成功发 OTP**,见 [`MariBank_2026-07-06_菲律宾突破.md`](MariBank_2026-07-06_菲律宾突破.md))
|
||||
> **App**:MariBank / SeaBank PH · `ph.seabank.seabank` · v3.22.0 (32200)
|
||||
> **设备**:Pixel 6 · Magisk + Zygisk + LSPosed
|
||||
> **设备**:Pixel 6 · Magisk + Zygisk + LSPosed + Shamiko
|
||||
> **源码**:`xposed-module/.../hook/MariBank*.java`
|
||||
|
||||
本文档专门说明当日对 MariBank **注册流程风控绕过** 的 Xposed 实现细节,以及开发/测试中遇到的全部主要问题。通用工作汇总见 [`WORKLOG_2026-07-03.md`](WORKLOG_2026-07-03.md)。
|
||||
本文档专门说明当日对 MariBank **注册流程风控绕过** 的 Xposed 实现细节,以及开发/测试中遇到的全部主要问题。通用工作汇总见 [`工作日志_2026-07-03.md`](工作日志_2026-07-03.md)。
|
||||
|
||||
---
|
||||
|
||||
@@ -21,7 +21,21 @@
|
||||
→ 进入 OTP / 下一步
|
||||
```
|
||||
|
||||
### 1.2 当日最终结果
|
||||
### 1.2 最终结果(2026-07-06 更新)
|
||||
|
||||
|
||||
| 阶段 | 2026-07-03 | **2026-07-06** |
|
||||
| -------------------- | ---------- | -------------- |
|
||||
| 本地 Root 检测 / 自杀 / 弹窗 | **大部分绕过** | ✅ 稳定 |
|
||||
| DFP 设备指纹上报 | **成功** `code=0` | ✅ |
|
||||
| riskToken 尾部净化 | ✅ Hook 生效 | ✅ |
|
||||
| 加密前 register 明文 | ❌ 未抓到 | ✅ `MariBankSdkUtilsHook` |
|
||||
| 注册接口 PH | ❌ **4067012** | ✅ **`code=0` → OTP(BSO)** |
|
||||
| 注册接口 SG | — | ❌ **3100012**(见 SG 文档) |
|
||||
|
||||
**结论(2026-07-06)**:在 Pixel 6 + Shamiko + 方案 B 换 ID + 全套 Hook 下,**菲律宾 SeaBank 注册已通过服务端校验并可发验证码**;新加坡 MariBank 仍被拒。详见 [`MariBank_2026-07-06_菲律宾突破.md`](MariBank_2026-07-06_菲律宾突破.md)。
|
||||
|
||||
### 1.2.1 当日最终结果(2026-07-03 历史记录,已被 7/6 突破)
|
||||
|
||||
|
||||
| 阶段 | 结果 |
|
||||
@@ -33,7 +47,7 @@
|
||||
| 注册请求明文 | **未抓到**(body native 加密) |
|
||||
|
||||
|
||||
**结论**:本地层 bypass 已推进到能正常发起注册请求,但 **服务端风控仍拒绝**;当前实现不足以完成注册。
|
||||
**结论(2026-07-03)**:本地层 bypass 已推进到能正常发起注册请求,但 **服务端风控仍拒绝**。
|
||||
|
||||
---
|
||||
|
||||
@@ -332,9 +346,12 @@ Hook 对含 `temporarily blocked` / `8424 8050` 的 Toast 会 **记录栈**(`l
|
||||
|
||||
## 5. 遇到的问题(完整清单)
|
||||
|
||||
### 5.1 服务端注册拒绝 — 4067012(核心未解问题)
|
||||
### 5.1 服务端注册拒绝 — 4067012(2026-07-06 已突破 PH)
|
||||
|
||||
**现象**:
|
||||
> **更新**:2026-07-06 在 Shamiko + 方案 B + `MariBankSdkUtilsHook` / `MariBankAttestationHook` 下,PH register 返回 **`code=0`,step=BSO,OTP_SMS_TRIGGER 成功**。详见 [`MariBank_2026-07-06_菲律宾突破.md`](MariBank_2026-07-06_菲律宾突破.md)。
|
||||
> 以下内容为 **7 月 3 日** 失败时的记录,保留作对照。
|
||||
|
||||
**现象(2026-07-03)**:
|
||||
|
||||
- 能进入 Sign up 页
|
||||
- 请求发出后弹服务端封锁弹窗
|
||||
@@ -560,7 +577,10 @@ Log in → 输入已开户手机号 → 继续
|
||||
| `reverse/frida/trace_maribank_register.js` | Frida trace 脚本 |
|
||||
| `scripts/logcat-maribank.ps1` | logcat 过滤 |
|
||||
| `scripts/start-mari-trace.ps1` | Frida + logcat 联启 |
|
||||
| `docs/WORKLOG_2026-07-03.md` | 当日全项目工作汇总 |
|
||||
| `docs/工作日志_2026-07-03.md` | 当日全项目工作汇总 |
|
||||
| `docs/MariBank_2026-07-06_菲律宾突破.md` | PH OTP 突破 + SG 现状 |
|
||||
| `docs/MariBank风控与载荷说明.md` | register 字段、afExtInfo、USB 调试 |
|
||||
| `docs/手机操作手册.md` | Root 机部署与日常操作 |
|
||||
|
||||
|
||||
---
|
||||
217
docs/MariBank新加坡逆向.md
Normal file
217
docs/MariBank新加坡逆向.md
Normal file
@@ -0,0 +1,217 @@
|
||||
# MariBank 新加坡版逆向报告
|
||||
|
||||
> **日期**:2026-07-06
|
||||
> **设备**:Pixel 6(已 Root + LSPosed + ADB 开启)
|
||||
> **APK 来源**:从本机 pull,`reverse/apks/maribank_sg_*.apk`
|
||||
|
||||
---
|
||||
|
||||
## 1. 基本信息
|
||||
|
||||
| 项 | 值 |
|
||||
|----|-----|
|
||||
| **包名** | `sg.com.maribankmobile.digitalbank` |
|
||||
| **显示名** | MariBank(新加坡) |
|
||||
| **版本** | 3.2.2(versionCode **30220**) |
|
||||
| **对比 PH 版** | `ph.seabank.seabank` · v3.22.0 (32200) |
|
||||
| **API 域名** | `https://api.maribank.com.sg`(staging: `api.staging.maribank.com.sg`) |
|
||||
| **Application** | `com.shopee.bke.digitalbank.BkeApplication`(与 PH **相同**) |
|
||||
|
||||
本地 APK:
|
||||
|
||||
```
|
||||
reverse/apks/maribank_sg_base.apk
|
||||
reverse/apks/maribank_sg_arm64.apk → SO 在 reverse/extracted/native/
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 2. 截图现象(你当前遇到的)
|
||||
|
||||
启动后出现 **两层拦截**:
|
||||
|
||||
| 现象 | 类型 | 说明 |
|
||||
|------|------|------|
|
||||
| 全屏 **「ADB/Wireless ADB Detected」** | 环境检测页 | 文案 key:`bke_title_adb_wirelessadb_control`、`bke_btn_turn_off_adb_wireless_adb` |
|
||||
| Toast **「Does not support root device」** | Root 检测 | SHPSSDK / SafeMode 典型提示 |
|
||||
|
||||
**含义**:
|
||||
|
||||
1. **ADB 检测** 与 **Root 检测** 是 **独立项**——新加坡版在 PH 版基础上 **明显加强了 USB/无线调试检测**。
|
||||
2. 状态栏 **VPN 小钥匙** 可能额外触发 `RISK_*` 或网络风控(需 logcat 确认)。
|
||||
3. 当前 **PH 版 Xposed Hook 未作用到 SG 包名**(只 Hook `ph.seabank.seabank`),所以 SG 版 **完全未 bypass**。
|
||||
|
||||
**临时验证(无 Hook)**:关闭 **USB 调试 + 无线调试** 后冷启动,可确认 ADB 页是否消失;Root Toast 仍会存在。
|
||||
|
||||
---
|
||||
|
||||
## 3. 技术栈对比(SG vs PH)
|
||||
|
||||
| 组件 | SG 3.2.2 | PH 3.22.0 | 结论 |
|
||||
|------|----------|-----------|------|
|
||||
| Shopee BKE | ✅ | ✅ | 同框架 |
|
||||
| `BkeApplication` | ✅ | ✅ | Hook 时机相同(`attachBaseContext` 后) |
|
||||
| SafeMode | `com.shopee.bke.lib.safemode.b` 等 | 相同 | 可复用 boolean Hook |
|
||||
| `SafeModeRecoverActivity` | ✅ | ✅ | Root 弹窗/恢复页 |
|
||||
| SHPSSDK Bank | `com.shopee.shpssdkbank.SHPSSDK` | 相同 | 可复用 riskToken / requestDefense 链 |
|
||||
| Native SO | `libshpssdk_bank.so`、`libsdkutils.so`、`libbkutils.so` | 相同 | SG 额外有 **`libshpssdk.so`** |
|
||||
| 字符串解密 | `uvuwwuvwv.uvwwuuvvw` | 相同 | 混淆包名可能不同 |
|
||||
|
||||
**结论**:SG 与 PH 是 **同一套 Shopee 银行 SDK**,PH 上已写的 Hook **大部分可迁移**,需改 **包名** 并 **补充 ADB 风控**。
|
||||
|
||||
---
|
||||
|
||||
## 4. 新加坡版新增:ADB / 无线调试检测
|
||||
|
||||
### 4.1 SHPSSDK 风险常量(DEX 内)
|
||||
|
||||
```
|
||||
RISK_USB_ADB ← USB 调试
|
||||
RISK_WIFI_ADB ← 无线调试
|
||||
RISK_ADB
|
||||
RISK_ROOT
|
||||
RISK_HOOK
|
||||
RISK_DEBUG
|
||||
RISK_DEVELOPER_MODE
|
||||
RISK_EMULATOR
|
||||
...
|
||||
```
|
||||
|
||||
与截图中 **ADB 拦截页 + Root Toast** 对应。
|
||||
|
||||
### 4.2 UI 字符串(资源 key)
|
||||
|
||||
| Key | 用途 |
|
||||
|-----|------|
|
||||
| `bke_title_adb_wirelessadb_control` | 标题「ADB/Wireless ADB Detected」 |
|
||||
| `bke_btn_turn_off_adb_wireless_adb` | 按钮「Turn Off ADB/Wireless ADB」 |
|
||||
| `bke_desc_explain_detect_adb_1/2` | 说明文案 |
|
||||
| `bke_desc_safeguard_bank_app_from_adb_wirelessadb_1/2` | 安全说明 |
|
||||
| `AdbDetected` / `WifiAdbDetected` | RN / 业务路由标识 |
|
||||
|
||||
### 4.3 检测思路(推断)
|
||||
|
||||
1. **Settings.Global** / `adb_enabled`、无线调试相关属性
|
||||
2. SHPSSDK `getRiskSync` → 命中 `RISK_USB_ADB` / `RISK_WIFI_ADB`
|
||||
3. 进入 **ADB 专用拦截 UI**(非仅 SafeModeRecoverActivity)
|
||||
4. Root 仍走 `RISK_ROOT` → Toast「Does not support root device」
|
||||
|
||||
---
|
||||
|
||||
## 5. API 与登录(SG)
|
||||
|
||||
PH 实测重点为 `POST /uapi/v2/register`;SG DEX 内可见:
|
||||
|
||||
| 类型 | 路径示例 |
|
||||
|------|----------|
|
||||
| 登录 | `/v3/login`、`/v4/login`、`/v2/login/bke/linkage` |
|
||||
| 注册 | `/v2/register` |
|
||||
| 登录前 | `/v1/list/latest-notice/pre-login` |
|
||||
| 人脸 | `/v3/login/facial/verification` |
|
||||
| DFP | `/dfp/`(与 PH 同类) |
|
||||
| 通用 uapi | `/uapi/`(47 处引用) |
|
||||
|
||||
**Host**:`https://api.maribank.com.sg`(非 PH 的 `api.seabank.ph`)。
|
||||
|
||||
---
|
||||
|
||||
## 6. Native 库(arm64 split)
|
||||
|
||||
已从 `maribank_sg_arm64.apk` 解出至 `reverse/extracted/native/`,与风控相关:
|
||||
|
||||
| SO | 大小(约) | 作用 |
|
||||
|----|-----------|------|
|
||||
| `libshpssdk_bank.so` | 8.5 MB | SHPSSDK 银行风控、riskToken |
|
||||
| `libshpssdk.so` | 6.3 MB | **SG 额外**(PH 侧以 bank 为主) |
|
||||
| `libsdkutils.so` | 789 KB | 注册/body 加密 |
|
||||
| `libbkutils.so` | 102 KB | JNI 工具 |
|
||||
| `libmemory_security.so` | 3.8 MB | 内存/安全相关 |
|
||||
|
||||
---
|
||||
|
||||
## 7. 与现有 Xposed 模块的关系
|
||||
|
||||
当前 `MariBankRootBypassHook` / `MariBankShpsNativeHook` **仅绑定**:
|
||||
|
||||
```java
|
||||
public static final String PACKAGE = "ph.seabank.seabank";
|
||||
```
|
||||
|
||||
**SG 包名未纳入**,因此截图中的拦截 **预期行为**。
|
||||
|
||||
### 7.1 可复用(改包名即可试)
|
||||
|
||||
- SafeMode boolean Hook(`safemode.b` 等)
|
||||
- `Process.killProcess` / `finishAffinity` 反自杀
|
||||
- `/proc/self/maps` 过滤、`SystemProperties` 伪装
|
||||
- SHPSSDK `getRiskSync` 清空、`getRiskToken` 净化
|
||||
- OkHttp 出站 riskToken 净化
|
||||
|
||||
**已实现(2026-07-06)**:`MariBankRootBypassHook` 已支持 `sg.com.maribankmobile.digitalbank`,含 ADB Settings 伪装、ADB 全屏页 finish、Root/ADB Toast 拦截。
|
||||
|
||||
### 7.2 SG 专用(已部分实现)
|
||||
|
||||
| 项 | 状态 |
|
||||
|----|------|
|
||||
| **包名** | ✅ `MainHook` + `arrays.xml` |
|
||||
| **ADB 风险** | ✅ `Settings.Global/Secure` adb 键 → 0;`init.svc.adbd` → stopped |
|
||||
| **ADB 拦截页** | ✅ `Activity.onResume` 检测 ADB 文案后 `finish()` |
|
||||
| **Root Toast** | ✅ 「Does not support root device」 |
|
||||
|
||||
### 7.3 不建议照搬 PH 服务端结论
|
||||
|
||||
PH 的 **4067012** 是 **菲律宾服务端** 结论;SG 需单独测 `api.maribank.com.sg`。
|
||||
|
||||
---
|
||||
|
||||
## 8. 逆向脚本
|
||||
|
||||
```powershell
|
||||
# 已从手机 pull APK 后可本地扫描
|
||||
python reverse/scripts/scan_maribank_sg.py
|
||||
python reverse/scripts/find_sg_adb_strings.py
|
||||
python reverse/scripts/find_sg_adb_classes.py
|
||||
python reverse/scripts/list_safemode.py reverse/apks/maribank_sg_base.apk
|
||||
```
|
||||
|
||||
从手机 pull(已执行过):
|
||||
|
||||
```powershell
|
||||
adb shell pm path sg.com.maribankmobile.digitalbank
|
||||
adb pull <base.apk> reverse/apks/maribank_sg_base.apk
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 9. 建议下一步(2026-07-06 更新)
|
||||
|
||||
1. ~~LSPosed 增加 SG 包名~~ ✅ 已完成
|
||||
2. ~~扩展 ADB bypass~~ ✅ 已完成
|
||||
3. **SG**:diff PH/SG register 明文;修复 ProcessBuilder 异常;仍 3100012 则试干净机
|
||||
4. **PH**:走完 OTP → 开户全流程,确认稳定性
|
||||
5. logcat:`MariBankEncrypt in0 byte`、`3100012`、`OTP_SMS`
|
||||
|
||||
---
|
||||
|
||||
## 10. 实测状态(2026-07-06)
|
||||
|
||||
| 包 | 注册 API | 结果 |
|
||||
|----|----------|------|
|
||||
| `ph.seabank.seabank` | `api.seabank.ph/uapi/v2/register` | ✅ **code=0 → OTP** |
|
||||
| `sg.com.maribankmobile.digitalbank` | `api.maribank.com.sg/uapi/v2/register` | ❌ **3100012** |
|
||||
|
||||
完整说明:[`MariBank_2026-07-06_菲律宾突破.md`](MariBank_2026-07-06_菲律宾突破.md)
|
||||
|
||||
---
|
||||
|
||||
## 11. 相关文档
|
||||
|
||||
| 文档 | 说明 |
|
||||
|------|------|
|
||||
| [`MariBank_2026-07-06_菲律宾突破.md`](MariBank_2026-07-06_菲律宾突破.md) | **PH OTP 突破 + SG 现状 + 方案 B** |
|
||||
| [`MariBank实现说明.md`](MariBank实现说明.md) | PH Hook 实现与问题清单 |
|
||||
| [`工作日志_2026-07-03.md`](工作日志_2026-07-03.md) | PH 版 7/3 工作记录 |
|
||||
|
||||
---
|
||||
|
||||
*记录日期:2026-07-06 · 最后更新:菲律宾 OTP 突破*
|
||||
215
docs/MariBank风控与载荷说明.md
Normal file
215
docs/MariBank风控与载荷说明.md
Normal file
@@ -0,0 +1,215 @@
|
||||
# MariBank 风控与注册载荷说明
|
||||
|
||||
> 客户端检测分层、register 请求字段含义、菲律宾突破原因、USB 调试与 Hook 关系。
|
||||
> 关联:[`MariBank_2026-07-06_菲律宾突破.md`](MariBank_2026-07-06_菲律宾突破.md) · [`MariBank实现说明.md`](MariBank实现说明.md) · [`手机操作手册.md`](手机操作手册.md)
|
||||
|
||||
---
|
||||
|
||||
## 1. 风控两层模型
|
||||
|
||||
| 层级 | 谁在做 | 失败表现 | bypass 方式 |
|
||||
|------|--------|----------|-------------|
|
||||
| **客户端本地** | SafeMode、SHPSSDK、SG ADB 页 | 弹窗、全屏拦截、自杀 | Xposed boolean / Settings / finish Activity |
|
||||
| **服务端** | `api.seabank.ph` / `api.maribank.com.sg` | 4067012 / 3100012 | 让出站 attestation「够干净」+ 区域策略 |
|
||||
|
||||
**DFP `code=0` 只表示上报收到,不等于注册会通过。**
|
||||
|
||||
干净机对照(25078RA3EY):**开 USB 调试 → SG 本地 ADB 页;关调试 → SG OTP 可过**。说明本地检测与服务端决策 **相互独立**。
|
||||
|
||||
---
|
||||
|
||||
## 2. 注册请求载荷结构(App 发出)
|
||||
|
||||
加密前 JSON(`MariBankEncrypt` / `uvwuvwuv.uvwvuww` 入口)典型结构:
|
||||
|
||||
```json
|
||||
{
|
||||
"cyCode": "63",
|
||||
"phone": "<RSA 加密>",
|
||||
"scene": "REGISTRATION",
|
||||
"step": "BE",
|
||||
"rdVerifyInfo": {
|
||||
"bioStatus": 0,
|
||||
"data": "<SHPSSDK native attestation 密文>",
|
||||
"dataKey": "<attestation 密钥>",
|
||||
"deviceFingerprint": "段1|段2|段3|00|0",
|
||||
"fvInfo": {},
|
||||
"afExtInfo": {
|
||||
"modeInCall": "N",
|
||||
"modeInCommunication": "N",
|
||||
"modeCallScreening": "N"
|
||||
},
|
||||
"publicKeyAuthen": "pk2",
|
||||
"random": "...",
|
||||
"softTokenActivated": false
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
流程:**App 本地采集 → 拼 JSON → native 加密 → POST `/uapi/v2/register`**
|
||||
|
||||
---
|
||||
|
||||
## 3. 字段说明
|
||||
|
||||
### 3.1 `deviceFingerprint`
|
||||
|
||||
pipe 分隔字符串,示例:
|
||||
|
||||
```text
|
||||
jrKyNF/Fx4gcnzVpf1u9bw==|WJMksio9SaKKuyk1KMSilUGivdF+...|TXeh8FyEf/8qHdAS|00|0
|
||||
↑ Base64 段1 ↑ Base64 段2(设备哈希) ↑ 短码 ↑ 风险码|标志
|
||||
```
|
||||
|
||||
| 部分 | 含义 | Hook 能否改 |
|
||||
|------|------|-------------|
|
||||
| 前两段 Base64 | 设备 / 环境哈希,服务端可索引黑名单 | 换 serial/android_id 后 **重新生成** |
|
||||
| 第三段 | 短码 | 随 SDK 变 |
|
||||
| 最后 `\|xx\|y` | 风险摘要(如 Root+Hook `\|09\|1`) | ✅ 已净化为 `\|00\|0` |
|
||||
|
||||
**只改尾部不够**:服务端还验 `data`/`dataKey` 解密内容。
|
||||
|
||||
### 3.2 `data` / `dataKey`
|
||||
|
||||
- 由 **`libshpssdk_bank.so` native** 生成并签名
|
||||
- 内含 Root / Hook / 调试等 attestation,**Java 层改 JSON 字段无法重写密文**
|
||||
- SG 3100012 时,多半此层或设备黑名单未过;PH 7/6 成功时服务端 **接受了** 当前密文
|
||||
|
||||
### 3.3 `afExtInfo`(银行 App 上报,非 PC 添加)
|
||||
|
||||
```json
|
||||
"afExtInfo": {
|
||||
"modeInCall": "N",
|
||||
"modeInCommunication": "N",
|
||||
"modeCallScreening": "N"
|
||||
}
|
||||
```
|
||||
|
||||
| 字段 | 推测含义 | `"N"` |
|
||||
|------|----------|-------|
|
||||
| `modeInCall` | 是否正在通话 | No |
|
||||
| `modeInCommunication` | 是否通信/音频占用 | No |
|
||||
| `modeCallScreening` | 来电筛选等相关状态 | No |
|
||||
|
||||
- **来源**:App / SDK 读系统状态写入 `rdVerifyInfo`
|
||||
- **去向**:随 register 加密后发给服务端
|
||||
- **当前模块**:**未专门修改** 这三项(原样上报)
|
||||
- **用途**:反欺诈辅助信号,**不是** USB 调试开关
|
||||
|
||||
### 3.4 其他常见字段
|
||||
|
||||
| 字段 | 说明 |
|
||||
|------|------|
|
||||
| `cyCode` | 国家码:PH=`63`,SG=`65` |
|
||||
| `step` | `BE` 首次注册 → 成功后可到 `BSO`(OTP) |
|
||||
| `action` | `OTP_SMS_TRIGGER` 触发短信验证码 |
|
||||
| `bioStatus` | 生物识别状态,注册时多为 `0` |
|
||||
|
||||
---
|
||||
|
||||
## 4. 为何 USB 调试开着仍能发 OTP(菲律宾实测)
|
||||
|
||||
### 4.1 两个「USB 调试」不是一回事
|
||||
|
||||
| | PC 侧 adb | App 内部读到的值 |
|
||||
|--|-----------|------------------|
|
||||
| 你开 USB 调试 | ✅ 能 `adb shell` | 被 Hook **伪装为关闭** |
|
||||
|
||||
### 4.2 模块已做的 ADB bypass(`MariBankRootBypassHook`)
|
||||
|
||||
**Java Settings:**
|
||||
|
||||
- `adb_enabled` / `adb_wifi_enabled` / `development_settings_enabled` → `0`
|
||||
|
||||
**系统属性(`MariBankShpsNativeHook`):**
|
||||
|
||||
- `init.svc.adbd` → `stopped`
|
||||
- `persist.sys.adb_enable` → `0`
|
||||
|
||||
**UI:**
|
||||
|
||||
- 全屏「ADB / Wireless ADB Detected」页 → `Activity.finish()`
|
||||
- 相关 Toast 拦截
|
||||
|
||||
因此:**PC 连着 adb,App 仍可能认为未开调试**,本地不拦、register 载荷也不带「adb 开」的自报字段。
|
||||
|
||||
### 4.3 与干净机对照
|
||||
|
||||
| 环境 | USB 调试 | 结果 |
|
||||
|------|----------|------|
|
||||
| 干净机(无 Hook) | 开 | 本地 ADB 页,进不了 OTP |
|
||||
| 干净机 | 关 | ✅ OTP |
|
||||
| Pixel 6 + LSPosed + Shamiko | **开** | ✅ PH OTP(Hook 伪装) |
|
||||
|
||||
### 4.4 注意
|
||||
|
||||
- native 仍可能用 Hook 未覆盖的路径读调试状态
|
||||
- **SG 更严**,开 adb 风险高于 PH
|
||||
- 文档仍建议测 SG 时 **关 USB 调试**
|
||||
|
||||
---
|
||||
|
||||
## 5. 菲律宾能发验证码的真实原因
|
||||
|
||||
### 5.1 能确定
|
||||
|
||||
- `api.seabank.ph` 返回 **`code=0`**,step 进入 **BSO**,**OTP_SMS_TRIGGER** 成功
|
||||
- 同一台机、同一套 Hook 下 **SG 仍 3100012** → 差异在 **服务端**,非「没风控」
|
||||
|
||||
### 5.2 7/3 失败 → 7/6 成功的变化
|
||||
|
||||
| 能力 | 7/3 | 7/6 |
|
||||
|------|-----|-----|
|
||||
| riskToken 尾部净化 | ✅ | ✅ |
|
||||
| 加密前 register 明文 Hook | ❌ | ✅ |
|
||||
| Attestation / 环境 Hook | 弱 | ✅ |
|
||||
| Shamiko 藏 Magisk | 无/未配 | ✅ |
|
||||
| 换 serial / android_id | 无 | ✅ |
|
||||
|
||||
**不是单一开关**,而是 **Shamiko + 新设备 ID + 加密前/采集链净化** 组合后,PH 服务端认为 attestation **可接受**。
|
||||
|
||||
### 5.3 高概率推断
|
||||
|
||||
1. **PH / SG 两套 API、两套规则** — 同一载荷 PH 过、SG 不过
|
||||
2. **PH 侧设备黑名单** — Pixel 6 在 SG 测多次,PH 可能未标记
|
||||
3. **7/3 的 4067012** — bypass 不完整,非「PH 永远不能 Root 注册」
|
||||
|
||||
### 5.4 无法无源码 100% 证实
|
||||
|
||||
- PH 后台具体哪条规则放行
|
||||
- `data` 解密后哪一位从拒变收
|
||||
|
||||
---
|
||||
|
||||
## 6. Magisk / LSPosed / Shamiko 分工
|
||||
|
||||
```
|
||||
Magisk(Root 权限)
|
||||
└── Zygisk
|
||||
├── LSPosed → 加载 xposed-module(改 Java 检测、抓加密前 JSON)
|
||||
└── Shamiko → 对银行进程隐藏 Magisk/LSPosed
|
||||
Magisk 模块 maribank_device_spoof → resetprop 换 serial 等
|
||||
```
|
||||
|
||||
| 组件 | 作用 |
|
||||
|------|------|
|
||||
| **Magisk** | Root |
|
||||
| **LSPosed** | 运行 Xposed 模块(与经典 Xposed 同 API,见 [`Hook指南.md` §0](Hook指南.md)) |
|
||||
| **Shamiko** | 进程内 Hide Root,改善 native attestation |
|
||||
| **Xposed 模块** | SafeMode / ADB / 加密前净化 |
|
||||
|
||||
---
|
||||
|
||||
## 7. 服务端可能校验项(反推)
|
||||
|
||||
| 校验项 | 说明 |
|
||||
|--------|------|
|
||||
| `rdVerifyInfo.data` / `dataKey` | native attestation 解密 |
|
||||
| `deviceFingerprint` 段 1/2 | 设备黑名单 |
|
||||
| DFP 历史画像 | 与 register 是否一致 |
|
||||
| 区域策略 | PH 松 / SG 严(实测) |
|
||||
| IP / 号码 / 频率 | 次要,非本次主因 |
|
||||
|
||||
---
|
||||
|
||||
*最后更新:2026-07-06*
|
||||
@@ -198,7 +198,7 @@ reverse/
|
||||
|
||||
- **44 个** 脚本内路径改为相对 `reverse/` 根(`apks/`、`extracted/`、`tmp/`、`output/`)。
|
||||
- Frida 日志输出改到 `reverse/logs/frida/`。
|
||||
- 更新 `.gitignore`、`docs/BANK_REVERSE.md`、`pull_split_apk.ps1`、`start-mari-trace.ps1`。
|
||||
- 更新 `.gitignore`、`docs/银行逆向.md`、`pull_split_apk.ps1`、`start-mari-trace.ps1`。
|
||||
- `apk_extract/` 迁入 `extracted/apk_extract/`;`seabank.zip` 迁入 `apks/`。
|
||||
|
||||
---
|
||||
@@ -223,10 +223,13 @@ reverse/
|
||||
|
||||
| 文档 / 路径 | 说明 |
|
||||
| ---------------------------------- | ----------------------------------- |
|
||||
| `docs/MARIBANK_IMPLEMENTATION.md` | **MariBank 实现细节与问题记录(专文)** |
|
||||
| `docs/BANK_REVERSE.md` | 澳大利亚三家银行 Hook(Up / Suncorp / ubank) |
|
||||
| `docs/HOOK_GUIDE.md` | 通用 Hook 架构与扩展 |
|
||||
| `docs/CHANGELOG.md` | 主 App / TG Hook 版本历史 |
|
||||
| `docs/MariBank实现说明.md` | **MariBank 实现细节与问题记录(专文)** |
|
||||
| `docs/MariBank_2026-07-06_菲律宾突破.md` | PH OTP 突破 + SG 现状 |
|
||||
| `docs/MariBank风控与载荷说明.md` | register 字段、afExtInfo、USB 调试 |
|
||||
| `docs/手机操作手册.md` | Root 机部署与日常操作 |
|
||||
| `docs/银行逆向.md` | 澳大利亚三家银行 Hook(Up / Suncorp / ubank) |
|
||||
| `docs/Hook指南.md` | 通用 Hook 架构、Xposed/LSPosed、扩展 |
|
||||
| `docs/更新说明.md` | 主 App / TG Hook 版本历史 |
|
||||
| `reverse/README.md` | 逆向工作区目录说明 |
|
||||
| `reverse/frida/jni_targets.md` | JNI Hook 目标备忘 |
|
||||
| `xposed-module/.../MariBank*.java` | MariBank bypass 实现 |
|
||||
156
docs/手机操作手册.md
Normal file
156
docs/手机操作手册.md
Normal file
@@ -0,0 +1,156 @@
|
||||
# 手机操作手册
|
||||
|
||||
> 在 Root 手机上部署 **notiMessage** 主 App + **Xposed 模块**,以及 **MariBank / SeaBank** bypass 的日常步骤。
|
||||
> 关联:[`Hook指南.md`](Hook指南.md) · [`MariBank_2026-07-06_菲律宾突破.md`](MariBank_2026-07-06_菲律宾突破.md) · [`MariBank风控与载荷说明.md`](MariBank风控与载荷说明.md)
|
||||
|
||||
---
|
||||
|
||||
## 1. 手机前置条件(一次性)
|
||||
|
||||
| 步骤 | 操作 |
|
||||
|------|------|
|
||||
| 1 | 刷 **Magisk**,Magisk 设置里开启 **Zygisk** |
|
||||
| 2 | 安装 **LSPosed**(Magisk 模块或 Manager APK) |
|
||||
| 3 | 安装 **Shamiko**(银行 App **强烈建议**) |
|
||||
| 4 | Magisk → **配置排除列表** → 开启 |
|
||||
| 5 | 排除列表勾选目标银行 **全部子进程**(PH / SG 包名见下) |
|
||||
| 6 | **不要** 开启「强制启用排除列表」(Shamiko 要求 Enforce = OFF) |
|
||||
| 7 | (可选)安装 Magisk 模块 `maribank-device-spoof` 持久换 serial / android_id |
|
||||
|
||||
### 目标包名
|
||||
|
||||
| App | 包名 |
|
||||
|-----|------|
|
||||
| 菲律宾 SeaBank | `ph.seabank.seabank` |
|
||||
| 新加坡 MariBank | `sg.com.maribankmobile.digitalbank` |
|
||||
| notiMessage 主 App | `com.miraclegarden.smsmessage` |
|
||||
| Xposed 模块 | `com.miraclegarden.smsmessage.xposed` |
|
||||
| Telegram(抓消息) | `org.telegram.messenger` 或 `org.telegram.messenger.web` |
|
||||
|
||||
---
|
||||
|
||||
## 2. PC 安装 / 更新(USB 连手机)
|
||||
|
||||
### 2.1 一键全套(推荐)
|
||||
|
||||
```powershell
|
||||
cd C:\Users\Administrator\Desktop\notiMessage
|
||||
.\scripts\install-full.ps1
|
||||
```
|
||||
|
||||
自动完成:编译 → 安装双 APK → 配置 LSPosed 作用域 → 电池白名单 → 通知监听授权等。
|
||||
|
||||
### 2.2 仅编译安装 APK
|
||||
|
||||
```powershell
|
||||
.\scripts\build-debug.ps1
|
||||
.\scripts\install-debug.ps1
|
||||
```
|
||||
|
||||
### 2.3 MariBank 测前收尾
|
||||
|
||||
```powershell
|
||||
.\scripts\maribank-scheme-b-finish.ps1
|
||||
```
|
||||
|
||||
作用:确认 Magisk 模块、写入 LSPosed 作用域、关 USB 调试(可选)、`pm clear` 银行 App。
|
||||
|
||||
换设备 ID:
|
||||
|
||||
```powershell
|
||||
.\scripts\maribank-spoof-device.ps1 -InstallModule # 持久模块
|
||||
.\scripts\maribank-spoof-device.ps1 -ClearMariBank # 一次性 resetprop + 清数据
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 3. 手机上 LSPosed 必做步骤
|
||||
|
||||
**每次新装或更新 Xposed 模块 APK 后:**
|
||||
|
||||
1. 打开 **LSPosed**
|
||||
2. 找到模块 **notiMessage Xposed** → **启用**
|
||||
3. 进入 **作用域**,勾选需要的 App(见 §1 包名表)
|
||||
4. 对 **每个已勾选 App** 执行 **软重启**(或整机重启)
|
||||
|
||||
未软重启时 Hook **不会** 注入目标 App。
|
||||
|
||||
---
|
||||
|
||||
## 4. 日常使用
|
||||
|
||||
### 4.1 菲律宾 SeaBank 注册(当前可 OTP)
|
||||
|
||||
1. 确认 LSPosed 已启用且作用域含 `ph.seabank.seabank`
|
||||
2. (建议)`pm clear ph.seabank.seabank` 或跑 `maribank-scheme-b-finish.ps1`
|
||||
3. 打开 App → **Sign up** → 输入菲律宾手机号 → **Next**
|
||||
4. 等待 OTP 短信
|
||||
|
||||
> **说明**:实测 **USB 调试可保持开启** 仍能 OTP,因 Xposed 对 App 伪装 adb 状态(详见 [`MariBank风控与载荷说明.md` §4](MariBank风控与载荷说明.md))。测 SG 或求稳时仍建议关调试。
|
||||
|
||||
### 4.2 新加坡 MariBank
|
||||
|
||||
流程同上,包名为 `sg.com.maribankmobile.digitalbank`。当前仍可能 **3100012**,见 [`MariBank_2026-07-06_菲律宾突破.md`](MariBank_2026-07-06_菲律宾突破.md)。
|
||||
|
||||
### 4.3 notiMessage 抓 Telegram
|
||||
|
||||
1. 打开 **notiMessage** → **开始监听** → 授予通知使用权
|
||||
2. LSPosed 作用域勾选 Telegram + 主 App
|
||||
3. PC 调试台(可选):`.\scripts\start-debug-server.ps1`(需 `adb reverse tcp:8765 tcp:8765`)
|
||||
|
||||
---
|
||||
|
||||
## 5. 抓 log(PC)
|
||||
|
||||
```powershell
|
||||
$adb = "C:\Users\Administrator\AppData\Local\Android\Sdk\platform-tools\adb.exe"
|
||||
|
||||
& $adb logcat -c
|
||||
# 手机操作:Sign up → Next
|
||||
|
||||
& $adb logcat -d | Select-String "MariBankEncrypt in0 byte\[1|MariBankRoot HTTP.*register|3100012|4067012|OTP_SMS"
|
||||
```
|
||||
|
||||
验证伪装 ID:
|
||||
|
||||
```powershell
|
||||
& $adb shell su -c "getprop ro.serialno; settings get secure android_id"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 6. 换机 / 新机迁移
|
||||
|
||||
1. 新机 Root + Magisk + Zygisk + LSPosed + Shamiko
|
||||
2. PC 执行 `install-full.ps1`
|
||||
3. LSPosed 启用模块 + 作用域 + 软重启
|
||||
4. 安装 `maribank-device-spoof` → 重启 → `maribank-scheme-b-finish.ps1`
|
||||
5. DenyList 重新勾选银行 App
|
||||
|
||||
---
|
||||
|
||||
## 7. 常见问题
|
||||
|
||||
| 现象 | 处理 |
|
||||
|------|------|
|
||||
| 银行 App 白屏 | LSPosed 软重启;勿改 Hook 加载时机(见实现说明) |
|
||||
| Root / ADB 弹窗 | 确认模块启用 + 作用域已勾银行 App |
|
||||
| adb 连不上 | 开发者选项重新开 **USB 调试**,解锁点允许 |
|
||||
| 菲律宾又 4067012 | `pm clear ph.seabank.seabank`,必要时重跑 spoof |
|
||||
| Hook 不生效 | LSPosed **软重启**目标 App,不是只杀进程 |
|
||||
| 收尾脚本卡住 | adb 断开;先开 USB 调试连 PC,跑完脚本再关 |
|
||||
|
||||
---
|
||||
|
||||
## 8. 最短路径速查
|
||||
|
||||
```
|
||||
PC: install-full.ps1
|
||||
手机: LSPosed 启用 → 勾选 App → 软重启
|
||||
银行: maribank-scheme-b-finish.ps1 → Sign up → Next
|
||||
抓包: logcat -c → Next → logcat -d | Select-String register
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
*最后更新:2026-07-06*
|
||||
@@ -1,5 +1,19 @@
|
||||
# 更新说明
|
||||
|
||||
## 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 后台时丢失消息
|
||||
@@ -75,7 +89,7 @@ adb logcat | findstr /i "HookMessageReceiver DebugForwarder NotificationService
|
||||
|
||||
### 文档
|
||||
|
||||
- 架构与扩展:`docs/HOOK_GUIDE.md`
|
||||
- 架构与扩展:`docs/Hook指南.md`
|
||||
- Agent 说明:`AGENTS.md`
|
||||
|
||||
---
|
||||
Reference in New Issue
Block a user