菲律宾 SeaBank 在 Root+LSPosed+Shamiko 下 register 已通过并触发 OTP;扩展 SG 包名、加密前 Hook、Magisk 设备伪装脚本,并将 docs 整理为中文操作与风控说明。
7.3 KiB
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 典型提示 |
含义:
- ADB 检测 与 Root 检测 是 独立项——新加坡版在 PH 版基础上 明显加强了 USB/无线调试检测。
- 状态栏 VPN 小钥匙 可能额外触发
RISK_*或网络风控(需 logcat 确认)。 - 当前 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 检测思路(推断)
- Settings.Global /
adb_enabled、无线调试相关属性 - SHPSSDK
getRiskSync→ 命中RISK_USB_ADB/RISK_WIFI_ADB - 进入 ADB 专用拦截 UI(非仅 SafeModeRecoverActivity)
- 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 仅绑定:
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. 逆向脚本
# 已从手机 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(已执行过):
adb shell pm path sg.com.maribankmobile.digitalbank
adb pull <base.apk> reverse/apks/maribank_sg_base.apk
9. 建议下一步(2026-07-06 更新)
LSPosed 增加 SG 包名✅ 已完成扩展 ADB bypass✅ 已完成- SG:diff PH/SG register 明文;修复 ProcessBuilder 异常;仍 3100012 则试干净机
- PH:走完 OTP → 开户全流程,确认稳定性
- 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
11. 相关文档
| 文档 | 说明 |
|---|---|
MariBank_2026-07-06_菲律宾突破.md |
PH OTP 突破 + SG 现状 + 方案 B |
MariBank实现说明.md |
PH Hook 实现与问题清单 |
工作日志_2026-07-03.md |
PH 版 7/3 工作记录 |
记录日期:2026-07-06 · 最后更新:菲律宾 OTP 突破