首页
社区
课程
招聘
[原创]一个简单的判断APK文件是否混淆的方法
发表于: 2012-12-18 00:00 23281

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

2012-12-18 00:00
23281

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

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

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


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

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