From fafc7d11a9810fefcc18f885737299b611fee930 Mon Sep 17 00:00:00 2001 From: walon Date: Sat, 3 May 2025 22:32:18 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=B7=E6=B7=86=E5=A4=B1=E8=B4=A5=E6=97=B6?= =?UTF-8?q?=E6=89=93=E5=8D=B0=E9=94=99=E8=AF=AF=E6=97=A5=E5=BF=97=EF=BC=8C?= =?UTF-8?q?=E9=81=BF=E5=85=8D=E6=82=84=E6=97=A0=E5=A3=B0=E6=81=AF=E7=9A=84?= =?UTF-8?q?=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Editor/BuildProcess/ObfuzProcess.cs | 51 +++++++++++++++++++---------- Editor/Obfuscator.cs | 21 ++++++------ 2 files changed, 44 insertions(+), 28 deletions(-) diff --git a/Editor/BuildProcess/ObfuzProcess.cs b/Editor/BuildProcess/ObfuzProcess.cs index b49e717..eca66d7 100644 --- a/Editor/BuildProcess/ObfuzProcess.cs +++ b/Editor/BuildProcess/ObfuzProcess.cs @@ -30,6 +30,7 @@ namespace Obfuz public class ObfuscationEndEventArgs : EventArgs { + public bool success; public string originalScriptAssembliesPath; public string obfuscatedScriptAssembliesPath; } @@ -65,9 +66,10 @@ namespace Obfuz { return; } - if (!s_obfuscated) + string scriptAssembliesPath = GetScriptAssembliesPath(); + if (!s_obfuscated && Directory.Exists(scriptAssembliesPath)) { - RunObfuscate(GetScriptAssembliesPath()); + RunObfuscate(scriptAssembliesPath); s_obfuscated = true; } } @@ -88,12 +90,6 @@ namespace Obfuz Debug.Log("Obfuscation begin..."); var buildTarget = EditorUserBuildSettings.activeBuildTarget; - string obfuscatedAssemblyOutputDir = settings.GetObfuscatedAssemblyOutputDir(buildTarget); - OnObfuscationBegin?.Invoke(new ObfuscationBeginEventArgs - { - scriptAssembliesPath = scriptAssembliesPath, - obfuscatedScriptAssembliesPath = obfuscatedAssemblyOutputDir, - }); string backupPlayerScriptAssembliesPath = settings.GetOriginalAssemblyBackupDir(buildTarget); FileUtil.CopyDir(scriptAssembliesPath, backupPlayerScriptAssembliesPath); @@ -118,24 +114,43 @@ namespace Obfuz }; obfuscatorBuilder.InsertTopPriorityAssemblySearchDirs(assemblySearchDirs); - Obfuscator obfuz = obfuscatorBuilder.Build(); - obfuz.Run(); - foreach (var dllName in settings.toObfuscatedAssemblyNames) + OnObfuscationBegin?.Invoke(new ObfuscationBeginEventArgs { - string src = $"{obfuscatorBuilder.ObfuscatedAssemblyOutputDir}/{dllName}.dll"; - string dst = $"{scriptAssembliesPath}/{dllName}.dll"; + scriptAssembliesPath = scriptAssembliesPath, + obfuscatedScriptAssembliesPath = obfuscatorBuilder.ObfuscatedAssemblyOutputDir, + }); + bool succ = false; - if (!File.Exists(src)) + try + { + Obfuscator obfuz = obfuscatorBuilder.Build(); + obfuz.Run(); + + foreach (var dllName in settings.toObfuscatedAssemblyNames) { - Debug.LogWarning($"obfuscation assembly not found! skip copy. path:{src}"); - continue; + string src = $"{obfuscatorBuilder.ObfuscatedAssemblyOutputDir}/{dllName}.dll"; + string dst = $"{scriptAssembliesPath}/{dllName}.dll"; + + if (!File.Exists(src)) + { + Debug.LogWarning($"obfuscation assembly not found! skip copy. path:{src}"); + continue; + } + File.Copy(src, dst, true); + Debug.Log($"obfuscate dll:{dst}"); } - File.Copy(src, dst, true); - Debug.Log($"obfuscate dll:{dst}"); + succ = true; + } + catch (Exception e) + { + succ = false; + Debug.LogException(e); + Debug.LogError($"Obfuscation failed."); } OnObfuscationEnd?.Invoke(new ObfuscationEndEventArgs { + success = succ, originalScriptAssembliesPath = backupPlayerScriptAssembliesPath, obfuscatedScriptAssembliesPath = scriptAssembliesPath, }); diff --git a/Editor/Obfuscator.cs b/Editor/Obfuscator.cs index 5fff1dd..cc91fda 100644 --- a/Editor/Obfuscator.cs +++ b/Editor/Obfuscator.cs @@ -24,7 +24,7 @@ namespace Obfuz private readonly ObfuzPipeline _pipeline = new ObfuzPipeline(); - private readonly ObfuscatorContext _ctx; + private ObfuscatorContext _ctx; public Obfuscator(List toObfuscatedAssemblyNames, List notObfuscatedAssemblyNamesReferencingObfuscated, @@ -46,15 +46,6 @@ namespace Obfuz _pipeline.AddPass(new CleanUpInstructionPass()); - _ctx = new ObfuscatorContext - { - assemblyCache = _assemblyCache, - assemblies = _obfuzAssemblies, - toObfuscatedAssemblyNames = _toObfuscatedAssemblyNames, - notObfuscatedAssemblyNamesReferencingObfuscated = _notObfuscatedAssemblyNamesReferencingObfuscated, - obfuscatedAssemblyOutputDir = _obfuscatedAssemblyOutputDir, - }; - } public void Run() @@ -67,6 +58,16 @@ namespace Obfuz private void OnPreObfuscation() { LoadAssemblies(); + + + _ctx = new ObfuscatorContext + { + assemblyCache = _assemblyCache, + assemblies = _obfuzAssemblies, + toObfuscatedAssemblyNames = _toObfuscatedAssemblyNames, + notObfuscatedAssemblyNamesReferencingObfuscated = _notObfuscatedAssemblyNamesReferencingObfuscated, + obfuscatedAssemblyOutputDir = _obfuscatedAssemblyOutputDir, + }; _pipeline.Start(_ctx); }