Skip to main content

Android Unity3D APK 加固流程

Android Unity3D APK 分两种编译模式,il2CPP 和 Mono,Virbox Protector 2 支持这两种编译模式的 APK/AAB 的保护,加密过程仅在加密选项的设置略有不同。


界面保护流程#

本文以 base.apk 为例。编译模式:il2cpp。

1. 将目标APK程序拖入到加壳工具界面#

img

2.设置加密选项#

设置选项#

  • 内存校验:壳代码会对每个要校验的内存块进行校验,以验证其完整性,如果校验失败,则会清场退出,防止代码逻辑被篡改。

  • Unity引擎保护:保护Unity引擎,增强安全性

  • metadata加密:加密 il2cpp 的 global-meta-data 文件,并对内部结构进行混淆处理,防止运行时在内存中直接解析。

  • metadata名称混淆“:对 il2cpp 的 global-meta-data 文件中的方法名进行混淆处理。

  • 勾选反调试按钮,则使用IDA等调试工具调试时,程序会直接退出。

  • 勾选签名校验按钮,且进行签名设置,输入自己的keystore文件和密码(密钥别名和密钥密码选填)

    注意

    使用“签名校验”功能,必须勾选“启用签名”,才能保护成功。

  • 勾选反注入,可以防止其它进程对 APK或aab 进程附加调试或注入。

  • 勾选文件校验,检查APK内所有文件的完整性。

  • 勾选模拟器检测,可以防止程序在“夜神”“雷电”等模拟器中运行。

  • 勾选root检测,可以防止程序在root过后的手机上运行。

  • 勾选多开检测,可以防止程序多开分身。

签名设置#

启用签名:勾选启用签名,需要设置keystore路径和keystore密码,加密后会自动签名。如果不勾选启用签名,加密后的apk需要重新做签名。

image-20220629105138510

签名设置注意事项

aab 加固时若勾选“签名校验”选项,在 Google Play 上架时签名设置不能选择 ”让Google管理并保护您的应用和签名密钥“;

Google Play 上架时签名设置选择的应用密钥要和使用 Virbox Protector 加固 aab 时所用的密钥文件一致,否则无法使用。

3. 设置资源加密#

可以直接在资源加密选项处点开启用按钮,可以对Unity3D中的资源文件进行加密保护。

  • 启用:点开则会对资源加密,关闭则不会对资源加密;
  • 大小优先:勾选会降低体积的增大,但资源加密的安全性会降低;
  • 选择文件:会列出apk包中的资源文件,可以筛选加密哪些资源文件。
  • 密码:如需做资源热更新加密及外部资源加密,需要设置密码并牢记
  • 加密外部资源:可对热更新资源或者外部资源如视频文件进行加

image-20220629104508164

4. 点击 保护选中项目#

点击 保护选中项目 即可保护成功,加密成功后加密的apk程序会生成到 protected 文件夹里。

保护完成后,生成的文件:

base.apk 原文件

base.apk.ssp 加固时生成的配置文件,保存加密时所有设置选项。

protected 加固后的 apk/aab 文件即生成在此文件夹下

注意

请勿使用试用版加固后的 aab 上架 Google Play 商店,请联系商务获取正式版。

命令行保护流程#

生成 ssp 配置文件(可选)#

使用 Virbox Protector 界面工具,按照上面的流程,配置 函数选项、加密选项、资源加密,设置完成后,点击【保存所有配置】,即可生成 SSP 配置文件(若无配置文件,则命令行加壳后的 apk/aab 默认不签名);

VBP-u3d-ssp

生成的ssp文件示例:

vbp-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 输出文件的路径

cmd-u3d