Files
notiMessage/docs/银行逆向.md
mars 81119e0ff9 feat(maribank): PH 注册 OTP 突破、SG bypass 与中文文档
菲律宾 SeaBank 在 Root+LSPosed+Shamiko 下 register 已通过并触发 OTP;扩展 SG 包名、加密前 Hook、Magisk 设备伪装脚本,并将 docs 整理为中文操作与风控说明。
2026-07-06 14:01:49 +08:00

4.1 KiB
Raw Blame History

澳大利亚银行 App 逆向报告

从 Pixel 6 设备拉取 APK2026-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/ReactNativeFirebaseMessagingServiceRN 层,已由 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 pushNot 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. 数据提取逻辑

RemoteMessageFCM

  1. getNotification().getTitle() / getBody()
  2. 若 body 为空 → 拼接 getData() 键值对

Notification前台兜底

extras 读取:

  • EXTRA_TITLE / EXTRA_TEXT
  • EXTRA_BIG_TEXT
  • gcm.n.title / gcm.n.body

5. 安装与验证

powershell -ExecutionPolicy Bypass -File scripts\install-full.ps1
  1. notiMessage 应用列表 添加三家银行
  2. LSPosed 作用域勾选:银行 App + notiMessage + xposed 模块
  3. 强制停止银行 App 后重开
  4. 测试:
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.pyreverse/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