首页
社区
课程
招聘
[原创]Ali 阿里聚安全加固的libdemolishdata.so格式分析及代码还原的一种方案
发表于: 2017-8-28 01:07 10618

[原创]Ali 阿里聚安全加固的libdemolishdata.so格式分析及代码还原的一种方案

2017-8-28 01:07
10618

将apk上传到阿里云进行快速加固,下载下来可以发现最新的加固和参考资料(1)中的类似,libdemolishdata.so的位置放在了assets\ali中,不过格式不变。

但很可惜该资料中并没有给出将阿里云抽取到libdemolishdata.so二进制代码还原回dex的方法,修改代价高(伸手党做不成了),所以需要继续分析(本文在参考资料(1)的基础上分析,建议先阅读参考资料(1))。

想着动态调试太麻烦于是直接开始猜,用winhex打开libdemolishdata.so,如图:

可以发现位于0x10(表示由0x10-0x10+3构成的DWORD,下同),0x20,0x30的位置的内容恰好是fixfunc调用的内容。

那么可以推测0xC表示待修复方法个数。

用baksmali输出method(java -jar baksmali.jar list methods dex文件地址),可以发现0x18,0x28,0x38对应着三个被修改为"native"方法的methodIdx。

学习了参考资料(2)后,可以发现0x1c,0x2c,0x3c作为offset指向的内容恰好是DexCode格式,所以关键是修复codeoff。


又尝试上传了一个有multidex的apk,可以猜出libdemolishdata.so其他全部信息的含义(过程省略),如下(所有名称都是我为了方便随便命名的)

文件宏观组成如下

AliCheckSumInfo的组成比较简单,如下(可能用于检验加固后的内容是否被修改)

AliFixFuncInfo则由三部分组成,如下


分析到这里可以说是很开心,以为只要在dex文件中找到codeOff改掉即可,然而codeOff是Uleb128类型的,这是一种变长类型,一旦改掉,需要修复很多偏移信息。

于是想到我们可以修改baksmali读取到的codeOff啊,再smali回去即可。

可以想象(伸手党放心,这部分附件有成品),先增加几个类,用于读取 libdemolishdata.so,在读取dex文件的函数中将 libdemolishdata.so 的内容复制在存储dex内容的byte[]末尾,然后修正读取到的accessFlag(去除native标记【0x100】),修正读取到的codeOff(获取到相对于当前AliFixFuncInfo的偏移后要加上AliFixFuncInfo相对于libdemolishdata.so文件头的偏移和前文中的byte[]中libdemolishdata.so信息的偏移),这样就可以了。


附件中modifiedJava.zip是修改后的java源代码(仅修改的部分,修改前的baksmali程序的java源代码可在github下载,编译采用javac -cp 编译好的.jar;. ***.java,然后将新生成的*.class用压缩软件复制到jar内对应目录即可);

bakdemolish-2.2.1.jar是修改编译后的成品(使用说明:

1.正常dex和修复后dex都用正常baksmali即可,不要用这个。

2.操作命令同正常baksmali,如java -jar bakdemolish-2.2.1.jar d classes.dex。

上传的附件:
收藏
免费 1
支持
分享
最新回复 (7)
雪    币: 116
活跃值: (290)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2
思路很好,我抄袭了它整个实现都没想到。
唯一想到的就是利用android自带的dump出单个函数的smali代码。
2017-8-28 10:17
0
雪    币: 360
活跃值: (84)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
3
很强
2017-8-28 10:33
0
雪    币: 0
活跃值: (878)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
4
很强  思路很6
2017-8-28 11:18
0
雪    币: 4580
活跃值: (4009)
能力值: ( LV8,RANK:138 )
在线值:
发帖
回帖
粉丝
5
666
2017-8-29 09:59
0
雪    币: 101
活跃值: (157)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
nb
2017-10-26 16:14
0
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
很详细,哈哈哈,
2017-10-27 22:50
0
雪    币: 268
活跃值: (23)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
太强大了,ali新版好像改成libfakejni.so配合libzuma.so/libzumadata.so等文件加固了
2017-12-29 22:53
0
游客
登录 | 注册 方可回帖
返回
//