加壳技术简史
| 第一代壳Dex加密 | 第二代壳Dex抽取与so加固 | 第三代壳Dex动态解密与so混淆 |
|---|---|---|
| 1.dex字符串加密 | 1.对抗第一代壳常见的脱壳法 | 1.Dex Method代码动态解密 |
| 2.资源加密 | 2.Dex Method代码抽取到外部(通常企业版) | 2.So代码膨胀混淆 |
| 3.对抗反编译 | 3.Dex动态加载 | 3.对抗之前的出现的所有脱壳法 |
| 4.反调试 | 4.So加密 | |
| 5.自定义DexClassLoader |
dex的加固技术发展
- dex整体加固:文件加载和内存加载
- 函数抽取:在函数粒度完成代码的保护
- VMP和Dex2C:Java函数Native化点
so的加固种类
- 基于init、init_array以及JNI_Onload函数的加壳
- 基于自定义linker的加壳工具
dex加固强度
-
dex整体加壳是基础防护
-
函数抽取是中阶防护
-
VMP和Dex2c是高级防护:保护效果最强
未来?arm指令级别的VMP即将来临
frida-server无法关闭退出?
ps -e |grep frida
kill -9 pid
反调试遇则不决?
-
换frida版本
- 换hluwa-frida
- 先启动objection 进行注入,再 load plugin frida-dexdump
ida无法识别函数体?(F5/Tab)
- 在函数开头按P键
English
insensitive 不敏感