昨天我們閱讀混淆程式碼 來了解程式邏輯與行為來發現安全問題 可以知道類別方法變數的混淆 只要攻擊花時間分析去理解 還是可能找的出安全問題 有些開發者會取使用 library 去 混淆字串 讓他變得不可讀 增加分析時間 但攻擊者有可以透過網路 Search 是否有的寫好的Tool 來去解混淆 減少大量分析時間
以下會嘗試分析一個字串混淆 可以看到APK key 本身雖然硬編碼 但本身是被混淆
被混淆的字串 會在Runtime 時透過調用Deobfuuscator.getString方法 來解混淆使用
有趣的是開發者透過import library 並使用Deobfuscator 這個類別
import org.lsposed.lsparanoid.Deobfuscator$myapp$app;
可以上網尋一下 org.lsposed.lsparanoid
可以確定 這個專案名稱是LSParanoid
網路上有公開反混淆器 我們可以先嘗試利用他
這裡使用paranoid-deobfuscator 2.0.1 版本 (避免新版在處理APP 有多個getString 方法會遇到問題
wget https://github.com/giacomoferretti/paranoid-deobfuscator/archive/refs/tags/v2.0.1.zip
unzip v2.0.1.zip
cd paranoid-deobfuscator-2.0.1
python -m venv .venv
source .venv/bin/activate or .venv\Scripts\activate.bat (windows)
pip install "numpy==1.26.0"
解包 APK 檔案
apktool d myapp.apk
嘗試透過 paranoid_deobfuscator python 模組來解混淆
這樣就成功反混淆 拿到API Key 但並不是每次都有工具可以使用 明天會跟大家分享手動反混淆的方法 增加成功機率