Skip to main content

自定义混淆规则

本示例演示如何配置混淆规则文件,完整示例项目参见CustomConfigure

修改EncryptionVM相关设置

打开ObfuzSettings设置窗口,找到EncryptionVMSettings项。

  • 修改CodeGenerationSecretKey字段为自定义值

修改Secret相关设置

ObfuzSettings窗口中找到SecretSettings项。

  • 修改DefaultStaticSecretKey字段为自定义值
  • 修改DefaultDynamicSecretKey字段为自定义值
  • 修改RandomSeed字段为自定义的int整数

修改符号混淆相关设置

Assets/Obfuz目录下创建symbol-obfuscation.xml文件,同时SymbolObfusSettings.RuleFiles中新增一项Assets/Obfuz/symbol-obfuscation.xml

文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>

<obfuz>
<assembly name="Assembly-CSharp">
<type name="SymbolObfus.Test1" obName="0"/> 不混淆Test1类自身及它的所有成员,包括嵌套类
</assembly>
</obfuz>

修改常量加密相关设置

Assets/Obfuz目录下创建const-encrypt.xml文件,同时ConstEncryptSettings.RuleFiles中新增一项Assets/Obfuz/const-encrypt.xml。内容如下:

<?xml version="1.0" encoding="UTF-8"?>

<obfuz>

<whitelist type="int">-100,100</whitelist> 不加密 [-100, 100]范围内的常量
<whitelist type="string-length-range">,3</whitelist> 不加密长度小于等于3的字符串

<assembly name="Assembly-CSharp">
<type name="ConstEncrypt.Test1" disableEncrypt="1"/> 对Test1类所有函数禁用常量加密
<type name="ConstEncrypt.Test2">
<method name="Sum3" disableEncrypt="1"/> 不加密Sum3函数中的常量
</type>
</assembly>
</obfuz>

修改字段加密相关设置

Assets/Obfuz目录下创建field-encrypt.xml文件,同时FieldEncryptSettings.RuleFiles中新增一项Assets/Obfuz/field-encrypt.xml。内容如下:

<?xml version="1.0" encoding="UTF-8"?>

<obfuz>
<assembly name="Assembly-CSharp">
<type name="FieldEncrypt.Test1">
<field name="a" encrypt="1"/>
</type>
</assembly>
</obfuz>

修改调用混淆相关设置

Assets/Obfuz目录下创建call-obfuscation.xml文件,同时CallObfusSettings.RuleFiles中新增一项Assets/Obfuz/call-obfuscation.xml。内容如下:

<?xml version="1.0" encoding="UTF-8"?>

<obfuz>
<whitelist>
<assembly name="mscorlib" obfuscate="0"/>
<assembly name="UnityEngine.*" obfuscate="0"/>
</whitelist>

<assembly name="Assembly-CSharp">
<type name="*CallObfus.Test1" disableObfuscation="1"/>
<type name="*CallObfus.Test2">
<method name="Run1" disableObfuscation="1"/>
</type>
</assembly>
</obfuz>

生成加密虚拟机及密钥

  • 运行菜单Obfuz/GenerateEncryptionVM生成加密虚拟机代码,默认生成的代码文件为Assets/Obfuz/GeneratedEncryptionVirtualMachine.cs
  • 运行菜单Obfuz/GenerateSecretKeyFile生成两个密钥文件。默认输出文件为Assets/Resources/Obfuz/defaultStaticSecretKey.bytesAssets/Resources/Obfuz/defaultDynamicSecretKey.bytes

添加测试代码

文件比较多,请直接参考CustomConfigure

构建&运行

Player Settings窗口点击Build And Run即可。

查看混淆后Assembly-CSharp代码

使用ILSpy打开Library/Obfuz/{buildTarget}/ObfuscatedAssemblies/Assembly-CSharp.dll