菲律宾 SeaBank 在 Root+LSPosed+Shamiko 下 register 已通过并触发 OTP;扩展 SG 包名、加密前 Hook、Magisk 设备伪装脚本,并将 docs 整理为中文操作与风控说明。
4.1 KiB
4.1 KiB
澳大利亚银行 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.NotificationHandlerau.com.up.money.notifications.Util$NotificationTypeLio/invertase/firebase/messaging/ReactNativeFirebaseMessagingService(RN 层,已由 HandlerService 覆盖)
Suncorp Bank
| 路径 | 类 | 方法 |
|---|---|---|
| FCM 主路径 | au.com.suncorp.marketplace.base.application.SuncorpMessagingService |
onMessageReceived(RemoteMessage) |
| 前台兜底 | NotificationManager.notify |
extras 取 title/text |
相关:
FirebaseService.registerPushNotificationBankingPaymentNotification/incomingPaymentNotificationNotificationDetailsPresenter/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_notifyxposed_suncorp/xposed_suncorp_notifyxposed_ubank/xposed_ubank_notify
4. 数据提取逻辑
RemoteMessage(FCM)
getNotification().getTitle()/getBody()- 若 body 为空 → 拼接
getData()键值对
Notification(前台兜底)
从 extras 读取:
EXTRA_TITLE/EXTRA_TEXTEXTRA_BIG_TEXTgcm.n.title/gcm.n.body
5. 安装与验证
powershell -ExecutionPolicy Bypass -File scripts\install-full.ps1
- notiMessage 应用列表 添加三家银行
- LSPosed 作用域勾选:银行 App + notiMessage + xposed 模块
- 强制停止银行 App 后重开
- 测试:
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. 复现逆向
$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