change: Obfuscator write intermediate obfuscated assembly to temp directory before write to obfuscated assembly directory

before-split
walon 2025-05-21 21:29:26 +08:00
parent f265022d0c
commit 8cdd69fd45
4 changed files with 20 additions and 3 deletions

View File

@ -21,6 +21,7 @@ namespace Obfuz
public class Obfuscator
{
private readonly string _obfuscatedAssemblyTempOutputPath;
private readonly string _obfuscatedAssemblyOutputPath;
private readonly List<string> _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}");
}

View File

@ -32,6 +32,7 @@ namespace Obfuz
private List<string> _nonObfuscatedButReferencingObfuscatedAssemblies = new List<string>();
private List<string> _assemblySearchPaths = new List<string>();
private string _obfuscatedAssemblyTempOutputPath;
private string _obfuscatedAssemblyOutputPath;
private List<string> _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(),
};

View File

@ -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<string> GetAssembliesToObfuscate()
{
var asses = new List<string>(assembliesToObfuscate);

View File

@ -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