首页
社区
课程
招聘
1
[原创]百度加固逆向分析—dex还原
发表于: 2017-6-30 13:49 21782

[原创]百度加固逆向分析—dex还原

2017-6-30 13:49
21782

上回说过要再写一篇文章,这里跟大家分享一下百度壳DEX的dump与修复。

下面开始:

一、如何获取dex

    首先,我们知道动态加载的dex必然会调用dalvik/vm/DvmDex.cpp中以下两个函数任意一个:

    dvmDexFileOpenFromFd  从文件描述符获取DexFile结构体

    dvmDexFileOpenPartial    从内存获取DexFile结构体

    百度这里用的是dvmDexFileOpenFromFd,通过这个函数我们得到了pDexFile

通过pDexFile->baseAddr 获取到dex加载的基址。

通过pDexFile->pHeader->fileSize 获取到dex文件大小。

这时我们已经得到dex了。

二、百度壳对dex做了什么?

     1、修改DexClassDef中的classDataOff字段保存的偏移为负偏移

      

   

2、classdata数据清空

      

三、这么做如何让系统正常解析?

       百度的把classdata的数据保存在/data/data/xxxx/.1/1.jar包中,会在加载dex之前先分配空间给jar包,所以他的偏移为负值,内存结构如下图:


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 1
支持
分享
赞赏记录
参与人
雪币
留言
时间
PLEBFE
为你点赞~
2023-2-12 05:33
最新回复 (47)
雪    币: 12
活跃值: (10)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2
我顶啊 
2017-6-30 14:13
0
雪    币: 2907
活跃值: (1356)
能力值: ( LV12,RANK:215 )
在线值:
发帖
回帖
粉丝
3
ddddddfx 我顶啊
你这太划水了吧。。
2017-6-30 14:16
0
雪    币: 341
活跃值: (153)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
4
太厉害了
2017-6-30 14:33
0
雪    币: 294
活跃值: (119)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
5
这个厉害了!膜拜!
2017-6-30 14:35
0
雪    币: 3712
活跃值: (1621)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
6
不错,赞
2017-6-30 14:39
0
雪    币: 1788
活跃值: (1785)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
厉害了……等我涉及到这些,我天天去烦你……
2017-6-30 14:47
0
雪    币: 2907
活跃值: (1356)
能力值: ( LV12,RANK:215 )
在线值:
发帖
回帖
粉丝
8
hanhaochi 厉害了……等我涉及到这些,我天天去烦你……[em_19]
韩大神最近在玩什么?
2017-6-30 14:51
0
雪    币: 461
活跃值: (379)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
9
厉害了!叼叼叼!!
2017-6-30 14:58
0
雪    币: 43
活跃值: (175)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
大神,onCreate流程研究了没?  invoke-static  {v1,  p0,  v0},  Lcom/baidu/protect/A;->V(ILjava/lang/Object;[Ljava/lang/Object;)V,这个函数,流程混淆的没法看了
2017-6-30 15:18
0
雪    币: 10
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
天气不错啊
2017-6-30 15:47
0
雪    币: 2907
活跃值: (1356)
能力值: ( LV12,RANK:215 )
在线值:
发帖
回帖
粉丝
12
欧阳峰峰 大神,onCreate流程研究了没? invoke-static {v1, p0, v0}, Lcom/baidu/protect/A;->V(ILjava/lang/Object;[Ljava ...
这个函数是在我分析的idb中的0x2CA4D。混淆我没看,可以hook  malloc函数看看他放了什么进去。
2017-6-30 16:48
0
雪    币: 329
活跃值: (941)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
13
叼叼叼
2017-7-1 11:07
0
雪    币: 118
活跃值: (331)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
66666
2017-7-1 16:55
0
雪    币: 2907
活跃值: (1356)
能力值: ( LV12,RANK:215 )
在线值:
发帖
回帖
粉丝
15
欧阳峰峰 大神,onCreate流程研究了没? invoke-static {v1, p0, v0}, Lcom/baidu/protect/A;->V(ILjava/lang/Object;[Ljava ...
你可以分析下0x3292C到0x329DC中间内容。其他都没用的。。
2017-7-3 11:42
0
雪    币: 6
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
厉害!
2017-7-3 14:47
0
雪    币: 43
活跃值: (175)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
谢大神,onCreate差不多分析完了
2017-7-3 21:16
0
雪    币: 2907
活跃值: (1356)
能力值: ( LV12,RANK:215 )
在线值:
发帖
回帖
粉丝
18
欧阳峰峰 谢大神,onCreate差不多分析完了
别叫大神了,我是渣渣。看雪的大佬太多。
2017-7-4 11:06
0
雪    币: 237
活跃值: (83)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
谢大神,onCreate差不多分析完了
2017-7-4 15:05
0
雪    币: 182
活跃值: (146)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
太厉害了
2017-7-5 14:32
0
雪    币: 25
活跃值: (1421)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
21
看来百度用了2代壳+vmp
2017-7-6 18:01
0
雪    币: 2907
活跃值: (1356)
能力值: ( LV12,RANK:215 )
在线值:
发帖
回帖
粉丝
22
繁华皆成空 [em_4][em_4]看来百度用了2代壳+vmp
没有vmp只有混淆
2017-7-6 19:25
0
雪    币: 5
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
有vmp有混淆,跟360的一样,通过jni解释的
2017-7-6 20:00
0
雪    币: 2907
活跃值: (1356)
能力值: ( LV12,RANK:215 )
在线值:
发帖
回帖
粉丝
24




欧阳锋锋

有vmp有混淆,跟360的一样,通过jni解释的[em_48]

好吧  我还没分析里面流程  没看到呢 dalvik指令的解释器不能算vmp吧? 这种跟邦邦企业版的vmp差的还挺大吧

2017-7-6 20:41
0
雪    币: 5
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
先前分析棒棒企业版的,就是内存加载加类抽取加这种vmp,各大加固厂商宣传的vmp也是这种实现原理,没看到哪家是不依赖dalvik,真正自己实现一套指令的,难道现在棒棒实现了?企业版和免费的,在dex的加载执行上区别是不大的,无非是在对so的处理上,保护强度大些
2017-7-6 23:16
0
游客
登录 | 注册 方可回帖
返回

账号登录
验证码登录

忘记密码?
没有账号?立即免费注册