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

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

2017-6-30 13:49
21177

上回说过要再写一篇文章,这里跟大家分享一下百度壳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包,所以他的偏移为负值,内存结构如下图:


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 1
支持
分享
最新回复 (47)
雪    币: 12
活跃值: (10)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2
我顶啊 
2017-6-30 14:13
0
雪    币: 2907
活跃值: (1301)
能力值: ( LV12,RANK:215 )
在线值:
发帖
回帖
粉丝
3
ddddddfx 我顶啊
你这太划水了吧。。
2017-6-30 14:16
0
雪    币: 341
活跃值: (143)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
4
太厉害了
2017-6-30 14:33
0
雪    币: 294
活跃值: (119)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
5
这个厉害了!膜拜!
2017-6-30 14:35
0
雪    币: 3712
活跃值: (1401)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
6
不错,赞
2017-6-30 14:39
0
雪    币: 1721
活跃值: (1575)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
厉害了……等我涉及到这些,我天天去烦你……
2017-6-30 14:47
0
雪    币: 2907
活跃值: (1301)
能力值: ( LV12,RANK:215 )
在线值:
发帖
回帖
粉丝
8
hanhaochi 厉害了……等我涉及到这些,我天天去烦你……[em_19]
韩大神最近在玩什么?
2017-6-30 14:51
0
雪    币: 461
活跃值: (319)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
9
厉害了!叼叼叼!!
2017-6-30 14:58
0
雪    币: 43
活跃值: (170)
能力值: ( 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
活跃值: (1301)
能力值: ( 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
雪    币: 210
活跃值: (641)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
13
叼叼叼
2017-7-1 11:07
0
雪    币: 118
活跃值: (331)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
66666
2017-7-1 16:55
0
雪    币: 2907
活跃值: (1301)
能力值: ( 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
活跃值: (170)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
谢大神,onCreate差不多分析完了
2017-7-3 21:16
0
雪    币: 2907
活跃值: (1301)
能力值: ( LV12,RANK:215 )
在线值:
发帖
回帖
粉丝
18
欧阳峰峰 谢大神,onCreate差不多分析完了
别叫大神了,我是渣渣。看雪的大佬太多。
2017-7-4 11:06
0
雪    币: 237
活跃值: (83)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
谢大神,onCreate差不多分析完了
2017-7-4 15:05
0
雪    币: 162
活跃值: (91)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
太厉害了
2017-7-5 14:32
0
雪    币: 25
活跃值: (1111)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
21
看来百度用了2代壳+vmp
2017-7-6 18:01
0
雪    币: 2907
活跃值: (1301)
能力值: ( 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
活跃值: (1301)
能力值: ( 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
游客
登录 | 注册 方可回帖
返回
//