IDA遠程調試 在內存中dump Dex文件


1. 首先使用調試JNI_OnLoad函數的方法,先將apk以調試狀態掛起,使用IDA附加上去。

2. 然后在libdvm.so中的dvmDexFileOpenPartial函數上下一個斷點

3. 然后我們點擊繼續運行,程序就會在dvmDexFileOpenPartial()這個函數處暫停,R0寄存器指向的地址就是dex文件在內存中的地址,R1寄存器就是dex文件的大小

4. 然后我們就可以使用ida的script command去dump內存中的dex文件了。

static  main( void )
{
   auto fp, begin, end, dexbyte;
   fp =  fopen ( "C:\\dump.dex" "wb" );
   begin = r0;
   end = r0 + r1;
   for  ( dexbyte = begin; dexbyte < end; dexbyte ++ )
       fputc (Byte(dexbyte), fp);
}

 Dump完dex文件后,我們就可以用工具來查看了。

 當然這只是最簡單脫殼方法,很多高級殼會動態修改dex的結構體,比如將codeoffset指向內存中的其他地址,這樣的話你dump出來的dex文件其實是不完整的,因為代碼段保存在了內存中的其他位置。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM