feat(maribank): PH 注册 OTP 突破、SG bypass 与中文文档
菲律宾 SeaBank 在 Root+LSPosed+Shamiko 下 register 已通过并触发 OTP;扩展 SG 包名、加密前 Hook、Magisk 设备伪装脚本,并将 docs 整理为中文操作与风控说明。
This commit is contained in:
134
docs/银行逆向.md
Normal file
134
docs/银行逆向.md
Normal file
@@ -0,0 +1,134 @@
|
||||
# 澳大利亚银行 App 逆向报告
|
||||
|
||||
从 Pixel 6 设备拉取 APK(2026-07-02),用 DEX 字符串扫描 + 类名分析确定 Hook 点。
|
||||
|
||||
APK 位置(本地,未入库):`reverse/apks/*-base.apk`
|
||||
|
||||
---
|
||||
|
||||
## 1. 包名与架构
|
||||
|
||||
| App | 包名 | 技术栈 | 推送方案 |
|
||||
|-----|------|--------|----------|
|
||||
| **Up** | `au.com.up.money` | React Native | 原生 `HandlerService` + RN Firebase |
|
||||
| **Suncorp** | `au.com.suncorp.marketplace` | Kotlin 原生 | `SuncorpMessagingService` (FCM) |
|
||||
| **ubank** | `au.com.bank86400` | Capacitor (Web) | MoEngage + Capacitor FCM 插件 |
|
||||
|
||||
---
|
||||
|
||||
## 2. Hook 点(已实现)
|
||||
|
||||
### Up Bank
|
||||
|
||||
| 路径 | 类 | 方法 |
|
||||
|------|-----|------|
|
||||
| **FCM 主路径** | `au.com.up.money.notifications.HandlerService` | `onMessageReceived(RemoteMessage)` |
|
||||
| **前台兜底** | `android.app.NotificationManager` | `notify(...)` |
|
||||
|
||||
相关类(DEX 中发现):
|
||||
|
||||
- `au.com.up.money.notifications.handlers.NotificationHandler`
|
||||
- `au.com.up.money.notifications.Util$NotificationType`
|
||||
- `Lio/invertase/firebase/messaging/ReactNativeFirebaseMessagingService`(RN 层,已由 HandlerService 覆盖)
|
||||
|
||||
### Suncorp Bank
|
||||
|
||||
| 路径 | 类 | 方法 |
|
||||
|------|-----|------|
|
||||
| **FCM 主路径** | `au.com.suncorp.marketplace.base.application.SuncorpMessagingService` | `onMessageReceived(RemoteMessage)` |
|
||||
| **前台兜底** | `NotificationManager.notify` | extras 取 title/text |
|
||||
|
||||
相关:
|
||||
|
||||
- `FirebaseService.registerPushNotification`
|
||||
- `BankingPaymentNotification` / `incomingPaymentNotification`
|
||||
- `NotificationDetailsPresenter` / `NotificationDetailsActivity`
|
||||
|
||||
### ubank
|
||||
|
||||
| 路径 | 类 | 方法 |
|
||||
|------|-----|------|
|
||||
| **MoEngage FCM** | `com.moengage.firebase.MoEFireBaseMessagingService` | `onMessageReceived(RemoteMessage)` |
|
||||
| **Capacitor FCM** | `io.capawesome.capacitorjs.plugins.firebase.messaging.MessagingService` | `onMessageReceived(RemoteMessage)` |
|
||||
| **前台兜底** | `NotificationManager.notify` | extras |
|
||||
|
||||
日志字符串:`onMessageReceived() : Will try to show push`、`Not a MoEngage Payload`
|
||||
|
||||
---
|
||||
|
||||
## 3. 源码位置(xposed-module)
|
||||
|
||||
| 文件 | 说明 |
|
||||
|------|------|
|
||||
| `hook/UpBankMessageHook.java` | Up 专用 |
|
||||
| `hook/SuncorpBankMessageHook.java` | Suncorp 专用 |
|
||||
| `hook/UbankMessageHook.java` | ubank 专用 |
|
||||
| `hook/BankHookHelper.java` | RemoteMessage / Notification 解析、去重 |
|
||||
| `hook/BankNotificationHook.java` | 三家共用的 notify 兜底 |
|
||||
|
||||
日志 source 标识:
|
||||
|
||||
- `xposed_up` / `xposed_up_notify`
|
||||
- `xposed_suncorp` / `xposed_suncorp_notify`
|
||||
- `xposed_ubank` / `xposed_ubank_notify`
|
||||
|
||||
---
|
||||
|
||||
## 4. 数据提取逻辑
|
||||
|
||||
### RemoteMessage(FCM)
|
||||
|
||||
1. `getNotification().getTitle()` / `getBody()`
|
||||
2. 若 body 为空 → 拼接 `getData()` 键值对
|
||||
|
||||
### Notification(前台兜底)
|
||||
|
||||
从 `extras` 读取:
|
||||
|
||||
- `EXTRA_TITLE` / `EXTRA_TEXT`
|
||||
- `EXTRA_BIG_TEXT`
|
||||
- `gcm.n.title` / `gcm.n.body`
|
||||
|
||||
---
|
||||
|
||||
## 5. 安装与验证
|
||||
|
||||
```powershell
|
||||
powershell -ExecutionPolicy Bypass -File scripts\install-full.ps1
|
||||
```
|
||||
|
||||
1. notiMessage **应用列表** 添加三家银行
|
||||
2. LSPosed 作用域勾选:**银行 App + notiMessage + xposed 模块**
|
||||
3. 强制停止银行 App 后重开
|
||||
4. 测试:
|
||||
|
||||
```powershell
|
||||
adb logcat | findstr /i "notiMessageHook/Bank notiMessageHook/Up notiMessageHook/Suncorp notiMessageHook/ubank HookMessageReceiver"
|
||||
```
|
||||
|
||||
| 场景 | 期望 |
|
||||
|------|------|
|
||||
| 银行 App **前台** 收到推送 | `[Hook/xposed_up]` 等 |
|
||||
| 银行 App **后台** 弹通知 | 通知通道 或 `xposed_*_notify` |
|
||||
|
||||
---
|
||||
|
||||
## 6. 限制与后续
|
||||
|
||||
- 银行可能 **不在通知里显示金额**(安全策略),Hook 也只能拿到 App 愿意展示的内容
|
||||
- ubank 非 MoEngage 载荷会走 Capacitor 路径,需实测哪条触发
|
||||
- 若 FCM 加密或仅静默同步,需再 Hook 业务层(如 `TransactionHistoryResponse`)——当前 DEX 未见稳定明文入库点
|
||||
- 逆向脚本:`reverse/scripts/scan_dex.py`、`reverse/scripts/scan_target.py`
|
||||
|
||||
---
|
||||
|
||||
## 7. 复现逆向
|
||||
|
||||
```powershell
|
||||
$adb = "$env:LOCALAPPDATA\Android\Sdk\platform-tools\adb.exe"
|
||||
# 拉 base.apk
|
||||
& $adb shell pm path au.com.up.money
|
||||
& $adb pull <path> reverse/apks/up-base.apk
|
||||
# 扫描
|
||||
python reverse/scripts/scan_dex.py reverse/extracted
|
||||
```
|
||||
Reference in New Issue
Block a user