Android加壳与脱壳(6)——各类加壳器与原理分析推荐
1.前言
为了方便编写Android加壳与脱壳系列的文章,今天收集整理了网络上实用的加壳器和分析文章,本文推荐的加壳器框架都进行了一一的复现,所以方便大家的学习。
2.项目推荐
2.1 加壳的发展史
我们纵观Android加固主要分为dex加壳和so加固,本文主要描述dex加壳的发展史
即总共可以包括:动态加载壳、不落地加载壳、函数抽取壳、dex2c壳、dex-vmp壳
五类加壳各自具有不同的特点,而技术难度也是逐步的增加,下面将给大家推荐网上开源的五类加壳器,方便大家的学习整理
2.2 动态加载壳
加壳器:
这里原作者的项目好像删除了,可以使用这里我重新编译出来的框架
https://github.com/WindXaa/Android-reverse/tree/main/Android%E7%AE%80%E6%98%93%E5%8A%A0%E5%A3%B3%E5%99%A8
分析文章:
https://mp.weixin.qq.com/s/LWTFNDV1dff8cdBakd1AOQ
动态加载壳比较简单,但缺点是容易将dex解密后释放在本地
2.3 不落地加载壳
加壳器:https://github.com/Frezrik/Jiagu
该作者实现了通用的不落地加载壳的加壳器,不落地加载主要是为了对抗前文的缺点,这里通过在Android8.0前后采用不同的方案进行实现
分析文章:
https://blog.csdn.net/z9722/article/details/120785602
更详细的分析文章关注公众号
2.4 函数抽取壳
加壳器:https://github.com/luoyesiqiu/dpt-shell
函数抽取壳的粒度更细,可以对抗前面整体加壳的方式
分析文章:
https://bbs.pediy.com/thread-271139.htm
2.5 dex2c壳
加壳器:https://github.com/amimo/dcc
dex2c壳开始从java层向so层进行转换,主要通过反编译,然后通过C/C++将java层的代码翻译过来,这样特点是绑定在不同的函数地址上
分析文章:
暂时未看见不错的分析文章,后面团队会编写相关原理文章
2.6 dex-vmp壳
加壳器:https://github.com/maoabc/nmmp
dex-vmp通过大量的jni接口反射将java代码反射到so层,然后在so层通过自定义的解释器去解释,特点是函数都注册在相同的地址上
分析文章:
https://bbs.pediy.com/thread-270799.htm
https://nemozqqz.github.io/2022/06/15/VMProtect-and-Android-DEX-VMP.html
3.总结
本文收集总结了网络上开源且可以复现的加壳器框架和分析文章,这里帮助大家学习,论坛上面也存在很多不错的分析文章,大家可以一一阅读,后面也会对该部分进行一一的分析,感兴趣朋友可以关注github
github:https://github.com/WindXaa/Android-reverse