“爱加密” 动态脱壳法
2016-02-19 14:57
363 查看
转:http://www.cnblogs.com/2014asm/p/4112116.html
测试环境为:
安卓2.3
IDA6.6
下面看具体操作步骤:
具体怎样用IDA动态调试我就不多说了,网上己经有很多文章了,下面直接进入正题。
1.准备好调式环境后 用IDA附加进程。
2.附加成功后按"G"键 跳到dvmDexFileOpenPartial函数与fopen函数与fgets函数去下好断点。
3.下好断点后我们来说说它的反调试吧,下面我给两张图片大家可能就会明白它的反调试是怎么一回事了。
在调试状态下查看进程 TracerPid 不为0
在非调试状态下查看进程 TracerPid 为0
上面TracerPid: 23131
不为0时表示跟踪当前进程的进程ID,如果是0,表示没有跟踪。
4.明白了反调试后就可以进下面脱壳步骤了 F9 运行 断在fopen
5.打开进程成功后使用fgets获得信息 当获得如下信息进我们将其修改为 0
修改为 0 后
6.我在测试时它检查了两次,都修改后就会来到这里。
7.这样就得到了解密后的DEX开始地址与大小,R0为存放DEX数据开始地址,R1为Dex大小,Dump出来。
8.写个简单的过idc脚本将其dump出来,开始地址加上dex大小就是结束地址了。
0x446DC4E4为开始地址加上大小后等于0x4472AFBC(结束地址)
auto fp, dexAddress;
fp = fopen("C:\\test.dex", "wb");
for ( dexAddress=0x446DC4E4; dexAddress < 0x4472AFBC; dexAddress++ )
fputc(Byte(dexAddress), fp);
9.使用idc脚本将其dump出来
运行完脚本后c盘就会出来明文的DEX了,到此脱壳完成。
重新打包时一定要删除AndroidManifest.xml文件中
android:name="com.shell.SuperApplication" 壳入口。
这样原始的dex文件就被dump出来了。
完.
样本及文档下载
http://yunpan.cn/cASwMkjaMwaTy (提取码:ce81)
测试环境为:
安卓2.3
IDA6.6
下面看具体操作步骤:
具体怎样用IDA动态调试我就不多说了,网上己经有很多文章了,下面直接进入正题。
1.准备好调式环境后 用IDA附加进程。
2.附加成功后按"G"键 跳到dvmDexFileOpenPartial函数与fopen函数与fgets函数去下好断点。
3.下好断点后我们来说说它的反调试吧,下面我给两张图片大家可能就会明白它的反调试是怎么一回事了。
在调试状态下查看进程 TracerPid 不为0
在非调试状态下查看进程 TracerPid 为0
上面TracerPid: 23131
不为0时表示跟踪当前进程的进程ID,如果是0,表示没有跟踪。
4.明白了反调试后就可以进下面脱壳步骤了 F9 运行 断在fopen
5.打开进程成功后使用fgets获得信息 当获得如下信息进我们将其修改为 0
修改为 0 后
6.我在测试时它检查了两次,都修改后就会来到这里。
7.这样就得到了解密后的DEX开始地址与大小,R0为存放DEX数据开始地址,R1为Dex大小,Dump出来。
8.写个简单的过idc脚本将其dump出来,开始地址加上dex大小就是结束地址了。
0x446DC4E4为开始地址加上大小后等于0x4472AFBC(结束地址)
auto fp, dexAddress;
fp = fopen("C:\\test.dex", "wb");
for ( dexAddress=0x446DC4E4; dexAddress < 0x4472AFBC; dexAddress++ )
fputc(Byte(dexAddress), fp);
9.使用idc脚本将其dump出来
运行完脚本后c盘就会出来明文的DEX了,到此脱壳完成。
重新打包时一定要删除AndroidManifest.xml文件中
android:name="com.shell.SuperApplication" 壳入口。
这样原始的dex文件就被dump出来了。
完.
样本及文档下载
http://yunpan.cn/cASwMkjaMwaTy (提取码:ce81)
相关文章推荐
- 如何查看已安装的CentOS版本信息
- WinCE 7.0 下如何获取全路径文件名的后缀?
- HTTP错误汇总(404、302、200……)
- 解决Android与服务器交互大容量数据问题
- Crash日志的分析基础
- HTML/CSS行内元素、块元素、空(void)元素、盒模型
- OpenSSL源码升级
- OC高效率52之尽量使用不可变对象
- 公网访问内网SVN
- WEBP
- 探索在onCreate()中开启工作线程更新UI,不报错的原因:
- android studio生成aar包并在其他工程引用aar包
- sqlite常见问题分析与总结
- 安卓反编译揭秘:伪加密APK文件被破坏
- 关于java和javascript交互中的日期处理问题汇总
- R语言中单变量的各种图形的绘制
- Android ViewHolder简洁写法及替代findViewById方法
- 算法学习--模式匹配
- 统计有效、空行、注解代码行数
- Apache benchmark测试工具