Skip to main content

构建过程中执行混淆

Obfuz会自动在Unity的构建过程中执行混淆操作。

原理

Obfuz.Unity.ObfuscationProcess实现了IPostBuildPlayerScriptDLLs接口,在回调事件中执行了混淆操作。

设置

ObfuzSettings中包含所有混淆设置,详细见设置

启用与禁用构建过程中的混淆行为

ObfuzSettings.Enable选项指示是否在构建管线中进行混淆。如果取消此选项,则在构建过程中不会执行混淆操作。

此选项只影响构建过程,不影响开发者主动调用Obfuscator执行混淆操作。

混淆事件

Obfuz提供两个混淆事件:

  • Obfuz.Unity.ObfuscationBeginEventArgs
  • Obfuz.Unity.ObfuscationEndEventArgs

调用ObfuscationProcess.OnObfuscatioinBegin += YourCallback监听混淆开始事件, 调用ObfuscationProcess.OnObfuscatioinEnd += YourCallback监听混淆开始事件。

实践中建议使用[InitializOnLoadMethod]特性在加载完程序集后即监听混淆事件,示例代码如下:


public class TestObfuscationEvent
{
[InitializeOnLoadMethod]
private static void Init()
{
ObfuscationProcess.OnObfuscationBegin += OnObfuscationBegin;
ObfuscationProcess.OnObfuscationEnd += OnObfuscationEnd;
}

private static void OnObfuscationBegin(ObfuscationBeginEventArgs args)
{
Debug.Log($"OnObfuscationBegin");
}

private static void OnObfuscationEnd(ObfuscationEndEventArgs args)
{
Debug.Log($"OnObfuscationEnd");
}
}

获得混淆前的程序集和混淆后的程序集

混淆流程会修改AssemblySettings.AssembliesToObfuscateAssemblySettings.NonObfuscatedButReferenceingObfuscatedAssemblies列表中所有程序集。

  • 在混淆前,这些原始程序集会被复制到Libaray/Obfuz/{buildTarget}/OriginalAssemblies目录。
  • 混淆后的程序集会被复制到Libaray/Obfuz/{buildTarget}/ObfuscatedAssemblies目录。