安裝IDA調試服務: adb push android_server /data/local/tmp
運行IDA調試服務:adb shell & cd /data/local/tmp & ./android_server (確保 adb是root權限下運行調試服務)
設置端口轉發: adb forward tcp:23846 tcp:23946
運行程序: adb shell am start -D -n com.ali.tg.testapp/com.ali.tg.testapp.MainActivity
IDA設置:
IDA附加進程:Debugger->Attach->Remote ARMLinux/Android debugger
Ctrl + F -> ali 選擇進程附加
在模塊視圖中搜索 libdvm.so
在libdvm.so中搜索 dvmDexFileOpenParth
雙擊函數調轉到位置下斷點
運行jdi調試服務:jdb -connect com.sun.jdi.SocketAttach:hostname=localhost,port=8700
在IDA中使之運行到斷點處,查看寄存器的值,R0對應着dex的內存地址,R1對應着dex文件大小
運行腳本dump文件:
static main(void) { auto fp, begin, end, dexbyte; fp = fopen("d:\\dump.dex", "wb"); //打開或創建一個文件 begin = R0; //dex基址 end = begin + R1; //dex基址 + dex文件大小 for ( dexbyte = begin; dexbyte < end;dexbyte ++ ) { fputc(Byte(dexbyte), fp); //按字節將其dump到本地文件中 } }