Android app如何加密保护?

Android app包含的内容有dex文件,so文件,res,assets资源文件。对应的加密按此内容分为三大方面:dex保护、so加密、资源保护(res, assets)。

1.dex保护

由于未保护的dex文件,是从java编译打包而来,破解成本低较易受到攻击。其保护措施从最基本的加壳,到函数执行体抽取、动态加载,再到当前的vmp虚拟机加固,安全逐步增强。尤其是vmp加固,更是使用了自研虚拟机解释函数体,如果指令加密替换做的好,会让破解者很难受。 

2. so加密

so文件,由起初的段加密,发展到自定义elf结构的加密方式,能防止IDA查看函数名称,增加破解成本和难度。 

3. 资源保护

res资源文件,通常只采用混淆的方式增加逆向难度。assets资源,一般不处理。但随时H5应用日益增多,部分厂商(易盾、娜迦)有提供assets加密的功能,实现原理不详。 

除了上述三点防护外,还有防反编译、防二次打包、防调试、防模拟器、防xposed功能等。 

1) 防反编译,一般是对市面上的反编译工具(例如apktool)做对抗,利用其漏洞,致使反编译失败;

2) 防二次打包,一般常用的是在代码里保存签名信息,启动时在native层将当前apk的签名信息与保存的签名进行比对。市面上已有破击工具。可以在常用实现方式上做些升级。

3) 防调试,通过ptrace进程,阻止破解者再ptrace调试。

4) 防模拟器,检测/system/bin/su和/system/xbin/su文件。

5) 防xposed,通过检测XposedHelpers的methodCache,判断是否被hook。

如果需要专业的Android APP加密保护服务, 可以使用网易易盾Android应用加固服务。网易易盾拥有业内领先的加固技术,有效防止应用被逆向分析、反编译、二次打包,防止嵌入各类病毒、广告等恶意代码,保障开发者和用户的利益。


相关阅读:

安卓APK如何防止二次打包?

新一代Android Dex加固方案-Java2c加固解读

android混淆原理是什么?android混淆方法有哪些?

如何进行iOS加固?