Skip to main content

设置

Obfuz提供了极其丰富的配置选项和灵活的混淆规则配置文件,以支持商业游戏项目的各种复杂的需求。

ObfuzSettings窗口

点击菜单Obfuz/Settings...打开 ObfuzSettings窗口。

全局设置

选项描述
Enable是否开启Obfuz混淆功能。如果被禁用,Obfuz不会再在构建过程中混淆程序集,但不影响开发者主动调用混淆接口对某些程序集进行混淆。
Assembly Settings混淆程序集相关设置
Obfuscation Pass SettingsObfuscation Pass相关设置
Secret Settings加密相关设置
Encryption VM Settings加密虚拟机相关设置

Assembly Settings

设置混淆相关程序集。补充文档可见程序集

选项描述
Assembly To Obfuscate需要被混淆的程序集名列表。程序集名不包含.dll,示例:MainAssembly-CSharp。如果想混淆Obfuz.Runtime,请开启下面的Obfuscate Obfuz Runtime选项,不要添加到此列表!
Non Obfuscated But Referenceing Obfuscated Assemblies不需要被混淆,但引用了被混淆的程序集的程序集名列表
Additional Assembly Search Paths以dll形式存在的程序集的相对搜索路径,目前Obfuz会自动搜索工程内的与当前buildTarget兼容的托管dll(含Assets及Packages及Libarary/PackageCache),因此一般不需要配置此项。除非托管dll在Unity工程外,或者说存在多个同名dll需要解决搜索优先级。
Obfuscate Obfuz Runtime是否混淆Obfuz.Runtime程序集。默认为true,强烈建议开启此选项。

Obfuscation Pass Settings

设置开启哪些Obfuscation Pass。支持细化到函数或者字段级别。补充文档见Obfuscation Pass

选项描述
Enabled Passes全局开启的Obfuscation Pass组合。如果Enabled Passes中没有启动某个Pass,即使在Rule Files文件中配置了该Pass也会被忽略
Rule Files配置规则文件,详细文档见Obfuscation Pass

Secret Settings

加密相关全局设置。 补充文档见加密

选项描述
Default Static Secret Key默认的静态密钥。由于初始化时机的限制,AOT程序集一般只能使用静态密钥。如果有AOT程序集被混淆,发布App后请不要修改这个值。
Default Dynamic Secret Key默认的动态密钥。 允许在启动后完成一些事件(如代码热更新)后才加载的密钥。一般只能用于热更新程序集这种动态更新的程序集。 每次热更新前都可以修改这个值。
StaticSecretKeyOutputPath默认静态密钥文档的默认输出目录。
DynamicSecretKeyOutputPath默认动态密钥文档的默认输出目录。
Random Seed随机数种子。该种子会影响所有的混淆和加密操作,建议定期更换。每次发布App或者热更新前都可以修改这个值。

Encryption VM Settings

加密虚拟机(Encryption Virtual Machine)相关设置。 补充文档见加密

选项描述
Code Generation Secret Key生成虚拟机用到的起始随机数密钥兼种子。发布App后请不要修改此值。
Encryption Op Code Count加密虚拟机的指令数。它的值必须是2的幂并且不小于64,默认值为256。建议不要超过1024。发布App后请不要修改值。
Code Output Path生成的加密虚拟机代码的输出路径。默认为Assets/Obfuz/GeneratedEncryptionVirtualMachine.cs。加密虚拟机全局唯一。如果有AOT程序集被混淆,由于初始化时机的原因,加密虚拟机代码必须放到AOT程序集中。如果只对热更新代码混淆,EncryptionVM的代码也可以放到热更新程序集中。

Obfuscation Pass相关设置

目前已经支持多个加密或者混淆Pass,详细文档见Obfuscation Pass

Symbol Obfus Settings

符号混淆用于混淆程序集中类型、字段、函数、Property、event、函数参数的名称。支持通过规则文件非常精细地控制混淆范围和效果。详细文档见符号混淆

选项描述
Debug是否开启Debug模式。禁用Debug模式时将{Name}混淆为$a之类的名字,开启Debug模式后{Name}会被固定混淆为${Name}(如Apple会被混淆为$Apple)以方便跟踪问题。Debug模式忽略所有混淆规则,也忽略符号映射文件symbol-mapping.xml
Obfuscated Name Prefix混淆名的前缀,会为所有生成的混淆符号前加上此前缀。默认为$。尽管配置为空也不影响生成不冲突的混淆名,但加上前缀有助于快速区分正常名与非混淆名
Use Consistent Namespace是否为相同的Namespace生成同一个混淆后的Namespace。默认为true。如果为false,即使同名Namespace都会映射到不同的混淆后的命名空间。对于空Namespace,在混淆后保持为空,而不是为它生成混淆Namespace
Symbol Mapping File混淆符号映射文件,记录了类型、函数、字段等符号原始名和混淆名的映射关系。关闭Debug模式时,混淆符号时会在保证命名不冲突的情况下优先使用Symbol Mapping File中记录的混淆名,保证了增量映射的稳定性。另外Symbol Mapping File还被DeobfuscateStackTrace工具用于还原混淆后的函数栈日志为原始函数栈日志。为了保证增量混淆的稳定,请将Symbol Mapping File加到版本管理
Rule Files混淆规则配置文件。如果为空则对除了特殊符号外所有符号都进行混淆。详细配置规则见符号混淆

Const Encrypt Settings

常量加密相关设置。支持通过规则文件非常精细地控制范围和加密效果。补充文档见常量混淆

选项描述
Encryption level加密级别,取值范围为[1, 4],默认为1。 加密级别越高,加密越复杂,解密也会越耗时。
Rule Files加密规则文件列表。可以为0到多个。如果为空会对所有常量进行混淆。详细配置规则见常量混淆

Field Encrypt Settings

变量内存加密相关设置。支持通过规则文件非常精细地控制加密范围和效果。补充文档见字段加密

选项描述
Encryption level加密级别,取值范围为[1, 4],默认为1。 加密级别越高,加密越复杂,解密也会越耗时。
Rule Files加密规则文件列表。可以为0到多个。如果为空会对所有常量进行混淆。详细配置规则见字段加密

Call Obfus Settings

函数调用混淆相关设置。 支持通过规则文件非常精细地控制加密范围和效果。补充文档见函数调用混淆

选项描述
Encryption level加密级别,取值范围为[1, 4],默认为1。 加密级别越高,加密越复杂,解密也会越耗时。
Rule Files加密规则文件列表。可以为0到多个。如果为空会对所有常量进行混淆。详细配置规则见函数调用混淆