加固加壳脱壳分析(2)_脱壳原理和一些脱壳机分析

加固加壳脱壳分析(2)_脱壳原理和一些脱壳机分析脱壳原理基于静态分析的源代码失效,脱壳的核心就是在于动态运行时候的把源代码dex文件dump下来。所以最重要的几个点包括:1.找到合适的脱壳点,也就是dex被解密加载进内存的点。2.分析出dex文件的内存大小以及起始地址。当然所有的操作要在运行期间读取出来这些信息为了做到这一点我们需要一些特殊的方式思路上的具体表现为了能够找到dex文件的内存大小和地址,我们可以用两种方式:1.找到解密并且将dex文件加载到内存的点,在此刻将dex文件记录并dump下来2.直接从内存里搜索出已经加载好的d

加固加壳脱壳分析(2)_脱壳原理和一些脱壳机分析

脱壳原理

基于静态分析的源代码失效,脱壳的核心就是在于动态运行时候的把源代码dex文件dump下来。

所以最重要的几个点包括:

1.找到合适的脱壳点,也就是dex被解密加载进内存的点。
2.分析出dex文件的内存大小以及起始地址。

当然所有的操作要在运行期间读取出来这些信息

为了做到这一点我们需要一些特殊的方式

思路上的具体表现

为了能够找到dex文件的内存大小和地址,我们可以用两种方式:

1.找到解密并且将dex文件加载到内存的点,在此刻将dex文件记录并dump下来
2.直接从内存里搜索出已经加载好的dex文件,直接dump下来。

显然方法2优点明显,具体可以参考

《深入 FRIDA-DEXDump 中的矛与盾》

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

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注