From f7b08cc6cbec394eb52a305a35e9293c0ab88933 Mon Sep 17 00:00:00 2001 From: walon Date: Sun, 4 May 2025 19:24:14 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=A7=E8=A7=84=E6=A8=A1=E9=87=8D=E6=9E=84?= =?UTF-8?q?=EF=BC=8C=E8=B0=83=E6=95=B4=E7=9B=AE=E5=BD=95=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...{ObfuzProcess.cs => ObfuscationProcess.cs} | 8 +-- Editor/Emit/RvaDataAllocator.cs | 2 +- Editor/Menus/HybridCLRMenu.cs | 16 ----- .../CallObfus}/ConfigProxyCallPolicy.cs | 0 .../CallObfus}/DefaultProxyCallObfuscator.cs | 0 .../CallObfus}/IProxyCallObfuscator.cs | 0 .../CallObfus}/IProxyCallPolicy.cs | 0 .../CallObfus}/ProxyCallObfuscatorBase.cs | 0 .../CallObfus}/ProxyCallPass.cs | 4 +- .../CallObfus}/ProxyCallPolicyBase.cs | 0 .../CleanUp}/CleanUpInstructionPass.cs | 6 +- .../ConfigDataObfuscationPolicy.cs | 0 .../ConstObfus}/DataObfuscationPolicyBase.cs | 0 .../ConstObfus}/DataVirtualizationPass.cs | 4 +- .../ConstObfus}/DefaultDataObfuscator.cs | 0 .../ConstObfus}/IDataObfuscationPolicy.cs | 0 .../ConstObfus}/IDataObfuscator.cs | 0 .../ExprObfus}/ExprObfuscationPass.cs | 6 +- Editor/{ => ObfusPass}/IObfuscationPass.cs | 6 +- .../MemEncrypt/ConfigEncryptionPolicy.cs | 0 .../MemEncrypt/DefaultMemoryEncryptor.cs | 0 .../MemEncrypt/EncryptionPolicyBase.cs | 0 .../MemEncrypt/IEncryptionPolicy.cs | 0 .../MemEncrypt/IMemoryEncryptor.cs | 0 .../MemEncrypt/MemoryEncryptionPass.cs | 4 +- .../MemEncrypt/MemoryEncryptorBase.cs | 0 .../MethodBodyObfuscationPassBase.cs | 2 +- Editor/ObfusPass/ObfuscationPassBase.cs | 13 ++++ .../ObfuscationPassContext.cs} | 3 +- .../SymbolObfus}/CacheRenamePolicy.cs | 0 .../SymbolObfus}/CombineRenamePolicy.cs | 0 .../SymbolObfus}/INameMaker.cs | 0 .../SymbolObfus}/INameScope.cs | 0 .../SymbolObfus}/IRenamePolicy.cs | 0 .../SymbolObfus}/NameMaker.cs | 0 .../SymbolObfus}/NameMakerBase.cs | 0 .../SymbolObfus}/NameMakerFactory.cs | 0 .../SymbolObfus}/NameScope.cs | 0 .../SymbolObfus}/NameScopeBase.cs | 0 .../SymbolObfus}/ObfuscateRuleConfig.cs | 1 + .../SymbolObfus}/RenamePolicyBase.cs | 0 .../SymbolObfus}/RenameRecordMap.cs | 0 .../SymbolObfus}/RenameSymbolPass.cs | 6 +- .../SymbolObfus}/SymbolRename.cs | 4 +- .../SymbolObfus}/SystemRenamePolicy.cs | 0 .../SymbolObfus}/TestNameMaker.cs | 2 +- .../SymbolObfus}/UnityRenamePolicy.cs | 0 .../VirtualMethodGroupCalculator.cs | 0 Editor/ObfuscationPassBase.cs | 13 ---- Editor/Obfuscator.cs | 10 ++- Editor/ObfuscatorBuilder.cs | 2 +- Editor/{ObfuzPipeline.cs => Pipeline.cs} | 10 +-- Editor/Settings/EditorStatusWatcher.cs | 28 --------- ...ngProvider.cs => ObfuzSettingsProvider.cs} | 62 +++++++------------ Editor/Utils/AssemblyCache.cs | 2 +- Editor/Utils/AssemblyResolverBase.cs | 2 +- Editor/Utils/CollectionExtensions.cs | 4 +- Editor/Utils/FileUtil.cs | 2 +- Editor/Utils/HashUtil.cs | 2 +- Editor/Utils/IAssemblyResolver.cs | 2 +- Editor/Utils/MetaUtil.cs | 6 -- Editor/Utils/NameMatcher.cs | 2 +- Editor/Utils/PathAssemblyResolver.cs | 2 +- Editor/Utils/ThisArgType.cs | 9 +++ Editor/Utils/TypeSigUtil.cs | 2 +- 65 files changed, 94 insertions(+), 153 deletions(-) rename Editor/BuildProcess/{ObfuzProcess.cs => ObfuscationProcess.cs} (96%) delete mode 100644 Editor/Menus/HybridCLRMenu.cs rename Editor/{ProxyCall => ObfusPass/CallObfus}/ConfigProxyCallPolicy.cs (100%) rename Editor/{ProxyCall => ObfusPass/CallObfus}/DefaultProxyCallObfuscator.cs (100%) rename Editor/{ProxyCall => ObfusPass/CallObfus}/IProxyCallObfuscator.cs (100%) rename Editor/{ProxyCall => ObfusPass/CallObfus}/IProxyCallPolicy.cs (100%) rename Editor/{ProxyCall => ObfusPass/CallObfus}/ProxyCallObfuscatorBase.cs (100%) rename Editor/{ProxyCall => ObfusPass/CallObfus}/ProxyCallPass.cs (95%) rename Editor/{ProxyCall => ObfusPass/CallObfus}/ProxyCallPolicyBase.cs (100%) rename Editor/{ => ObfusPass/CleanUp}/CleanUpInstructionPass.cs (83%) rename Editor/{Virtualization => ObfusPass/ConstObfus}/ConfigDataObfuscationPolicy.cs (100%) rename Editor/{Virtualization => ObfusPass/ConstObfus}/DataObfuscationPolicyBase.cs (100%) rename Editor/{Virtualization => ObfusPass/ConstObfus}/DataVirtualizationPass.cs (97%) rename Editor/{Virtualization => ObfusPass/ConstObfus}/DefaultDataObfuscator.cs (100%) rename Editor/{Virtualization => ObfusPass/ConstObfus}/IDataObfuscationPolicy.cs (100%) rename Editor/{Virtualization => ObfusPass/ConstObfus}/IDataObfuscator.cs (100%) rename Editor/{ExprObfuscation => ObfusPass/ExprObfus}/ExprObfuscationPass.cs (82%) rename Editor/{ => ObfusPass}/IObfuscationPass.cs (56%) rename Editor/{ => ObfusPass}/MemEncrypt/ConfigEncryptionPolicy.cs (100%) rename Editor/{ => ObfusPass}/MemEncrypt/DefaultMemoryEncryptor.cs (100%) rename Editor/{ => ObfusPass}/MemEncrypt/EncryptionPolicyBase.cs (100%) rename Editor/{ => ObfusPass}/MemEncrypt/IEncryptionPolicy.cs (100%) rename Editor/{ => ObfusPass}/MemEncrypt/IMemoryEncryptor.cs (100%) rename Editor/{ => ObfusPass}/MemEncrypt/MemoryEncryptionPass.cs (95%) rename Editor/{ => ObfusPass}/MemEncrypt/MemoryEncryptorBase.cs (100%) rename Editor/{ => ObfusPass}/MethodBodyObfuscationPassBase.cs (97%) create mode 100644 Editor/ObfusPass/ObfuscationPassBase.cs rename Editor/{ObfuscatorContext.cs => ObfusPass/ObfuscationPassContext.cs} (90%) rename Editor/{Rename => ObfusPass/SymbolObfus}/CacheRenamePolicy.cs (100%) rename Editor/{Rename => ObfusPass/SymbolObfus}/CombineRenamePolicy.cs (100%) rename Editor/{Rename => ObfusPass/SymbolObfus}/INameMaker.cs (100%) rename Editor/{Rename => ObfusPass/SymbolObfus}/INameScope.cs (100%) rename Editor/{Rename => ObfusPass/SymbolObfus}/IRenamePolicy.cs (100%) rename Editor/{Rename => ObfusPass/SymbolObfus}/NameMaker.cs (100%) rename Editor/{Rename => ObfusPass/SymbolObfus}/NameMakerBase.cs (100%) rename Editor/{Rename => ObfusPass/SymbolObfus}/NameMakerFactory.cs (100%) rename Editor/{Rename => ObfusPass/SymbolObfus}/NameScope.cs (100%) rename Editor/{Rename => ObfusPass/SymbolObfus}/NameScopeBase.cs (100%) rename Editor/{Rename => ObfusPass/SymbolObfus}/ObfuscateRuleConfig.cs (99%) rename Editor/{Rename => ObfusPass/SymbolObfus}/RenamePolicyBase.cs (100%) rename Editor/{Rename => ObfusPass/SymbolObfus}/RenameRecordMap.cs (100%) rename Editor/{Rename => ObfusPass/SymbolObfus}/RenameSymbolPass.cs (76%) rename Editor/{Rename => ObfusPass/SymbolObfus}/SymbolRename.cs (99%) rename Editor/{Rename => ObfusPass/SymbolObfus}/SystemRenamePolicy.cs (100%) rename Editor/{Rename => ObfusPass/SymbolObfus}/TestNameMaker.cs (86%) rename Editor/{Rename => ObfusPass/SymbolObfus}/UnityRenamePolicy.cs (100%) rename Editor/{Rename => ObfusPass/SymbolObfus}/VirtualMethodGroupCalculator.cs (100%) delete mode 100644 Editor/ObfuscationPassBase.cs rename Editor/{ObfuzPipeline.cs => Pipeline.cs} (71%) delete mode 100644 Editor/Settings/EditorStatusWatcher.cs rename Editor/Settings/{ObfuzSettingProvider.cs => ObfuzSettingsProvider.cs} (62%) create mode 100644 Editor/Utils/ThisArgType.cs diff --git a/Editor/BuildProcess/ObfuzProcess.cs b/Editor/BuildProcess/ObfuscationProcess.cs similarity index 96% rename from Editor/BuildProcess/ObfuzProcess.cs rename to Editor/BuildProcess/ObfuscationProcess.cs index eca66d7..ba0a92d 100644 --- a/Editor/BuildProcess/ObfuzProcess.cs +++ b/Editor/BuildProcess/ObfuscationProcess.cs @@ -7,16 +7,16 @@ using System.Threading.Tasks; using UnityEditor.Build; using UnityEditor; using UnityEditor.Build.Reporting; -using UnityEngine.SceneManagement; using UnityEngine; using UnityEditor.Compilation; -using System.Reflection; +using Obfuz.Utils; +using FileUtil = Obfuz.Utils.FileUtil; -namespace Obfuz +namespace Obfuz.BuildProcess { #if UNITY_2019_1_OR_NEWER - public class ObfuzProcess : IPreprocessBuildWithReport, IPostprocessBuildWithReport + public class ObfuscationProcess : IPreprocessBuildWithReport, IPostprocessBuildWithReport { private static bool s_obfuscated = false; diff --git a/Editor/Emit/RvaDataAllocator.cs b/Editor/Emit/RvaDataAllocator.cs index 78a4cdc..14434fa 100644 --- a/Editor/Emit/RvaDataAllocator.cs +++ b/Editor/Emit/RvaDataAllocator.cs @@ -72,7 +72,7 @@ namespace Obfuz.Emit if (_rvaTypeDef == null) { _module.EnableTypeDefFindCache = false; - //_rvaTypeDef = _module.Find("$ObfuzRVA$", false); + //_rvaTypeDef = _module.Find("$ObfuzRVA$", true); //if (_rvaTypeDef != null) //{ // throw new Exception($"can't obfuscate a obfuscated assembly"); diff --git a/Editor/Menus/HybridCLRMenu.cs b/Editor/Menus/HybridCLRMenu.cs deleted file mode 100644 index 08348d9..0000000 --- a/Editor/Menus/HybridCLRMenu.cs +++ /dev/null @@ -1,16 +0,0 @@ - -#if USE_HYBRIDCLR -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Obfuz.Menus -{ - public static class HybridCLRMenu - { - } -} - -#endif \ No newline at end of file diff --git a/Editor/ProxyCall/ConfigProxyCallPolicy.cs b/Editor/ObfusPass/CallObfus/ConfigProxyCallPolicy.cs similarity index 100% rename from Editor/ProxyCall/ConfigProxyCallPolicy.cs rename to Editor/ObfusPass/CallObfus/ConfigProxyCallPolicy.cs diff --git a/Editor/ProxyCall/DefaultProxyCallObfuscator.cs b/Editor/ObfusPass/CallObfus/DefaultProxyCallObfuscator.cs similarity index 100% rename from Editor/ProxyCall/DefaultProxyCallObfuscator.cs rename to Editor/ObfusPass/CallObfus/DefaultProxyCallObfuscator.cs diff --git a/Editor/ProxyCall/IProxyCallObfuscator.cs b/Editor/ObfusPass/CallObfus/IProxyCallObfuscator.cs similarity index 100% rename from Editor/ProxyCall/IProxyCallObfuscator.cs rename to Editor/ObfusPass/CallObfus/IProxyCallObfuscator.cs diff --git a/Editor/ProxyCall/IProxyCallPolicy.cs b/Editor/ObfusPass/CallObfus/IProxyCallPolicy.cs similarity index 100% rename from Editor/ProxyCall/IProxyCallPolicy.cs rename to Editor/ObfusPass/CallObfus/IProxyCallPolicy.cs diff --git a/Editor/ProxyCall/ProxyCallObfuscatorBase.cs b/Editor/ObfusPass/CallObfus/ProxyCallObfuscatorBase.cs similarity index 100% rename from Editor/ProxyCall/ProxyCallObfuscatorBase.cs rename to Editor/ObfusPass/CallObfus/ProxyCallObfuscatorBase.cs diff --git a/Editor/ProxyCall/ProxyCallPass.cs b/Editor/ObfusPass/CallObfus/ProxyCallPass.cs similarity index 95% rename from Editor/ProxyCall/ProxyCallPass.cs rename to Editor/ObfusPass/CallObfus/ProxyCallPass.cs index 622db9f..9e80e89 100644 --- a/Editor/ProxyCall/ProxyCallPass.cs +++ b/Editor/ObfusPass/CallObfus/ProxyCallPass.cs @@ -25,12 +25,12 @@ namespace Obfuz.DynamicProxy _dynamicProxyObfuscator = new DefaultProxyCallObfuscator(_random); } - public override void Stop(ObfuscatorContext ctx) + public override void Stop(ObfuscationPassContext ctx) { _dynamicProxyObfuscator.Done(); } - public override void Start(ObfuscatorContext ctx) + public override void Start(ObfuscationPassContext ctx) { } diff --git a/Editor/ProxyCall/ProxyCallPolicyBase.cs b/Editor/ObfusPass/CallObfus/ProxyCallPolicyBase.cs similarity index 100% rename from Editor/ProxyCall/ProxyCallPolicyBase.cs rename to Editor/ObfusPass/CallObfus/ProxyCallPolicyBase.cs diff --git a/Editor/CleanUpInstructionPass.cs b/Editor/ObfusPass/CleanUp/CleanUpInstructionPass.cs similarity index 83% rename from Editor/CleanUpInstructionPass.cs rename to Editor/ObfusPass/CleanUp/CleanUpInstructionPass.cs index 9e75b6f..17eb9ca 100644 --- a/Editor/CleanUpInstructionPass.cs +++ b/Editor/ObfusPass/CleanUp/CleanUpInstructionPass.cs @@ -10,16 +10,16 @@ namespace Obfuz { public class CleanUpInstructionPass : ObfuscationPassBase { - public override void Start(ObfuscatorContext ctx) + public override void Start(ObfuscationPassContext ctx) { } - public override void Stop(ObfuscatorContext ctx) + public override void Stop(ObfuscationPassContext ctx) { } - public override void Process(ObfuscatorContext ctx) + public override void Process(ObfuscationPassContext ctx) { foreach (ModuleDef mod in ctx.toObfuscatedModules) { diff --git a/Editor/Virtualization/ConfigDataObfuscationPolicy.cs b/Editor/ObfusPass/ConstObfus/ConfigDataObfuscationPolicy.cs similarity index 100% rename from Editor/Virtualization/ConfigDataObfuscationPolicy.cs rename to Editor/ObfusPass/ConstObfus/ConfigDataObfuscationPolicy.cs diff --git a/Editor/Virtualization/DataObfuscationPolicyBase.cs b/Editor/ObfusPass/ConstObfus/DataObfuscationPolicyBase.cs similarity index 100% rename from Editor/Virtualization/DataObfuscationPolicyBase.cs rename to Editor/ObfusPass/ConstObfus/DataObfuscationPolicyBase.cs diff --git a/Editor/Virtualization/DataVirtualizationPass.cs b/Editor/ObfusPass/ConstObfus/DataVirtualizationPass.cs similarity index 97% rename from Editor/Virtualization/DataVirtualizationPass.cs rename to Editor/ObfusPass/ConstObfus/DataVirtualizationPass.cs index 755ae47..e0f1713 100644 --- a/Editor/Virtualization/DataVirtualizationPass.cs +++ b/Editor/ObfusPass/ConstObfus/DataVirtualizationPass.cs @@ -16,13 +16,13 @@ namespace Obfuz.Virtualization private IDataObfuscationPolicy _dataObfuscatorPolicy; private IDataObfuscator _dataObfuscator; - public override void Start(ObfuscatorContext ctx) + public override void Start(ObfuscationPassContext ctx) { _dataObfuscatorPolicy = new ConfigDataObfuscationPolicy(); _dataObfuscator = new DefaultDataObfuscator(); } - public override void Stop(ObfuscatorContext ctx) + public override void Stop(ObfuscationPassContext ctx) { _dataObfuscator.Done(); } diff --git a/Editor/Virtualization/DefaultDataObfuscator.cs b/Editor/ObfusPass/ConstObfus/DefaultDataObfuscator.cs similarity index 100% rename from Editor/Virtualization/DefaultDataObfuscator.cs rename to Editor/ObfusPass/ConstObfus/DefaultDataObfuscator.cs diff --git a/Editor/Virtualization/IDataObfuscationPolicy.cs b/Editor/ObfusPass/ConstObfus/IDataObfuscationPolicy.cs similarity index 100% rename from Editor/Virtualization/IDataObfuscationPolicy.cs rename to Editor/ObfusPass/ConstObfus/IDataObfuscationPolicy.cs diff --git a/Editor/Virtualization/IDataObfuscator.cs b/Editor/ObfusPass/ConstObfus/IDataObfuscator.cs similarity index 100% rename from Editor/Virtualization/IDataObfuscator.cs rename to Editor/ObfusPass/ConstObfus/IDataObfuscator.cs diff --git a/Editor/ExprObfuscation/ExprObfuscationPass.cs b/Editor/ObfusPass/ExprObfus/ExprObfuscationPass.cs similarity index 82% rename from Editor/ExprObfuscation/ExprObfuscationPass.cs rename to Editor/ObfusPass/ExprObfus/ExprObfuscationPass.cs index c304fb9..72c6879 100644 --- a/Editor/ExprObfuscation/ExprObfuscationPass.cs +++ b/Editor/ObfusPass/ExprObfus/ExprObfuscationPass.cs @@ -6,18 +6,18 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace Obfuz.ExprObfuscation +namespace Obfuz.ExprObfus { public class ExprObfuscationPass : MethodBodyObfuscationPassBase { - public override void Start(ObfuscatorContext ctx) + public override void Start(ObfuscationPassContext ctx) { } - public override void Stop(ObfuscatorContext ctx) + public override void Stop(ObfuscationPassContext ctx) { } diff --git a/Editor/IObfuscationPass.cs b/Editor/ObfusPass/IObfuscationPass.cs similarity index 56% rename from Editor/IObfuscationPass.cs rename to Editor/ObfusPass/IObfuscationPass.cs index 929573b..6d1acb4 100644 --- a/Editor/IObfuscationPass.cs +++ b/Editor/ObfusPass/IObfuscationPass.cs @@ -8,10 +8,10 @@ namespace Obfuz { public interface IObfuscationPass { - void Start(ObfuscatorContext ctx); + void Start(ObfuscationPassContext ctx); - void Stop(ObfuscatorContext ctx); + void Stop(ObfuscationPassContext ctx); - void Process(ObfuscatorContext ctx); + void Process(ObfuscationPassContext ctx); } } diff --git a/Editor/MemEncrypt/ConfigEncryptionPolicy.cs b/Editor/ObfusPass/MemEncrypt/ConfigEncryptionPolicy.cs similarity index 100% rename from Editor/MemEncrypt/ConfigEncryptionPolicy.cs rename to Editor/ObfusPass/MemEncrypt/ConfigEncryptionPolicy.cs diff --git a/Editor/MemEncrypt/DefaultMemoryEncryptor.cs b/Editor/ObfusPass/MemEncrypt/DefaultMemoryEncryptor.cs similarity index 100% rename from Editor/MemEncrypt/DefaultMemoryEncryptor.cs rename to Editor/ObfusPass/MemEncrypt/DefaultMemoryEncryptor.cs diff --git a/Editor/MemEncrypt/EncryptionPolicyBase.cs b/Editor/ObfusPass/MemEncrypt/EncryptionPolicyBase.cs similarity index 100% rename from Editor/MemEncrypt/EncryptionPolicyBase.cs rename to Editor/ObfusPass/MemEncrypt/EncryptionPolicyBase.cs diff --git a/Editor/MemEncrypt/IEncryptionPolicy.cs b/Editor/ObfusPass/MemEncrypt/IEncryptionPolicy.cs similarity index 100% rename from Editor/MemEncrypt/IEncryptionPolicy.cs rename to Editor/ObfusPass/MemEncrypt/IEncryptionPolicy.cs diff --git a/Editor/MemEncrypt/IMemoryEncryptor.cs b/Editor/ObfusPass/MemEncrypt/IMemoryEncryptor.cs similarity index 100% rename from Editor/MemEncrypt/IMemoryEncryptor.cs rename to Editor/ObfusPass/MemEncrypt/IMemoryEncryptor.cs diff --git a/Editor/MemEncrypt/MemoryEncryptionPass.cs b/Editor/ObfusPass/MemEncrypt/MemoryEncryptionPass.cs similarity index 95% rename from Editor/MemEncrypt/MemoryEncryptionPass.cs rename to Editor/ObfusPass/MemEncrypt/MemoryEncryptionPass.cs index be15fd2..6c3765d 100644 --- a/Editor/MemEncrypt/MemoryEncryptionPass.cs +++ b/Editor/ObfusPass/MemEncrypt/MemoryEncryptionPass.cs @@ -14,12 +14,12 @@ namespace Obfuz.MemEncrypt private readonly IEncryptionPolicy _encryptionPolicy = new ConfigEncryptionPolicy(); private readonly IMemoryEncryptor _memoryEncryptor = new DefaultMemoryEncryptor(); - public override void Start(ObfuscatorContext ctx) + public override void Start(ObfuscationPassContext ctx) { } - public override void Stop(ObfuscatorContext ctx) + public override void Stop(ObfuscationPassContext ctx) { } diff --git a/Editor/MemEncrypt/MemoryEncryptorBase.cs b/Editor/ObfusPass/MemEncrypt/MemoryEncryptorBase.cs similarity index 100% rename from Editor/MemEncrypt/MemoryEncryptorBase.cs rename to Editor/ObfusPass/MemEncrypt/MemoryEncryptorBase.cs diff --git a/Editor/MethodBodyObfuscationPassBase.cs b/Editor/ObfusPass/MethodBodyObfuscationPassBase.cs similarity index 97% rename from Editor/MethodBodyObfuscationPassBase.cs rename to Editor/ObfusPass/MethodBodyObfuscationPassBase.cs index 5b374d0..46f33dd 100644 --- a/Editor/MethodBodyObfuscationPassBase.cs +++ b/Editor/ObfusPass/MethodBodyObfuscationPassBase.cs @@ -9,7 +9,7 @@ namespace Obfuz { protected abstract bool NeedObfuscateMethod(MethodDef method); - public override void Process(ObfuscatorContext ctx) + public override void Process(ObfuscationPassContext ctx) { foreach (ModuleDef mod in ctx.toObfuscatedModules) { diff --git a/Editor/ObfusPass/ObfuscationPassBase.cs b/Editor/ObfusPass/ObfuscationPassBase.cs new file mode 100644 index 0000000..b999d69 --- /dev/null +++ b/Editor/ObfusPass/ObfuscationPassBase.cs @@ -0,0 +1,13 @@ +using Obfuz.Emit; + +namespace Obfuz +{ + public abstract class ObfuscationPassBase : IObfuscationPass + { + public abstract void Start(ObfuscationPassContext ctx); + + public abstract void Stop(ObfuscationPassContext ctx); + + public abstract void Process(ObfuscationPassContext ctx); + } +} diff --git a/Editor/ObfuscatorContext.cs b/Editor/ObfusPass/ObfuscationPassContext.cs similarity index 90% rename from Editor/ObfuscatorContext.cs rename to Editor/ObfusPass/ObfuscationPassContext.cs index 06ed063..e15b91a 100644 --- a/Editor/ObfuscatorContext.cs +++ b/Editor/ObfusPass/ObfuscationPassContext.cs @@ -1,5 +1,6 @@ using dnlib.DotNet; using Obfuz.Rename; +using Obfuz.Utils; using System; using System.Collections.Generic; using System.Linq; @@ -9,7 +10,7 @@ using System.Threading.Tasks; namespace Obfuz { - public class ObfuscatorContext + public class ObfuscationPassContext { public AssemblyCache assemblyCache; diff --git a/Editor/Rename/CacheRenamePolicy.cs b/Editor/ObfusPass/SymbolObfus/CacheRenamePolicy.cs similarity index 100% rename from Editor/Rename/CacheRenamePolicy.cs rename to Editor/ObfusPass/SymbolObfus/CacheRenamePolicy.cs diff --git a/Editor/Rename/CombineRenamePolicy.cs b/Editor/ObfusPass/SymbolObfus/CombineRenamePolicy.cs similarity index 100% rename from Editor/Rename/CombineRenamePolicy.cs rename to Editor/ObfusPass/SymbolObfus/CombineRenamePolicy.cs diff --git a/Editor/Rename/INameMaker.cs b/Editor/ObfusPass/SymbolObfus/INameMaker.cs similarity index 100% rename from Editor/Rename/INameMaker.cs rename to Editor/ObfusPass/SymbolObfus/INameMaker.cs diff --git a/Editor/Rename/INameScope.cs b/Editor/ObfusPass/SymbolObfus/INameScope.cs similarity index 100% rename from Editor/Rename/INameScope.cs rename to Editor/ObfusPass/SymbolObfus/INameScope.cs diff --git a/Editor/Rename/IRenamePolicy.cs b/Editor/ObfusPass/SymbolObfus/IRenamePolicy.cs similarity index 100% rename from Editor/Rename/IRenamePolicy.cs rename to Editor/ObfusPass/SymbolObfus/IRenamePolicy.cs diff --git a/Editor/Rename/NameMaker.cs b/Editor/ObfusPass/SymbolObfus/NameMaker.cs similarity index 100% rename from Editor/Rename/NameMaker.cs rename to Editor/ObfusPass/SymbolObfus/NameMaker.cs diff --git a/Editor/Rename/NameMakerBase.cs b/Editor/ObfusPass/SymbolObfus/NameMakerBase.cs similarity index 100% rename from Editor/Rename/NameMakerBase.cs rename to Editor/ObfusPass/SymbolObfus/NameMakerBase.cs diff --git a/Editor/Rename/NameMakerFactory.cs b/Editor/ObfusPass/SymbolObfus/NameMakerFactory.cs similarity index 100% rename from Editor/Rename/NameMakerFactory.cs rename to Editor/ObfusPass/SymbolObfus/NameMakerFactory.cs diff --git a/Editor/Rename/NameScope.cs b/Editor/ObfusPass/SymbolObfus/NameScope.cs similarity index 100% rename from Editor/Rename/NameScope.cs rename to Editor/ObfusPass/SymbolObfus/NameScope.cs diff --git a/Editor/Rename/NameScopeBase.cs b/Editor/ObfusPass/SymbolObfus/NameScopeBase.cs similarity index 100% rename from Editor/Rename/NameScopeBase.cs rename to Editor/ObfusPass/SymbolObfus/NameScopeBase.cs diff --git a/Editor/Rename/ObfuscateRuleConfig.cs b/Editor/ObfusPass/SymbolObfus/ObfuscateRuleConfig.cs similarity index 99% rename from Editor/Rename/ObfuscateRuleConfig.cs rename to Editor/ObfusPass/SymbolObfus/ObfuscateRuleConfig.cs index 88ecff7..4b79803 100644 --- a/Editor/Rename/ObfuscateRuleConfig.cs +++ b/Editor/ObfusPass/SymbolObfus/ObfuscateRuleConfig.cs @@ -1,5 +1,6 @@ using dnlib.DotNet; using Obfuz.Rename; +using Obfuz.Utils; using System; using System.Collections.Generic; using System.Linq; diff --git a/Editor/Rename/RenamePolicyBase.cs b/Editor/ObfusPass/SymbolObfus/RenamePolicyBase.cs similarity index 100% rename from Editor/Rename/RenamePolicyBase.cs rename to Editor/ObfusPass/SymbolObfus/RenamePolicyBase.cs diff --git a/Editor/Rename/RenameRecordMap.cs b/Editor/ObfusPass/SymbolObfus/RenameRecordMap.cs similarity index 100% rename from Editor/Rename/RenameRecordMap.cs rename to Editor/ObfusPass/SymbolObfus/RenameRecordMap.cs diff --git a/Editor/Rename/RenameSymbolPass.cs b/Editor/ObfusPass/SymbolObfus/RenameSymbolPass.cs similarity index 76% rename from Editor/Rename/RenameSymbolPass.cs rename to Editor/ObfusPass/SymbolObfus/RenameSymbolPass.cs index b9d6e7f..6de4c9a 100644 --- a/Editor/Rename/RenameSymbolPass.cs +++ b/Editor/ObfusPass/SymbolObfus/RenameSymbolPass.cs @@ -15,17 +15,17 @@ namespace Obfuz.Rename _symbolRename = new SymbolRename(mappingXmlPath, obfuscationRuleFiles); } - public override void Start(ObfuscatorContext ctx) + public override void Start(ObfuscationPassContext ctx) { _symbolRename.Init(ctx); } - public override void Stop(ObfuscatorContext ctx) + public override void Stop(ObfuscationPassContext ctx) { _symbolRename.Save(); } - public override void Process(ObfuscatorContext ctx) + public override void Process(ObfuscationPassContext ctx) { _symbolRename.Process(); } diff --git a/Editor/Rename/SymbolRename.cs b/Editor/ObfusPass/SymbolObfus/SymbolRename.cs similarity index 99% rename from Editor/Rename/SymbolRename.cs rename to Editor/ObfusPass/SymbolObfus/SymbolRename.cs index 796bba3..3414245 100644 --- a/Editor/Rename/SymbolRename.cs +++ b/Editor/ObfusPass/SymbolObfus/SymbolRename.cs @@ -61,7 +61,7 @@ namespace Obfuz _virtualMethodGroupCalculator = new VirtualMethodGroupCalculator(); } - public void Init(ObfuscatorContext ctx) + public void Init(ObfuscationPassContext ctx) { _assemblyCache = ctx.assemblyCache; _toObfuscatedModules = ctx.toObfuscatedModules; @@ -75,7 +75,7 @@ namespace Obfuz BuildCustomAttributeArguments(); } - private static List BuildAssemblyReferenceInfos(ObfuscatorContext ctx) + private static List BuildAssemblyReferenceInfos(ObfuscationPassContext ctx) { var obfuzAssemblies = new List(); foreach (ModuleDef mod in ctx.obfuscatedAndNotObfuscatedModules) diff --git a/Editor/Rename/SystemRenamePolicy.cs b/Editor/ObfusPass/SymbolObfus/SystemRenamePolicy.cs similarity index 100% rename from Editor/Rename/SystemRenamePolicy.cs rename to Editor/ObfusPass/SymbolObfus/SystemRenamePolicy.cs diff --git a/Editor/Rename/TestNameMaker.cs b/Editor/ObfusPass/SymbolObfus/TestNameMaker.cs similarity index 86% rename from Editor/Rename/TestNameMaker.cs rename to Editor/ObfusPass/SymbolObfus/TestNameMaker.cs index d2472a7..686946a 100644 --- a/Editor/Rename/TestNameMaker.cs +++ b/Editor/ObfusPass/SymbolObfus/TestNameMaker.cs @@ -9,7 +9,7 @@ namespace Obfuz.Rename private int _nextIndex; protected override void BuildNewName(StringBuilder nameBuilder, string originalName) { - nameBuilder.Append($"{originalName}>{_nextIndex++}"); + nameBuilder.Append($"<{originalName}>{_nextIndex++}"); } } diff --git a/Editor/Rename/UnityRenamePolicy.cs b/Editor/ObfusPass/SymbolObfus/UnityRenamePolicy.cs similarity index 100% rename from Editor/Rename/UnityRenamePolicy.cs rename to Editor/ObfusPass/SymbolObfus/UnityRenamePolicy.cs diff --git a/Editor/Rename/VirtualMethodGroupCalculator.cs b/Editor/ObfusPass/SymbolObfus/VirtualMethodGroupCalculator.cs similarity index 100% rename from Editor/Rename/VirtualMethodGroupCalculator.cs rename to Editor/ObfusPass/SymbolObfus/VirtualMethodGroupCalculator.cs diff --git a/Editor/ObfuscationPassBase.cs b/Editor/ObfuscationPassBase.cs deleted file mode 100644 index ee6d99c..0000000 --- a/Editor/ObfuscationPassBase.cs +++ /dev/null @@ -1,13 +0,0 @@ -using Obfuz.Emit; - -namespace Obfuz -{ - public abstract class ObfuscationPassBase : IObfuscationPass - { - public abstract void Start(ObfuscatorContext ctx); - - public abstract void Stop(ObfuscatorContext ctx); - - public abstract void Process(ObfuscatorContext ctx); - } -} diff --git a/Editor/Obfuscator.cs b/Editor/Obfuscator.cs index 5bc0640..5ef9ea4 100644 --- a/Editor/Obfuscator.cs +++ b/Editor/Obfuscator.cs @@ -1,5 +1,6 @@ using dnlib.DotNet; using Obfuz.Emit; +using Obfuz.Utils; using System; using System.Collections.Generic; using System.IO; @@ -21,9 +22,9 @@ namespace Obfuz private readonly List _toObfuscatedModules = new List(); private readonly List _obfuscatedAndNotObfuscatedModules = new List(); - private readonly ObfuzPipeline _pipeline = new ObfuzPipeline(); + private readonly Pipeline _pipeline = new Pipeline(); - private ObfuscatorContext _ctx; + private ObfuscationPassContext _ctx; public Obfuscator(List toObfuscatedAssemblyNames, List notObfuscatedAssemblyNamesReferencingObfuscated, @@ -43,8 +44,6 @@ namespace Obfuz } _pipeline.AddPass(new CleanUpInstructionPass()); - - } public void Run() @@ -58,8 +57,7 @@ namespace Obfuz { LoadAssemblies(); - - _ctx = new ObfuscatorContext + _ctx = new ObfuscationPassContext { assemblyCache = _assemblyCache, toObfuscatedModules = _toObfuscatedModules, diff --git a/Editor/ObfuscatorBuilder.cs b/Editor/ObfuscatorBuilder.cs index 8bf4810..75febea 100644 --- a/Editor/ObfuscatorBuilder.cs +++ b/Editor/ObfuscatorBuilder.cs @@ -1,11 +1,11 @@ using Obfuz.DynamicProxy; -using Obfuz.ExprObfuscation; using Obfuz.MemEncrypt; using Obfuz.Rename; using System.Collections.Generic; using System.Linq; using Obfuz.Virtualization; using UnityEditor; +using Obfuz.ExprObfus; namespace Obfuz { diff --git a/Editor/ObfuzPipeline.cs b/Editor/Pipeline.cs similarity index 71% rename from Editor/ObfuzPipeline.cs rename to Editor/Pipeline.cs index b87acb1..08d9ae1 100644 --- a/Editor/ObfuzPipeline.cs +++ b/Editor/Pipeline.cs @@ -2,17 +2,17 @@ namespace Obfuz { - public class ObfuzPipeline + public class Pipeline { private readonly List _passes = new List(); - public ObfuzPipeline AddPass(IObfuscationPass pass) + public Pipeline AddPass(IObfuscationPass pass) { _passes.Add(pass); return this; } - public void Start(ObfuscatorContext ctx) + public void Start(ObfuscationPassContext ctx) { foreach (var pass in _passes) { @@ -20,7 +20,7 @@ namespace Obfuz } } - public void Stop(ObfuscatorContext ctx) + public void Stop(ObfuscationPassContext ctx) { foreach (var pass in _passes) @@ -29,7 +29,7 @@ namespace Obfuz } } - public void Run(ObfuscatorContext ctx) + public void Run(ObfuscationPassContext ctx) { foreach (var pass in _passes) { diff --git a/Editor/Settings/EditorStatusWatcher.cs b/Editor/Settings/EditorStatusWatcher.cs deleted file mode 100644 index bca43e3..0000000 --- a/Editor/Settings/EditorStatusWatcher.cs +++ /dev/null @@ -1,28 +0,0 @@ -using System; -using UnityEditor; -using UnityEditorInternal; - -namespace Obfuz -{ - - [InitializeOnLoad] - public static class EditorStatusWatcher - { - public static Action OnEditorFocused; - static bool isFocused; - static EditorStatusWatcher() => EditorApplication.update += Update; - static void Update() - { - if (isFocused != InternalEditorUtility.isApplicationActive) - { - isFocused = InternalEditorUtility.isApplicationActive; - if (isFocused) - { - _ = ObfuzSettings.Instance; - OnEditorFocused?.Invoke(); - } - } - } - } - -} \ No newline at end of file diff --git a/Editor/Settings/ObfuzSettingProvider.cs b/Editor/Settings/ObfuzSettingsProvider.cs similarity index 62% rename from Editor/Settings/ObfuzSettingProvider.cs rename to Editor/Settings/ObfuzSettingsProvider.cs index 9a486dd..618ff54 100644 --- a/Editor/Settings/ObfuzSettingProvider.cs +++ b/Editor/Settings/ObfuzSettingsProvider.cs @@ -42,10 +42,15 @@ namespace Obfuz public override void OnActivate(string searchContext, VisualElement rootElement) { - EditorStatusWatcher.OnEditorFocused += OnEditorFocused; InitGUI(); } + public override void OnDeactivate() + { + base.OnDeactivate(); + ObfuzSettings.Save(); + } + private void InitGUI() { var setting = ObfuzSettings.Instance; @@ -60,51 +65,28 @@ namespace Obfuz _extraAssemblySearchDirs = _serializedObject.FindProperty("extraAssemblySearchDirs"); } - private void OnEditorFocused() - { - InitGUI(); - Repaint(); - } - public override void OnGUI(string searchContext) { - using (CreateSettingsWindowGUIScope()) + if (_serializedObject == null||!_serializedObject.targetObject) { - if (_serializedObject == null||!_serializedObject.targetObject) - { - InitGUI(); - } - _serializedObject.Update(); - EditorGUI.BeginChangeCheck(); - - EditorGUILayout.PropertyField(_enable); - EditorGUILayout.PropertyField(_toObfuscatedAssemblyNames); - EditorGUILayout.PropertyField(_notObfuscatedAssemblyNamesReferencingObfuscated); - EditorGUILayout.PropertyField(_enabledObfuscationPasses); - EditorGUILayout.PropertyField(_mappingFile); - EditorGUILayout.PropertyField(_ruleFiles); - EditorGUILayout.PropertyField(_extraAssemblySearchDirs); - - if (EditorGUI.EndChangeCheck()) - { - _serializedObject.ApplyModifiedProperties(); - ObfuzSettings.Save(); - } + InitGUI(); } - } + _serializedObject.Update(); + EditorGUI.BeginChangeCheck(); - private IDisposable CreateSettingsWindowGUIScope() - { - var unityEditorAssembly = Assembly.GetAssembly(typeof(EditorWindow)); - var type = unityEditorAssembly.GetType("UnityEditor.SettingsWindow+GUIScope"); - return Activator.CreateInstance(type) as IDisposable; - } + EditorGUILayout.PropertyField(_enable); + EditorGUILayout.PropertyField(_toObfuscatedAssemblyNames); + EditorGUILayout.PropertyField(_notObfuscatedAssemblyNamesReferencingObfuscated); + EditorGUILayout.PropertyField(_enabledObfuscationPasses); + EditorGUILayout.PropertyField(_mappingFile); + EditorGUILayout.PropertyField(_ruleFiles); + EditorGUILayout.PropertyField(_extraAssemblySearchDirs); - public override void OnDeactivate() - { - base.OnDeactivate(); - EditorStatusWatcher.OnEditorFocused -= OnEditorFocused; - ObfuzSettings.Save(); + if (EditorGUI.EndChangeCheck()) + { + _serializedObject.ApplyModifiedProperties(); + ObfuzSettings.Save(); + } } } } \ No newline at end of file diff --git a/Editor/Utils/AssemblyCache.cs b/Editor/Utils/AssemblyCache.cs index 7a90557..ecaa587 100644 --- a/Editor/Utils/AssemblyCache.cs +++ b/Editor/Utils/AssemblyCache.cs @@ -6,7 +6,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace Obfuz +namespace Obfuz.Utils { public class AssemblyCache { diff --git a/Editor/Utils/AssemblyResolverBase.cs b/Editor/Utils/AssemblyResolverBase.cs index 108d5d5..7eb9491 100644 --- a/Editor/Utils/AssemblyResolverBase.cs +++ b/Editor/Utils/AssemblyResolverBase.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace Obfuz +namespace Obfuz.Utils { public abstract class AssemblyResolverBase : IAssemblyResolver { diff --git a/Editor/Utils/CollectionExtensions.cs b/Editor/Utils/CollectionExtensions.cs index 5e15545..f7165ab 100644 --- a/Editor/Utils/CollectionExtensions.cs +++ b/Editor/Utils/CollectionExtensions.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace Obfuz +namespace Obfuz.Utils { public static class CollectionExtensions { @@ -16,7 +16,7 @@ namespace Obfuz } } - public static V GetValueOrDefault(this IDictionary dic, K key) + public static V GetValueOrDefault(this Dictionary dic, K key) { return dic.TryGetValue(key, out V v) ? v : default(V); } diff --git a/Editor/Utils/FileUtil.cs b/Editor/Utils/FileUtil.cs index 97843b5..b400d20 100644 --- a/Editor/Utils/FileUtil.cs +++ b/Editor/Utils/FileUtil.cs @@ -6,7 +6,7 @@ using System.Text; using System.Threading; using System.Threading.Tasks; -namespace Obfuz +namespace Obfuz.Utils { public static class FileUtil { diff --git a/Editor/Utils/HashUtil.cs b/Editor/Utils/HashUtil.cs index 6d858d5..64b1795 100644 --- a/Editor/Utils/HashUtil.cs +++ b/Editor/Utils/HashUtil.cs @@ -5,7 +5,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace Obfuz +namespace Obfuz.Utils { public static class HashUtil { diff --git a/Editor/Utils/IAssemblyResolver.cs b/Editor/Utils/IAssemblyResolver.cs index 0bf1d4f..4a7578a 100644 --- a/Editor/Utils/IAssemblyResolver.cs +++ b/Editor/Utils/IAssemblyResolver.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace Obfuz +namespace Obfuz.Utils { public interface IAssemblyResolver { diff --git a/Editor/Utils/MetaUtil.cs b/Editor/Utils/MetaUtil.cs index 79865fa..f61ab97 100644 --- a/Editor/Utils/MetaUtil.cs +++ b/Editor/Utils/MetaUtil.cs @@ -11,12 +11,6 @@ using UnityEngine.UIElements; namespace Obfuz.Utils { - public enum ThisArgType - { - None, - ValueType, - Class, - } public static class MetaUtil { diff --git a/Editor/Utils/NameMatcher.cs b/Editor/Utils/NameMatcher.cs index 56cc2a1..ea06a66 100644 --- a/Editor/Utils/NameMatcher.cs +++ b/Editor/Utils/NameMatcher.cs @@ -1,6 +1,6 @@ using System.Text.RegularExpressions; -namespace Obfuz +namespace Obfuz.Utils { public class NameMatcher { diff --git a/Editor/Utils/PathAssemblyResolver.cs b/Editor/Utils/PathAssemblyResolver.cs index 2ec6593..6b6a123 100644 --- a/Editor/Utils/PathAssemblyResolver.cs +++ b/Editor/Utils/PathAssemblyResolver.cs @@ -6,7 +6,7 @@ using System.Text; using System.Threading.Tasks; using UnityEngine; -namespace Obfuz +namespace Obfuz.Utils { public class PathAssemblyResolver : AssemblyResolverBase { diff --git a/Editor/Utils/ThisArgType.cs b/Editor/Utils/ThisArgType.cs new file mode 100644 index 0000000..3f008cc --- /dev/null +++ b/Editor/Utils/ThisArgType.cs @@ -0,0 +1,9 @@ +namespace Obfuz.Utils +{ + public enum ThisArgType + { + None, + ValueType, + Class, + } +} diff --git a/Editor/Utils/TypeSigUtil.cs b/Editor/Utils/TypeSigUtil.cs index 5240697..e016d8c 100644 --- a/Editor/Utils/TypeSigUtil.cs +++ b/Editor/Utils/TypeSigUtil.cs @@ -5,7 +5,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace Obfuz +namespace Obfuz.Utils { public static class TypeSigUtil {