Virbox Protector 本次发版(2.3.1.14280)全面支持 Unity3D 加密,支持了 PC 程序 iL2CPP 编译方式的加密保护。
功能
- 保护 C# 程序集(Assembly-CSharp.dll),防止C#代码被反编译,防止 de4dot 等工具还原代码。
- 加密 global-meta-data.dat 文件,并通过多种保护技术防止 il2cppDumper 等工具 Dump .NET 元数据信息。
- 加密 AssetBundle 资源,防止 Asset Studio 等工具反编译。
- 通过平台相关技术,防止程序被动态调试。
应用场景
程序被反编译
Unity 程序集 DLL 实际为标准的 .NET 文件格式,可以直接反编译为 C# 代码,暴露代码逻辑,很容易滋生外挂。
资源被提取或篡改
Unity 程序 Asset Bundle 资源可以被提取重打包,修改场景,破坏程序正常功能。
程序集被篡改
程序集被反编译后,根据类名和方法名,可以很容易的定位并修改逻辑。
il2cpp 代码被篡改
il2cpp 虽然被编编译为 Native 模块,但可以通过 global-meta-data 文件轻松定位与 C# 代码关联的 Native 代码,也容易被篡改。
核心技术
程序集保护
对程序集中所有方法的 IL 代码加密,通过修改 Mono 引擎,运行时在 JIT 编译过程中解密,每次仅有一个方法被解密,并解密到随机的内存地址,保证加密后的程序无法被 Dump 出整个程序集。
资源加密
加密 Unity Asset Bundle 资源,在 unity 引擎中解密,防止 Asset Bundle 资源被反编译打包,支持资源热更新。
global-meta-data 加密
加密 il2cpp 的 global-meta-data 文件,并对内部结构进行混淆处理,防止运行时在内存中直接解析。
il2cpp 保护
对 il2cpp.so 或 GameAssembly.dll 处理,去除导出函数,并对内存进行完整性校验,防止篡改。
反调试
通过平台相关API、数据结构和寄存器,检测调试器,防止动态调试。