前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >“爱加密” 动态脱壳法

“爱加密” 动态脱壳法

作者头像
我是小三
发布2018-08-08 17:42:28
1.8K0
发布2018-08-08 17:42:28
举报
文章被收录于专栏:逆向与安全逆向与安全

测试环境为:

安卓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)

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2014-11-21 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档