Custom Obfuscation Rules
This example demonstrates how to configure obfuscation rule files. For the complete sample project, see CustomConfigure.
Modify EncryptionVM Settings
Open the ObfuzSettings window and locate the EncryptionVMSettings section.
- Change the CodeGenerationSecretKey field to a custom value
Modify Secret Settings
In the ObfuzSettings window, find the SecretSettings section.
- Change the DefaultStaticSecretKey field to a custom value
- Change the DefaultDynamicSecretKey field to a custom value
- Change the RandomSeed field to a custom integer value
Modify Symbol Obfuscation Settings
Create a symbol-obfuscation.xml file in the Assets/Obfuz directory, and add Assets/Obfuz/symbol-obfuscation.xml to SymbolObfusSettings.RuleFiles.
The file content is as follows:
<?xml version="1.0" encoding="UTF-8"?>
<obfuz>
<assembly name="Assembly-CSharp">
<type name="SymbolObfus.Test1" obName="0" applyToMembers="*"/> <!-- Do not obfuscate Test1 class itself and all its members, including nested classes -->
</assembly>
</obfuz>
Modify Constant Encryption Settings
Create a const-encrypt.xml file in the Assets/Obfuz directory, and add Assets/Obfuz/const-encrypt.xml to ConstEncryptSettings.RuleFiles.
The content is as follows:
<?xml version="1.0" encoding="UTF-8"?>
<obfuz>
<whitelist type="int-range">-100,100</whitelist> <!-- Do not encrypt constants in the range [-100, 100] -->
<whitelist type="string-length-range">,3</whitelist> <!-- Do not encrypt strings with length ≤ 3 -->
<assembly name="Assembly-CSharp">
<type name="ConstEncrypt.Test1" disableEncrypt="1"/> <!-- Disable constant encryption for all functions in Test1 class -->
<type name="ConstEncrypt.Test2">
<method name="Sum3" disableEncrypt="1"/> <!-- Do not encrypt constants in Sum3 function -->
</type>
</assembly>
</obfuz>
Modify Field Encryption Settings
Create a field-encrypt.xml file in the Assets/Obfuz directory, and add Assets/Obfuz/field-encrypt.xml to FieldEncryptSettings.RuleFiles.
The content is as follows:
<?xml version="1.0" encoding="UTF-8"?>
<obfuz>
<assembly name="Assembly-CSharp">
<type name="FieldEncrypt.Test1">
<field name="a" encrypt="1"/>
</type>
</assembly>
</obfuz>
Modify Call Obfuscation Settings
Create a call-obfuscation.xml file in the Assets/Obfuz directory, and add Assets/Obfuz/call-obfuscation.xml to CallObfusSettings.RuleFiles.
The content is as follows:
<?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>
Generate Encryption Virtual Machine and Keys
- Run the menu
Obfuz/GenerateEncryptionVMto generate encryption virtual machine code. The default generated code file isAssets/Obfuz/GeneratedEncryptionVirtualMachine.cs. - Run the menu
Obfuz/GenerateSecretKeyFileto generate two key files. The default output files areAssets/Resources/Obfuz/defaultStaticSecretKey.bytesandAssets/Resources/Obfuz/defaultDynamicSecretKey.bytes
Add Test Code
There are many files, please refer directly to CustomConfigure.
Build & Run
Click Build And Run in the Player Settings window.
View Obfuscated Assembly-CSharp Code
Use ILSpy to open Library/Obfuz/{buildTarget}/ObfuscatedAssemblies/Assembly-CSharp.dll.