健身房 APP 換廠商災難:從 JADX 逆向分析 QRCode 取得邏輯

紀錄一次因為不滿意健身房 APP 介面,進而使用 JADX 解包 APK,分析 WebView 網頁行為與 API,最終成功復現 QRCode 取得邏輯的逆向工程實戰。

起源:當健身房 APP 變成醜陋的 WebView

最近健身房 APP 更新變成另一家廠商,從原本的原生 APP 變成一個(主觀)醜醜的介面。

既然是 APP 那就嘗試拆看看新廠商的 APP 是怎麼做的吧。

工欲善其事:JADX 啟動!

之前有嘗試一些工具,發現 JADX 可以拆的蠻詳細的,所以這次也使用 JADX 拆解 APP。

  1. 下載 APP 我使用 apkcombo 載下來會是 xapk ,會把主程式和一些其他的資料打包再一起 本質是 zip
    1. 我們用 zip 打開看 遮掉的那個就是主要的 apk
zip 結構
  1. 使用 JADX 反編譯(?)
    1. 會得到下面這樣的結構
.
├── resources
│   ├── META-INF
│   │   └── ... (憑證與編譯中介資料)
│   ├── assets
│   │   └── ...
│   ├── kotlin
│   │   └── ... 
│   └── res
│       ├── drawable
│       ├── layout
│       ├── values
│       └── ... (其他 UI 資源檔,如 mipmap, anim 等)
└── sources
    ├── android
    │   └── ... (Android 系統底層 API)
    ├── androidx
    │   └── ... (Android Jetpack 官方擴充庫)
    ├── com
    │   ├── google
    │   │   ├── firebase
    │   │   │   └── ... (推播、分析與雲端服務)
    │   │   ├── zxing
    │   │   │   └── ... (條碼掃描核心)
    │   │   └── ...
    │   ├── journeyapps
    │   │   └── ... (掃碼 UI 相關)
    │   └── example
    │       └── myapp           <-- 【重點區】App 的真實商業邏輯
    │           ├── databinding
    │           └── service   
    ├── kotlin
    │   └── ... (Kotlin 語言標準庫)
    ├── kotlinx
    │   └── ... (Kotlin 協程 Coroutines 等擴充)
    └── ... (其他第三方開源依賴,如 javax, org 等)
  1. 請 AI 出來看
    1. Prompt : 分析反編譯的 APP 結構,取得 入場 QRCode 是怎麼產生的
    2. AI 會跟你說 這個 APP 就是一個 webview 主要網站是 XXX
    3. API 是哪幾隻 要怎麼復現行為

後來: 自己做一個 APP 小工具

Prompt: 根據 .... (剛剛的流程) 模擬流程 撰寫一個桌面小工具呈現進場 QRCode

純模擬 QRCode 取得的行為 放在桌面點一下就可以更新新的 QRCode,沒事不用再看到 webview app 了!

Subscribe to virgil246 Blog

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.
[email protected]
Subscribe