码迷,mamicode.com
首页 > 其他好文 > 详细

APK脱壳的一点小总结

时间:2016-05-20 00:46:28      阅读:1308      评论:0      收藏:0      [点我收藏+]

标签:

目前在安全加固与脱壳破解的攻防中,破解者处在了优势的位置,个人认为在虚拟机保护出现之前,也会一直这样。

对于Android DEX文件的脱壳,一般分2种情况:

一种是dex会完整出现在内存当中,大部分免费版加固,某些企业版加固都是这样的,通常IDA调试断在dvmDexFileOpenPartial、dexFileParse等这些函数上面,直接内存dump就可以。但有些加固会有反调试,处理起来比较麻烦,因此直接hook这些函数更为简单,substrate、adbi这些框架可以帮助我们节省开发成本。还有一个更简单粗暴的做法,重新编译替换libdvm.so,通过修改这几个函数源码脱壳。

另一种是dex不会完整出现在内存当中的情况,比如腾讯乐固dump出来发现method都是空的,原方法内容被抽取出去单独加密,运行时再解密,运行后再加密,虽然效率要低但相比上一种方法安全效果更好一些。当然对付这种加壳也有办法,因为dalvik虚拟机在执行到具体类方法时,一定在内存中是解密的,我们可以在这里hook或修改libdvm.so,然后主动加载初始化每个类方法,重新拼装出dex文件,已经有开源的实现方法,github搜索dexhunter。

第2种方法加固方很难应对了,但会使用一些技巧,如加固会hook fwrite函数,当发现文件以dex035开头时就不执行写操作,但都是治标而不治本办法。

 

有同事找我问怎么入门APK脱壳,以下几点浅见:

1、学习dex文件结构,阅读dex文件加载、解释过程源码

2、使用IDA调试并dump一个dex,修复成可执行APK,样本网上很多

3、学习substrate框架使用,制作脱壳机,学习xposed框架

4、练习修改、编译Android系统源码,实践、修改、优化dexhunter

 

目前来看,有源码加固的话,在native里面可以做的事情很多,比如ollvm。但目前国内厂商都是扔一个APK过去,他给你丢个加固后APK回来。能对ELF做的事情不多,最多也就改下header里面section的信息,让IDA懵逼吧?

APK脱壳的一点小总结

标签:

原文地址:http://www.cnblogs.com/kiiim/p/5510697.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!