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

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

  • 相关阅读:
    习题2-4 求交错序列前N项和 (15分)
    015_Web WPI
    014_捆绑包与显示模式
    013_模型验证
    012_模型绑定
    011_URL和Ajax辅助器方法
    010_模板辅助器方法
    009_辅助器方法
    008_视图
    007_控制器可扩展性
  • 原文地址:https://www.cnblogs.com/lvcha/p/5730431.html
Copyright © 2011-2022 走看看