針對記憶體中完整的dex檔案的ida除錯脫殼思路
阿新 • • 發佈:2018-12-06
使用IDA從記憶體中dump指定的dex
雖然自己編譯了一套能夠簡單夠脫殼的壞境,不過使用上總感覺比較重量級。
今天只想把APK中某個動態解密,載入的dex搞出來,用IDA輕快很多。
步驟1:
首先通過cat /proc/pid/maps檢視目標dex檔案所在的記憶體地址:
可以看到我們的起始地址是:5faa2000
結束地址是:5fb36000
後面的deleted表示dex檔案加入記憶體中,就被刪除了。
步驟2:
IDA除錯上目標程序上,然後執行如下指令碼,把這個記憶體區間的內容全部dump出來(沒加固時,dex的記憶體預設是連續的):
auto fp, begin, end, dexbyte;
fp = fopen("D:\\dump.dex", "wb");
begin = 0x5faa2000;
end = 0x5fb36000;
for ( dexbyte = begin; dexbyte < end; dexbyte ++ )
fputc(Byte(dexbyte), fp);
dump出來得到是一個odex檔案,通過下面的命令可以轉成對應的smali檔案:
java -jar baksmali.jar -x dump.odex -d .