From 8cdd69fd450879b6b751f1b4c7ffcaa45ceb1880 Mon Sep 17 00:00:00 2001 From: walon Date: Wed, 21 May 2025 21:29:26 +0800 Subject: [PATCH] change: Obfuscator write intermediate obfuscated assembly to temp directory before write to obfuscated assembly directory --- com.code-philosophy.obfuz/Editor/Obfuscator.cs | 6 +++++- com.code-philosophy.obfuz/Editor/ObfuscatorBuilder.cs | 8 ++++++++ .../Editor/Settings/AssemblySettings.cs | 3 +-- .../Editor/Settings/ObfuzSettings.cs | 6 ++++++ 4 files changed, 20 insertions(+), 3 deletions(-) diff --git a/com.code-philosophy.obfuz/Editor/Obfuscator.cs b/com.code-philosophy.obfuz/Editor/Obfuscator.cs index e9b47d5..9a5841b 100644 --- a/com.code-philosophy.obfuz/Editor/Obfuscator.cs +++ b/com.code-philosophy.obfuz/Editor/Obfuscator.cs @@ -21,6 +21,7 @@ namespace Obfuz public class Obfuscator { + private readonly string _obfuscatedAssemblyTempOutputPath; private readonly string _obfuscatedAssemblyOutputPath; private readonly List _assembliesToObfuscate; @@ -58,6 +59,7 @@ namespace Obfuz _assembliesToObfuscate = builder.AssembliesToObfuscate; _nonObfuscatedButReferencingObfuscatedAssemblies = builder.NonObfuscatedButReferencingObfuscatedAssemblies; _obfuscatedAssemblyOutputPath = builder.ObfuscatedAssemblyOutputPath; + _obfuscatedAssemblyTempOutputPath = builder.ObfuscatedAssemblyTempOutputPath; _assemblyResolver = new CombinedAssemblyResolver(new PathAssemblyResolver(builder.AssemblySearchPaths.ToArray()), new UnityProjectManagedAssemblyResolver(builder.BuildTarget)); _passPolicy = new ConfigurablePassPolicy(_assembliesToObfuscate, builder.EnableObfuscationPasses, builder.ObfuscationPassRuleConfigFiles); @@ -81,9 +83,11 @@ namespace Obfuz { Debug.Log($"Obfuscator Run. begin"); FileUtil.RecreateDir(_obfuscatedAssemblyOutputPath); + FileUtil.RecreateDir(_obfuscatedAssemblyTempOutputPath); RunPipeline(_pipeline1); _assemblyResolver.InsertFirst(new PathAssemblyResolver(_obfuscatedAssemblyOutputPath)); RunPipeline(_pipeline2); + FileUtil.CopyDir(_obfuscatedAssemblyTempOutputPath, _obfuscatedAssemblyOutputPath, true); Debug.Log($"Obfuscator Run. end"); } @@ -318,7 +322,7 @@ namespace Obfuz foreach (ModuleDef mod in _ctx.allObfuscationRelativeModules) { string assNameWithExt = mod.Name; - string outputFile = $"{_obfuscatedAssemblyOutputPath}/{assNameWithExt}"; + string outputFile = $"{_obfuscatedAssemblyTempOutputPath}/{assNameWithExt}"; mod.Write(outputFile); Debug.Log($"save module. name:{mod.Assembly.Name} output:{outputFile}"); } diff --git a/com.code-philosophy.obfuz/Editor/ObfuscatorBuilder.cs b/com.code-philosophy.obfuz/Editor/ObfuscatorBuilder.cs index e380400..eb20bd6 100644 --- a/com.code-philosophy.obfuz/Editor/ObfuscatorBuilder.cs +++ b/com.code-philosophy.obfuz/Editor/ObfuscatorBuilder.cs @@ -32,6 +32,7 @@ namespace Obfuz private List _nonObfuscatedButReferencingObfuscatedAssemblies = new List(); private List _assemblySearchPaths = new List(); + private string _obfuscatedAssemblyTempOutputPath; private string _obfuscatedAssemblyOutputPath; private List _obfuscationPassRuleConfigFiles; @@ -122,6 +123,12 @@ namespace Obfuz set => _obfuscatedAssemblyOutputPath = value; } + public string ObfuscatedAssemblyTempOutputPath + { + get => _obfuscatedAssemblyTempOutputPath; + set => _obfuscatedAssemblyTempOutputPath = value; + } + public ObfuscationPassType EnableObfuscationPasses { get => _enabledObfuscationPasses; @@ -195,6 +202,7 @@ namespace Obfuz _nonObfuscatedButReferencingObfuscatedAssemblies = settings.assemblySettings.nonObfuscatedButReferencingObfuscatedAssemblies.ToList(), _assemblySearchPaths = searchPaths, _obfuscatedAssemblyOutputPath = settings.GetObfuscatedAssemblyOutputPath(target), + _obfuscatedAssemblyTempOutputPath = settings.GetObfuscatedAssemblyTempOutputPath(target), _enabledObfuscationPasses = settings.obfuscationPassSettings.enabledPasses, _obfuscationPassRuleConfigFiles = settings.obfuscationPassSettings.ruleFiles.ToList(), }; diff --git a/com.code-philosophy.obfuz/Editor/Settings/AssemblySettings.cs b/com.code-philosophy.obfuz/Editor/Settings/AssemblySettings.cs index cbd10a0..85229cf 100644 --- a/com.code-philosophy.obfuz/Editor/Settings/AssemblySettings.cs +++ b/com.code-philosophy.obfuz/Editor/Settings/AssemblySettings.cs @@ -11,7 +11,7 @@ namespace Obfuz.Settings public class AssemblySettings { - [Tooltip("name of assemblies to obfuscate")] + [Tooltip("name of assemblies to obfuscate, please don't add 'Obfuz.Runtime'")] public string[] assembliesToObfuscate; [Tooltip("name of assemblies not obfuscated but reference assemblies to obfuscated ")] @@ -23,7 +23,6 @@ namespace Obfuz.Settings [Tooltip("obfuscate Obfuz.Runtime")] public bool obfuscateObfuzRuntime = true; - public List GetAssembliesToObfuscate() { var asses = new List(assembliesToObfuscate); diff --git a/com.code-philosophy.obfuz/Editor/Settings/ObfuzSettings.cs b/com.code-philosophy.obfuz/Editor/Settings/ObfuzSettings.cs index 70fb15d..bb0f649 100644 --- a/com.code-philosophy.obfuz/Editor/Settings/ObfuzSettings.cs +++ b/com.code-philosophy.obfuz/Editor/Settings/ObfuzSettings.cs @@ -1,3 +1,4 @@ +using System; using System.Collections.Generic; using System.IO; using System.Runtime.Remoting.Messaging; @@ -50,6 +51,11 @@ namespace Obfuz.Settings return $"{ObfuzRootDir}/{target}/OriginalAssemblies"; } + public string GetObfuscatedAssemblyTempOutputPath(BuildTarget target) + { + return $"{ObfuzRootDir}/{target}/TempObfuscatedAssemblies"; + } + private static ObfuzSettings s_Instance; public static ObfuzSettings Instance