博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
IDA远程调试 在内存中dump Dex文件
阅读量:6757 次
发布时间:2019-06-26

本文共 605 字,大约阅读时间需要 2 分钟。

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

转载于:https://www.cnblogs.com/shaoge/p/5425229.html

你可能感兴趣的文章
delphi 显示窗体系统目录 源码
查看>>
PowerDesigner 业务处理模型( BPM ) 说明
查看>>
Redis内存存储结构分析
查看>>
OCP终于考完了
查看>>
Cocos2D:滚动滚屏黑边问题
查看>>
Android 4.1最终版SDK和ADT Plugin全线发布
查看>>
jive论坛
查看>>
[Android问答] ListView如何加载远程图片?(附代码)
查看>>
k-means clustering - Wikipedia, the free encyclopedia
查看>>
三星S6D1121主控彩屏(240*320*18bit,262K)图形设备接口(GDI)实现
查看>>
head first java 01 ( 1 ~ 3 章 )
查看>>
Superhero.js – 构建大型 JavaScript 应用程序的最佳资源
查看>>
什么是UAT测试?
查看>>
FireDAC 下的 Sqlite [8] - 自定义函数
查看>>
Android 驱动测试程序H-M-S <2>
查看>>
Swift语言指南(七)--语言基础之布尔值和类型别名
查看>>
Hadoop 安装记录
查看>>
hdu 5206 Four Inages Strategy 判断是否是正方形
查看>>
Linq中使用Left Join
查看>>
HDFS Safemode问题
查看>>