码迷,mamicode.com
首页 > 其他好文 > 详细

IDA远程调试 在内存中dump Dex文件

时间:2016-08-02 21:02:39      阅读:779      评论:0      收藏:0      [点我收藏+]

标签:

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文件其实是不完整的,因为代码段保存在了内存中的其他位置。

 

http://www.cnblogs.com/shaoge/p/5425229.html

IDA远程调试 在内存中dump Dex文件

标签:

原文地址:http://www.cnblogs.com/lvcha/p/5730431.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!