加固加壳脱壳分析(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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值