首页
社区
课程
招聘
[原创]阿里加固dex脱壳
发表于: 2016-6-7 15:54 38121

[原创]阿里加固dex脱壳

2016-6-7 15:54
38121

这次研究一下阿里加固,提交一个APK,加固好之后下载,大致看一下加固样式都差不多,这是外壳:


加固后的dex在lib里面的libmobisecy1.so中,效果如下:


看了一下字节码发现所有方法的字节码都被这28字节替换了,真正的指令被隐藏了


不管怎么样,先从内存中dump出这个dex来看看,dump出来发现这个dex是坏的,dex2jar也看不了,反编译也没用,对比加载前的dex发现区别不大,看上去没有在内存中还原的样子。

破解思路:无论dex怎么隐藏,该运行哪个方法还得运行,于是修改源码,找到方法运行的真正地址,如下图所示


打印了几个方法的codeoff,发现有个奇怪的地方,codeoff的值明显超出了dex的大小。那么我猜测他们肯定多new了一部分内存,把真正的指令往后面放了,加载的时候把dex所有方法的codeoff重写一遍,指向了新的地址。

既然这样那我就多dump一部分数据出来,直接从dex头开始dump,dump长度是dex的两倍。

脱壳操作:这样内存中的dex以及后面的尾巴都dump出来了,可能还多了一部分无效的数据,不过没关系,先拿下来看看


把拿到的dex反编译一下看看,不出意外的报错了


不过可喜的是,绝大部分方法的smali已经反编译出来了,既然这样把报错类的smali都删掉,然后回编译试试。可能回编译也会有类报错,不过同样地都删除,最后回编译成功,dex2jar发现方法都暴露了。

最后再测试这个dex是否可以运行,在这里还有资源文件保护,因此修改AndroidManifest.xml的入口还需要进一步破解操作,不过没关系,我们作弊一下,APK是我提交的,把原始的xml拿过来借用一下,就当绕过资源保护了。

最后重新打包一个新的APK,运行成功,dex脱壳完成。

结束语:阿里加固的核心思想还是内存中还原dex,不过还原的是方法的codeoff,codeoff指向了dex范围之外的一片内存。最后资源保护这一块还需要花点时间研究。


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

上传的附件:
收藏
免费 3
支持
分享
最新回复 (48)
雪    币: 191
活跃值: (195)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
2
2
2016-6-7 15:59
0
雪    币: 1176
活跃值: (1264)
能力值: ( LV12,RANK:380 )
在线值:
发帖
回帖
粉丝
3
不懂安卓 仔细看了下 和windows平台脱壳原理差不多  支持楼主~
2016-6-7 16:07
0
雪    币: 233
活跃值: (285)
能力值: ( LV12,RANK:270 )
在线值:
发帖
回帖
粉丝
4
dump长度是dex的两倍


前面的思路都正确,但为什么会毫无理由的选择"两倍"?目测反编译出错就是因为这个"2"~
对照maps文件看看codeoff吧
2016-6-7 16:55
0
雪    币: 1185
活跃值: (458)
能力值: ( LV13,RANK:360 )
在线值:
发帖
回帖
粉丝
5
haha ...我也觉得这个2不好,把“800MB” dump出来也就几分钟吧~
2016-6-7 17:31
0
雪    币: 398
活跃值: (286)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
6
呵呵,阿里加固把dex的所有方法的指令全部隐藏,但是我们不知道具体的长度,那么最长也不可能超过原dex的长度,因此2倍dex足够把有用的信息弄下来了,置于你要嘚瑟dump多一点无所谓,但是少了就导致方法不全
2016-6-7 17:35
0
雪    币: 216
活跃值: (585)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
8
有多少人看懂了?
2016-6-7 18:02
0
雪    币: 47147
活跃值: (20450)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
9
阿里有意见了,我转到会员区交流。
2016-6-7 18:07
0
雪    币: 576
活跃值: (1163)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
10
其实这个原理,以前论坛上有人发布一个帖子,写的很详细。。
基本原理就是 将每个方法的实现代码 弄到new出来的内存中。。

将原始的dex 分成两个文件,一个是结构基础,另外一个是方法实现字节码
2016-6-7 18:16
0
雪    币: 398
活跃值: (286)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
12
这么小气?别人看不到我的帖子了吗
2016-6-7 18:27
0
雪    币: 47147
活跃值: (20450)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
13
普通会员以上都可以看到。
临时移过来,过几天移出去,阿里希望给他们几天升级一下。
2016-6-7 20:17
0
雪    币: 1176
活跃值: (1264)
能力值: ( LV12,RANK:380 )
在线值:
发帖
回帖
粉丝
14
哈哈   ~
2016-6-7 22:34
0
雪    币: 546
活跃值: (1662)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
15
下次可以让楼主先发文章到国外论坛上面去,然后在通过看雪转载过来,只有这样才能使那些动不动就送律师函的企业干瞪眼。
2016-6-7 23:12
0
雪    币: 233
活跃值: (285)
能力值: ( LV12,RANK:270 )
在线值:
发帖
回帖
粉丝
16
唉~好心提醒一下。这么简单的东西,竟然还被当成嘚瑟了,你这嘚瑟的标准也太低了吧。
同样的东西,我在前年就已经发帖说得很清楚了。
就你这段话看来,根本没搞清楚阿里是什么做的。再仔细看看吧
2016-6-8 11:20
0
雪    币: 398
活跃值: (286)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
17
目标只是脱壳而已,只要能脱壳,就没动力深入研究他们的团队是怎么想的了,大家都比较忙,我也有自己的东西要研究。阿里大神那么多,我也没有班门弄斧的想法,同行做个技术交流总可以吧。
2016-6-8 11:28
0
雪    币: 233
活跃值: (285)
能力值: ( LV12,RANK:270 )
在线值:
发帖
回帖
粉丝
18
把报错类的smali都删掉


嗯,很成功的脱壳。厉害~
2016-6-8 12:49
0
雪    币: 398
活跃值: (286)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
19
删掉错误类之后又不影响运行,也不影响重打包,这些类为什么会报错本身也是由于在内存中没还原,或者可能是没还原的必要。
2016-6-8 13:54
0
雪    币: 214
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
谢谢,又学到一个思路.
会员区在哪?没去过
2016-6-9 18:59
0
雪    币: 4
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
学习了.
2016-6-11 12:20
0
雪    币: 98
活跃值: (364)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
22
大神,你是不是发太多了。666~~~~
2016-6-11 22:55
0
雪    币: 693
活跃值: (108)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
23
一年了,阿里的加固技术还是没有怎么更新。。。。。。
2016-6-12 10:18
0
雪    币: 63
活跃值: (324)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
24
阿里有意见了----我笑了
2016-6-12 10:31
0
雪    币: 22
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
啥年代了还在这儿玩脱壳,阿里这些大公司早就开始搞vmp了好不。QEver是移动安全挑战赛的第3名,脱壳这一套早就玩烂了,你好歹对人家有点尊敬吧。
2016-6-12 13:09
0
游客
登录 | 注册 方可回帖
返回
//