Dex抽取与So加固:
- Dex Method代码抽取到外部(通常企业版)
- Dex动态加载
- So加密
- 对抗第一代出现的脱壳方法
技术分析-不落地加载:
主要解决第一代技术中payload落地加载的缺陷。
技术方案:
A):直接调用虚拟机提供的函数进行不落地加载。具体流程是:
- 关键逻辑以加密的方式存储在apk中
- 运行时加载部分将关键逻辑释放到内存
- 加载部分调用虚拟机内部接口加载
兼容性:需要针对4.0+(dalvik)和5.0+(art)有不同的实现方式。
缺陷和对抗:
在应用启动时需要进行大量的加密及解密操作,可能会造成黑屏,给用户的体验极差。
在加固技术实现上没有本质的区别,可以从以下几方面对抗:
例如:
内存中的dex文件头会被清除,防止在dump文件中被找到;
破坏dex文件结构,例如增加一些错误数据,提高恢复的成本;
但payload被加载后在内存中是连续的,利用GDB等工具dump内存可以直接找到payload;