IDA 偵錯¶
本章節將介紹如何使用 FIRERPA 及其相關功能與指令碼快速偵錯安卓應用。我們的示範環境為 Android 10,主機系統為 Ubuntu 22.04,已安裝 IDA 7.5 (Wine)、ADB、JDB、Python 等工具。建議您的 IDA 版本不低於 7.5,並安裝最新版本的 FIRERPA 服務端。

設定為可偵錯模式¶
如果您的系統已經處於偵錯模式,則無需執行此步驟。否則,請開啟 FIRERPA 遠端桌面,在終端機中輸入 setdebuggable。執行該命令後,您的手機將進行一次軟重啟,但不必擔心,大約兩分鐘後就會完全恢復正常。此時,您的手機已進入可偵錯模式。

安裝 IDA 偵錯服務¶
開始偵錯前,您還需要將 IDA 的安卓偵錯服務端上傳到裝置上。在 IDA 安裝目錄的 dbgsrv 資料夾下可以找到 android_server 和 android_server64。如果目標應用使用了 32 位元動態連結庫,請使用 android_server;否則請使用 android_server64。將所需的檔案拖曳上傳或透過 adb push 傳送到安卓裝置,並賦予可執行權限:
chmod 755 android_server*
賦予可執行權限後,需啟動 android_server 服務。您可以透過 adb(需要 root 權限)或遠端桌面終端機執行該可執行檔。對於 Android 10 及更高版本,需提前設定 IDA_LIBC_PATH 環境變數:
IDA_LIBC_PATH=/apex/com.android.runtime/lib64/bionic/libc.so ./android_server64 -kk
備註
如果偵錯目標是 32 位元應用,請將 IDA_LIBC_PATH 改為 /apex/com.android.runtime/lib/bionic/libc.so,並使用 32 位元的 android_server 偵錯服務。
轉發 IDA 偵錯服務¶
對於偵錯這類對即時性和效能要求較高的場景,建議使用 USB 連線。請確保裝置已透過 USB 連線至當前電腦並已完成 ADB 授權,然後執行以下命令:
adb forward tcp:23946 tcp:23946
備註
23946 是 IDA android_server 的預設監聽埠。如果您在啟動時修改了該埠,請轉發時指定實際埠號。
開始應用偵錯¶
我們已為您封裝了一個指令碼,它可以幫助您自動完成後續的大部分操作。您只需按照指令碼的輸出提示操作即可。您可以在專案的 tools 目錄下找到 ida.py 指令碼,使用以下命令執行:
python3 ida.py -d 192.168.0.2 -a com.android.settings

其中,-d 參數為裝置 IP,即執行 FIRERPA 服務的裝置 IP;-a 參數為目標應用的套件名稱。執行命令後,指令碼將提示您在 IDA 中將偵錯器附加到應用程序。



全部流程已就緒。請回到 ida.py 的命令列介面,按下 Enter 鍵,然後您就可以繼續偵錯了。