Android Unity3D APK 加固流程
Android Unity3D APK 分两种编译模式,il2CPP 和 Mono,Virbox Protector 2 支持这两种编译模式的 APK/AAB 的保护,加密过程仅在加密选项的设置略有不同。
#
界面保护流程本文以 base.apk 为例。编译模式:il2cpp。
#
1. 将目标APK程序拖入到加壳工具界面#
2.设置加密选项#
设置选项内存校验:壳代码会对每个要校验的内存块进行校验,以验证其完整性,如果校验失败,则会清场退出,防止代码逻辑被篡改。
Unity引擎保护:保护Unity引擎,增强安全性
metadata加密:加密 il2cpp 的 global-meta-data 文件,并对内部结构进行混淆处理,防止运行时在内存中直接解析。
metadata名称混淆“:对 il2cpp 的 global-meta-data 文件中的方法名进行混淆处理。
勾选反调试按钮,则使用IDA等调试工具调试时,程序会直接退出。
勾选签名校验按钮,且进行签名设置,输入自己的keystore文件和密码(密钥别名和密钥密码选填)
注意
使用“签名校验”功能,必须勾选“启用签名”,才能保护成功。
勾选反注入,可以防止其它进程对 APK或aab 进程附加调试或注入。
勾选文件校验,检查APK内所有文件的完整性。
勾选模拟器检测,可以防止程序在“夜神”“雷电”等模拟器中运行。
勾选root检测,可以防止程序在root过后的手机上运行。
勾选多开检测,可以防止程序多开分身。
#
签名设置启用签名:勾选启用签名,需要设置keystore路径和keystore密码,加密后会自动签名。如果不勾选启用签名,加密后的apk需要重新做签名。
签名设置注意事项
aab 加固时若勾选“签名校验”选项,在 Google Play 上架时签名设置不能选择 ”让Google管理并保护您的应用和签名密钥“;
Google Play 上架时签名设置选择的应用密钥要和使用 Virbox Protector 加固 aab 时所用的密钥文件一致,否则无法使用。
#
3. 设置资源加密可以直接在资源加密选项处点开启用按钮,可以对Unity3D中的资源文件进行加密保护。
- 启用:点开则会对资源加密,关闭则不会对资源加密;
- 大小优先:勾选会降低体积的增大,但资源加密的安全性会降低;
- 选择文件:会列出apk包中的资源文件,可以筛选加密哪些资源文件。
- 密码:如需做资源热更新加密及外部资源加密,需要设置密码并牢记
- 加密外部资源:可对热更新资源或者外部资源如视频文件进行加
#
4. 点击 保护选中项目点击 保护选中项目 即可保护成功,加密成功后加密的apk程序会生成到 protected 文件夹里。
保护完成后,生成的文件:
base.apk 原文件
base.apk.ssp 加固时生成的配置文件,保存加密时所有设置选项。
protected 加固后的 apk/aab 文件即生成在此文件夹下
注意
请勿使用试用版加固后的 aab 上架 Google Play 商店,请联系商务获取正式版。
#
命令行保护流程#
生成 ssp 配置文件(可选)使用 Virbox Protector 界面工具,按照上面的流程,配置 函数选项、加密选项、资源加密,设置完成后,点击【保存所有配置】,即可生成 SSP 配置文件(若无配置文件,则命令行加壳后的 apk/aab 默认不签名);
生成的ssp文件示例:
#
运行 virboxprotector_con在VirboxProtector的安装目录里,找到Virboxprotector_con,在命令行工具里打开。
Windows环境默认安装目录:
C:\Program Files\senseshield\Virbox Protector 2 Trial\bin
Linux环境默认安装目录:
/usr/share/virboxprotector/bin
#
执行命令加密将第一步生成的 ssp配置文件与 待加密的 apk/aab 放在同一个目录,执行下面的命令。
VirboxProtector_con的路径 需要被保护的程序路径 -u3d -o 输出文件的路径