IDEA 動(dòng)態(tài)調(diào)試Smali代碼

逆向方式有多種:靜態(tài)、動(dòng)態(tài), 工具也很多:JEB、IDA、IDEA/AndroidStudio,調(diào)試內(nèi)容:Smali、So庫(kù)。

本文介紹IDEA動(dòng)態(tài)調(diào)試Smali方式。

獲取Smali文件

Apktool反編譯獲取Smali文件,也可使用集成工具AndroidKiller反編譯apk。

  1. Apktool 在jar和apk所在目錄使用命令行 apktool d ***.apk -o Project,即反編譯到Project目錄。
  2. AndroidKiller 直接將apk拖進(jìn)主界面即可,反編譯后結(jié)構(gòu):
killer-project-dir.png

生成可調(diào)式APK

  1. AndroidManifest.xml中添加android:debuggable="true"
  2. 在入口Activity的onCreate方法開始處添加android.os.Debug.waitForDebugger(),
    對(duì)應(yīng)的smali代碼為:invoke-static {}, Landroid/os/Debug;->waitForDebugger()V
    onCreate.png
  3. 重新打包。
  • Apktool: b -d Project -o debug.apk
  • AndroidKiller: 菜單欄 Android -> 編譯
  1. 安裝生成apk。

IDEA 導(dǎo)入Project

  1. 導(dǎo)入反編譯項(xiàng)目:Import Project,選擇Project目錄后將反編譯文件導(dǎo)入到IDEA。
  2. 在目標(biāo)Smali文件打上斷點(diǎn)。


    breakpoint.png

IDEA的smalidea插件用0.0.3斷點(diǎn)進(jìn)不去,升級(jí)至0.0.5后調(diào)試成功。
smalidea下載地址


調(diào)試環(huán)境配置

  1. 運(yùn)行程序,手機(jī)會(huì)顯示白屏或等待調(diào)試界面。
  2. 打開DDMS,目錄\sdk\tools下運(yùn)行monitor.bat,DDMS出現(xiàn)程序待調(diào)試狀態(tài)。
    ** 紅色Debug表示此進(jìn)程正等待調(diào)試,15745為pid/進(jìn)程ID,8600為此進(jìn)程的遠(yuǎn)程機(jī)器調(diào)試端口號(hào),8700為通用備用端口號(hào)**。


    ddms.png
  3. 配置遠(yuǎn)程調(diào)試選項(xiàng),
    點(diǎn)擊菜單欄** Run ,選擇 Edit Configurations ,點(diǎn)擊 ** + ** 選擇 Remote **。

** 配置遠(yuǎn)程調(diào)試選項(xiàng) **

Host:localhost
Port:8600
調(diào)試模式:Attach
項(xiàng)目:<whole project> 或 Project

remote-debug.png

遠(yuǎn)程調(diào)試

點(diǎn)擊Debug開始遠(yuǎn)程調(diào)試。

debug-start.png

開始調(diào)試后,DDMS中Debug標(biāo)志變成綠色,表示已經(jīng)成功連接遠(yuǎn)程調(diào)試服務(wù)端。
Console中也有成功連接輸入Connected to the target VM, address: 'localhost:8600', transport: 'socket'

ddms-debuged.png

然后觸發(fā)斷點(diǎn)條件后,就會(huì)進(jìn)入斷點(diǎn)。


breakpoint-checkin.png

剩下的就跟平時(shí)開發(fā)斷點(diǎn)調(diào)試一樣。


相關(guān)推薦:
JEB動(dòng)態(tài)調(diào)試apk
AndroidStudio 動(dòng)態(tài)調(diào)試Smali代碼


參考:

使用IDEA動(dòng)態(tài)調(diào)試smali代碼

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容