1. 程式人生 > >針對記憶體中完整的dex檔案的ida除錯脫殼思路

針對記憶體中完整的dex檔案的ida除錯脫殼思路

使用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 .