脱壳原理
基于静态分析的源代码失效,脱壳的核心就是在于动态运行时候的把源代码dex文件dump下来。
所以最重要的几个点包括:
1.找到合适的脱壳点,也就是dex被解密加载进内存的点。
2.分析出dex文件的内存大小以及起始地址。
当然所有的操作要在运行期间读取出来这些信息
为了做到这一点我们需要一些特殊的方式
思路上的具体表现
为了能够找到dex文件的内存大小和地址,我们可以用两种方式:
1.找到解密并且将dex文件加载到内存的点,在此刻将dex文件记录并dump下来
2.直接从内存里搜索出已经加载好的dex文件,直接dump下来。
显然方法2优点明显,具体可以参考
dex修复
应对类抽取的加固方式
最后还差什么呢,也许dex直接脱下来是及其重要的一个步骤。但是将dex文件修复是更加核心的一个步骤。否则拉下来一个全是空方法的dex文件没有什么意义。
关于修复dex文件这个步骤比较复杂,后面直接遇到了分析过程。
这个过程需要对dex的文件格式非常熟悉,因此对dex的文件需要有个完整的解析过程了解。
脱壳方式
主流的脱壳方式,包括脱壳机
1.基于hook
包括xposed/frida的方式来读取
典型的案例有github的开源脱壳机框架
参考案例
Xposed
https://github.com/WrBug/dumpDex
https://github.com/WrBug/DeveloperHelper
Frida
https://github.com/dstmath/frida-unpack
https://github.com/hluwa/FRIDA-DEXDump
2.基于源码定制
对系统源码进行修改,在关键位置插入代码把dex文件dump下来
经典的案例FART以及其变种
https://github.com/Youlor/Youpk
https://github.com/hanbinglengyue/FART
https://github.com/Youlor/unpacker
3.基于虚拟机
最近出来一种基于虚拟机的 也就是基于VA的脱壳机
https://github.com/Youlor/unpacker
基于这种类似虚拟机的结构 可以应对很多厂商的壳,而且不用刷机和root
在使用上难度较小但是在开发上难度要大一点。要对VA研究足够多
总结
参考资料
https://mp.weixin.qq.com/s/n2XHGhshTmvt2FhxyFfoMA
https://github.com/hanbinglengyue/FART
今天的文章加固加壳脱壳分析(2)_脱壳原理和一些脱壳机分析分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/33969.html