首页
论坛
课程
招聘
[原创]一个简单的判断APK文件是否混淆的方法
2012-12-18 00:00 19823

[原创]一个简单的判断APK文件是否混淆的方法

2012-12-18 00:00
19823
目前越来越多的恶意apk文件为了对抗杀毒软件以及分析人员的分析,以及由于商业软件自身的保密需要,很大程度上都会进行一定的混淆,更有甚者采用全反射调用的来掩藏自己的真实意图。虽然一定程度上经过混淆的文件的其文件大小都会变小。以著名的proguard为例,经过处理的apk文件大小往往不到其未经过处理的apk文件的1/3。虽然文件变小以后其信息熵会明显的增大,但是对于大量恶意apk文件的自动化分析中,前期的混淆判断如果采用信息熵的置信区间来处理往往需要统计大量的apk文件,而且需要对apk实现解压,因为在解压的情况下,apk文件中的资源会对信息熵的计算造成稀释,并且还会存在一个模糊地带。
       由于apk文件的混淆往往是伴随着文件的压缩和代码的优化问题,混淆的apk文件解压转换为jar文件,使用ju-gui打开以后有一个不太引人注意的细节问题---其中找不到资源文件类。
      利用这一特性,我们可以直接利用apktool解压apk文件,对其smali文件的文件名进行分析,如果存在一个或以上的资源的smali文件,就可以证明该apk文件没有混淆,反之,则说明已经是混淆过了的文件。如下图所示

     
     而全反射调用的判断就比较简单了,直接判断是否存在forname函数。

该方法比较好的一点在于便于使用脚本实现,有利于文件的批处理。

[公告]春风十里不如你,看雪团队诚邀你的加入!

上传的附件:
收藏
点赞0
打赏
分享
最新回复 (6)
雪    币: 210
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
南极兵 活跃值 2012-12-19 23:35
2
0
比较关心怎么解决
雪    币: 71
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
loogeo 活跃值 2013-4-5 00:40
3
0
。。。一般发现 a.smali b.smali c.smali 就是混淆了
雪    币: 298
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
tedrick 活跃值 2013-4-11 18:19
4
0
oh ...我还以为我刚接触android和java。。。爆破能力退化了。。。原来玩的都是高混淆:-)  其实smali可读性和逻辑很强。。。区段很容易识别。。。
雪    币: 1609
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
shangrila 活跃值 2013-4-11 18:31
5
0
路过,学习了
雪    币: 0
活跃值: 活跃值 (23)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
shuwangyi 活跃值 2016-8-2 15:41
6
0
现在很多app混淆都keep了R文件,在这种情况下请问应该怎么判断其是否混淆呢?
雪    币: 227
活跃值: 活跃值 (62)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
大王叫我挖坟 活跃值 3 2016-8-4 20:29
7
0
信息熵都出来了看起来好高端的样子
游客
登录 | 注册 方可回帖
返回