乐易论坛-乐易网易语言培训教程火山PC视窗中文编程交流论坛

 找回密码
 立即注册

手机号登录

用手机号号登陆

微信登录

微信扫码,快速开始

QQ登录

用QQ账号登陆

办理VIP,定制软件,报名培训联系QQ[重磅]2024年实地培训高清培训目录火山PC版乐易模块使用教程
有了火山,易语言是否还有必要学习吗?易语言0基础入门课程火山PC视窗0基础入门课程
乐易论坛官方QQ群一览表易语言外挂0基础入门课程火山PC视窗火山HOOK入门课程
易语言误报处理课程QQ空间POST课程2022年火山PC易语言POST系列课程
Android逆向Jeb动态调试0基础课程QQ邮箱网页POST课程WeChat个微Hook实战课程
百日Js加密分析实战课程(无密下载)QQ群POST课程h5游戏WebSocket逆向视频
JavaScript加密特训课程易语言汇编快速入门课程破解实战系列课程
手游模拟器脚本0基础课程易语言加密防破解0基础入门课程广告位招租联系QQ1615457736
查看: 22585|回复: 9

[Android逆向] Xdex(百度版)脱壳工具基本原理

[复制链接]

[Android逆向] Xdex(百度版)脱壳工具基本原理

[复制链接]
已绑定手机
已实名认证
揰掵佲
等级头衔

等級:乐易运营组

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

积分成就
易币
贡献
主题
精华
金钱
积分
33610
注册时间
2014-8-2
最后登录
1970-1-1

勋章墙

2016-8-27 08:43:46 | 显示全部楼层 |阅读模式

据统计90%查看本帖的人,都已经注册本站了哦

您需要 登录 才可以下载或查看,没有账号?立即注册

×
标 题: 【原创】Xdex(百度版)脱壳工具基本原理
作 者: sherrydl
时 间: 2015-12-13,10:52:45
链 接:
游客,如果您要查看本帖隐藏内容请回复


学习移动安全快一年了,最近花了一些时间写了一个脱壳机(分百度版和通用版)。核心思想是:根据dalvik 获取dex各个数据段的方式,我也用同样的函数去获取,然后一步一步去恢复成一个合法的dex文件。基本思想很简单,也已有大牛实现过。
     这里先拿百度加固来举例说明,百度加固相对于其它厂商的加固,好像并没有在类加载的时候做什么事。其它厂商的加固有的会在类加载的时候执行静态函数,有的会HOOK一些类加载的中间函数,才去恢复真正的数据。对于这些加固,必须去主动加载类,然后去获取ClazzObject 数据结构,这里面的数据才可能真正是正确的,其余内存的dex大部分数据多半已经被抹掉成没用的。但是主动加载类又会有很多其它的问题,比如 类的初始化会去优化指令,dvmLinkClass函数中:

     上面这个函数在一些特殊情况下又会去修改ClazzObject 中virtualMethodCount 原本的值,还有的加固会改变AccessFlag的最高位,这些都会对最后脱壳产生影响。关于需要主动加载类这一块加固的脱壳,以后跟大家交流。
     下面还是回到百度加固的问题上来,由于百度加固并没有在类加载的时候做什么事,导致我们不需要去主动加载类,我们直接可以通过dalvik的的一些函数去获取所需要的数据,
在源码目录中:/dalvik/libdex/DexFile.h 和/dalvik/libdex/DexClass.h  ,这两个文件里基本包含了所有的dalvik去获取dex各个数据段的函数。如下图:

游客,如果您要查看本帖隐藏内容请回复

(部分函数截图)
      我们可以直接调用这些函数,或者去根据这些函数去获取内存中dex数据的方式,写出类似的代码去获取数据。这里比较重要的一点:因为是对dex每一块最小的数据段都进行了再次获取,所以需要对dex文件的格式有足够的了解,这样才能一步一步的恢复、重构成一个合法的dex文件,代码实现起来比较麻烦点的就是重写dex结构里的那些偏移。
      当然百度加固并没有这么简单,虽然没有在类加载的时候干点坑人的事,但是有以下几个需要解决的点。
1 .听说有负偏移。 实际上这里的负偏移的含义是由于dex的DexMethod结构的codeOff是u4类型,而它的值过大,再加上dex 在内存的baseaddr ,结果就溢出了,这样就造成的DexCode在内存的位置变成了baseaddr的上面去了,但是这种加固方案并木有对我这种脱壳方式有啥影响,对于静态分析的大神进行脱壳修复就有一点麻烦了。

