操作列表:
- Dex字符串加密
- 资源文件加密
- 对抗反编译
- 反调试
- 自定义DexClassLoader
技术分析:
第一代加固技术-动态加载:
第一代加固技术用于保护应用的逻辑不被逆向和分析,最早普遍在恶意软件中使用,其主要基于Java虚拟机提供的动态加载技术。
其保护流程是:
开发阶段中将程序划分为加载(Loader)也称为壳(shell)和关键代码(payload)也称为原始程序
运行时加载部分(Loader)会先运行起来,解密释放关键代码(payload),然后加载器利用动态加载技术加载执行关键代码(payload)。
缺陷:
在动态加载payload时,payload部分必须先解压,并且释放到文件系统。
备注(multiDex组件的加固原理):
Android的DEX文件在设计之初程序普遍较小,所以在DEX文件设计时,只允许包含65535个函数引用。而随着Android应用的发展,大量的应用的代码已经超过了65535的限制,为了解决这个问题,Android5.0之后原生支持加载多个dex,而为了对旧版本的兼容,Android提供了multidex组件。该组件的实现原理与上面介绍的是一致的。