From 291bcd7529585cb0c4226400107b48091e0ea3fb Mon Sep 17 00:00:00 2001 From: walon Date: Sat, 3 May 2025 22:00:59 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E6=9E=84=EF=BC=8C=E5=85=81=E8=AE=B8?= =?UTF-8?q?=E9=80=9A=E8=BF=87=20enabledObfuscationPasses=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E5=BC=80=E5=90=AF=E5=93=AA=E4=BA=9BPass?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Editor/Obfuscator.cs | 5 ----- Editor/ObfuscatorBuilder.cs | 26 ++++++++++++++++++++----- Editor/Settings/ObfuzSettingProvider.cs | 3 +++ Editor/Settings/ObfuzSettings.cs | 22 +++++++++++++++++++++ 4 files changed, 46 insertions(+), 10 deletions(-) diff --git a/Editor/Obfuscator.cs b/Editor/Obfuscator.cs index da5a50a..5fff1dd 100644 --- a/Editor/Obfuscator.cs +++ b/Editor/Obfuscator.cs @@ -43,11 +43,6 @@ namespace Obfuz _pipeline.AddPass(pass); } - //_pipeline.AddPass(new MemoryEncryptionPass()); - ////_pipeline.AddPass(new ProxyCallPass()); - //_pipeline.AddPass(new ExprObfuscationPass()); - //_pipeline.AddPass(new DataVirtualizationPass()); - //_pipeline.AddPass(new RenameSymbolPass()); _pipeline.AddPass(new CleanUpInstructionPass()); diff --git a/Editor/ObfuscatorBuilder.cs b/Editor/ObfuscatorBuilder.cs index db58b7d..8bf4810 100644 --- a/Editor/ObfuscatorBuilder.cs +++ b/Editor/ObfuscatorBuilder.cs @@ -71,11 +71,27 @@ namespace Obfuz _assemblySearchDirs = settings.extraAssemblySearchDirs.ToList(), _obfuscatedAssemblyOutputDir = settings.GetObfuscatedAssemblyOutputDir(target), }; - builder.AddPass(new MemoryEncryptionPass()); - builder.AddPass(new ProxyCallPass()); - builder.AddPass(new ExprObfuscationPass()); - builder.AddPass(new DataVirtualizationPass()); - builder.AddPass(new RenameSymbolPass(settings.ruleFiles.ToList(), settings.mappingFile)); + ObfuscationPassType obfuscationPasses = settings.enabledObfuscationPasses; + if (obfuscationPasses.HasFlag(ObfuscationPassType.MemoryEncryption)) + { + builder.AddPass(new MemoryEncryptionPass()); + } + if (obfuscationPasses.HasFlag(ObfuscationPassType.CallProxy)) + { + builder.AddPass(new ProxyCallPass()); + } + if (obfuscationPasses.HasFlag(ObfuscationPassType.ConstEncryption)) + { + builder.AddPass(new DataVirtualizationPass()); + } + if (obfuscationPasses.HasFlag(ObfuscationPassType.ExprObfuscation)) + { + builder.AddPass(new ExprObfuscationPass()); + } + if (obfuscationPasses.HasFlag(ObfuscationPassType.SymbolObfuscation)) + { + builder.AddPass(new RenameSymbolPass(settings.ruleFiles.ToList(), settings.mappingFile)); + } return builder; } } diff --git a/Editor/Settings/ObfuzSettingProvider.cs b/Editor/Settings/ObfuzSettingProvider.cs index bed7976..9a486dd 100644 --- a/Editor/Settings/ObfuzSettingProvider.cs +++ b/Editor/Settings/ObfuzSettingProvider.cs @@ -31,6 +31,7 @@ namespace Obfuz private SerializedProperty _enable; private SerializedProperty _toObfuscatedAssemblyNames; private SerializedProperty _notObfuscatedAssemblyNamesReferencingObfuscated; + private SerializedProperty _enabledObfuscationPasses; private SerializedProperty _mappingFile; private SerializedProperty _ruleFiles; private SerializedProperty _extraAssemblySearchDirs; @@ -53,6 +54,7 @@ namespace Obfuz _enable = _serializedObject.FindProperty("enable"); _toObfuscatedAssemblyNames = _serializedObject.FindProperty("toObfuscatedAssemblyNames"); _notObfuscatedAssemblyNamesReferencingObfuscated = _serializedObject.FindProperty("notObfuscatedAssemblyNamesReferencingObfuscated"); + _enabledObfuscationPasses = _serializedObject.FindProperty("enabledObfuscationPasses"); _mappingFile = _serializedObject.FindProperty("mappingFile"); _ruleFiles = _serializedObject.FindProperty("ruleFiles"); _extraAssemblySearchDirs = _serializedObject.FindProperty("extraAssemblySearchDirs"); @@ -78,6 +80,7 @@ namespace Obfuz EditorGUILayout.PropertyField(_enable); EditorGUILayout.PropertyField(_toObfuscatedAssemblyNames); EditorGUILayout.PropertyField(_notObfuscatedAssemblyNamesReferencingObfuscated); + EditorGUILayout.PropertyField(_enabledObfuscationPasses); EditorGUILayout.PropertyField(_mappingFile); EditorGUILayout.PropertyField(_ruleFiles); EditorGUILayout.PropertyField(_extraAssemblySearchDirs); diff --git a/Editor/Settings/ObfuzSettings.cs b/Editor/Settings/ObfuzSettings.cs index 27954bf..7da3fb7 100644 --- a/Editor/Settings/ObfuzSettings.cs +++ b/Editor/Settings/ObfuzSettings.cs @@ -1,3 +1,4 @@ +using System; using System.Collections.Generic; using System.IO; using System.Runtime.Remoting.Messaging; @@ -7,6 +8,24 @@ using UnityEngine; namespace Obfuz { + [Flags] + public enum ObfuscationPassType + { + None = 0, + + ConstEncryption = 0x1, + MemoryEncryption = 0x2, + + SymbolObfuscation = 0x100, + CallProxy = 0x200, + ExprObfuscation = 0x400, + ControlFlowObfuscation = 0x800, + + + AllDataEncryption = ConstEncryption | MemoryEncryption, + AllCodeObfuscation = SymbolObfuscation | CallProxy | ExprObfuscation | ControlFlowObfuscation, + All = AllDataEncryption | AllCodeObfuscation, + } public class ObfuzSettings : ScriptableObject { @@ -19,6 +38,9 @@ namespace Obfuz [Tooltip("name of assemblies not obfuscated but reference assemblies to obfuscated ")] public string[] notObfuscatedAssemblyNamesReferencingObfuscated; + [Tooltip("enable obfuscation pass")] + public ObfuscationPassType enabledObfuscationPasses = ObfuscationPassType.All; + [Tooltip("path of mapping.xml")] public string mappingFile = "Assets/Obfuz/mapping.xml";