2. onCreate001 函数指令执行时存在,执行后抹去。关于这点,目前一些通用脱壳的方式是改变脱壳点的位置,然后去获取抹去的指令。当onCreate001函数过多,这样做好像有点麻烦。后来多亏某位大神的提醒,采用java反射的方式,能够自动恢复所有onCreate001里的指令。经测试,的确可以
游客,如果您要查看本帖隐藏内容请回复

这里反射调用的d方法就是百度加固用来恢复指令的。它会用e方法去抹去指令。*转载请注明来自看雪论坛@PEdiy.com
回复

使用道具 举报

已绑定手机
已实名认证
艾鱼
等级头衔

等級:顶级Vip

Rank: 14Rank: 14Rank: 14Rank: 14

积分成就
易币
贡献
主题
精华
金钱
积分
2357
注册时间
2016-10-26
最后登录
1970-1-1

勋章墙

2016-12-29 00:22:05 | 显示全部楼层
太棒了,感谢楼主,Mrak一下
回复

使用道具 举报

已绑定手机
g1609091256
等级头衔

等級:编程学徒

Rank: 3Rank: 3

积分成就
易币
贡献
主题
精华
金钱
积分
446
注册时间
2017-10-19
最后登录
1970-1-1

勋章墙

2017-10-24 23:44:17 | 显示全部楼层
谢谢
回复

使用道具 举报

已绑定手机
q457595579
等级头衔

等級:顶级Vip

Rank: 14Rank: 14Rank: 14Rank: 14

积分成就
易币
贡献
主题
精华
金钱
积分
343
注册时间
2017-2-3
最后登录
1970-1-1

勋章墙

2017-11-1 23:42:52 | 显示全部楼层
RE: Xdex(百度版)脱壳工具基本原理 [修改]
回复

使用道具 举报

已绑定手机
sumith
等级头衔

等級:编程入门

Rank: 4

积分成就
易币
贡献
主题
精华
金钱
积分
612
注册时间
2015-6-24
最后登录
1970-1-1

勋章墙

2017-12-1 22:37:52 | 显示全部楼层
xuexi yixia ...
回复

使用道具 举报

已绑定手机
互撸娃666
等级头衔

等級:编程学徒

Rank: 3Rank: 3

积分成就
易币
贡献
主题
精华
金钱
积分
201
注册时间
2017-7-11
最后登录
1970-1-1

勋章墙

2017-12-9 22:11:22 | 显示全部楼层
没啥说的先顶在下!!!!!!!!!!
回复

使用道具 举报

已绑定手机
最可爱的胖虎
等级头衔

等級:编程学徒

Rank: 3Rank: 3

积分成就
易币
贡献
主题
精华
金钱
积分
432
注册时间
2017-11-7
最后登录
1970-1-1

勋章墙

2018-2-6 10:57:52 | 显示全部楼层
牛逼...
回复

使用道具 举报

已绑定手机
chennj
等级头衔

等級:编程菜鸟

Rank: 2

积分成就
易币
贡献
主题
精华
金钱
积分
128
注册时间
2017-12-29
最后登录
1970-1-1

勋章墙

2018-4-25 09:44:14 | 显示全部楼层
谢谢分享,学习下
回复

使用道具 举报

已绑定手机
lvdout
等级头衔

等級:顶级Vip

Rank: 14Rank: 14Rank: 14Rank: 14

积分成就
易币
贡献
主题
精华
金钱
积分
298
注册时间
2017-10-5
最后登录
1970-1-1

勋章墙

2018-11-10 21:03:48 | 显示全部楼层
6666666666666666666
回复

使用道具 举报

已绑定手机
小执着
等级头衔

等級:编程起步

Rank: 5Rank: 5

积分成就
易币
贡献
主题
精华
金钱
积分
629
注册时间
2016-7-20
最后登录
1970-1-1

勋章墙

2018-12-26 19:16:02 | 显示全部楼层

xuexi yixia ...
回复

使用道具 举报

如果懒得打字,请选择右侧内容快捷回复 提醒:以任何方式进行『恶意灌水』的行为,进行封号处理
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

热点推荐上一条 /5 下一条

QQ|网站地图|手机版|小黑屋|乐易论坛-乐易网 | 湘ICP备19007035号

拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表乐易立场!

娄底市乐易网络科技有限公司声明:乐易原创培训课程版权均为我公司所有,未经许可,不得擅自翻录,盗版,破解本站课课程,我们将保留法律诉讼的权利

GMT+8, 2024-4-19 10:18 , Processed in 0.066668 second(s), 76 queries .

Powered by Discuz! X3.4

Copyright © Tencent Cloud.

快速回复 返回顶部 返回列表