change: Obfuscator write intermediate obfuscated assembly to temp directory before write to obfuscated assembly directory
parent
f265022d0c
commit
8cdd69fd45
|
@ -21,6 +21,7 @@ namespace Obfuz
|
||||||
|
|
||||||
public class Obfuscator
|
public class Obfuscator
|
||||||
{
|
{
|
||||||
|
private readonly string _obfuscatedAssemblyTempOutputPath;
|
||||||
private readonly string _obfuscatedAssemblyOutputPath;
|
private readonly string _obfuscatedAssemblyOutputPath;
|
||||||
|
|
||||||
private readonly List<string> _assembliesToObfuscate;
|
private readonly List<string> _assembliesToObfuscate;
|
||||||
|
@ -58,6 +59,7 @@ namespace Obfuz
|
||||||
_assembliesToObfuscate = builder.AssembliesToObfuscate;
|
_assembliesToObfuscate = builder.AssembliesToObfuscate;
|
||||||
_nonObfuscatedButReferencingObfuscatedAssemblies = builder.NonObfuscatedButReferencingObfuscatedAssemblies;
|
_nonObfuscatedButReferencingObfuscatedAssemblies = builder.NonObfuscatedButReferencingObfuscatedAssemblies;
|
||||||
_obfuscatedAssemblyOutputPath = builder.ObfuscatedAssemblyOutputPath;
|
_obfuscatedAssemblyOutputPath = builder.ObfuscatedAssemblyOutputPath;
|
||||||
|
_obfuscatedAssemblyTempOutputPath = builder.ObfuscatedAssemblyTempOutputPath;
|
||||||
_assemblyResolver = new CombinedAssemblyResolver(new PathAssemblyResolver(builder.AssemblySearchPaths.ToArray()), new UnityProjectManagedAssemblyResolver(builder.BuildTarget));
|
_assemblyResolver = new CombinedAssemblyResolver(new PathAssemblyResolver(builder.AssemblySearchPaths.ToArray()), new UnityProjectManagedAssemblyResolver(builder.BuildTarget));
|
||||||
|
|
||||||
_passPolicy = new ConfigurablePassPolicy(_assembliesToObfuscate, builder.EnableObfuscationPasses, builder.ObfuscationPassRuleConfigFiles);
|
_passPolicy = new ConfigurablePassPolicy(_assembliesToObfuscate, builder.EnableObfuscationPasses, builder.ObfuscationPassRuleConfigFiles);
|
||||||
|
@ -81,9 +83,11 @@ namespace Obfuz
|
||||||
{
|
{
|
||||||
Debug.Log($"Obfuscator Run. begin");
|
Debug.Log($"Obfuscator Run. begin");
|
||||||
FileUtil.RecreateDir(_obfuscatedAssemblyOutputPath);
|
FileUtil.RecreateDir(_obfuscatedAssemblyOutputPath);
|
||||||
|
FileUtil.RecreateDir(_obfuscatedAssemblyTempOutputPath);
|
||||||
RunPipeline(_pipeline1);
|
RunPipeline(_pipeline1);
|
||||||
_assemblyResolver.InsertFirst(new PathAssemblyResolver(_obfuscatedAssemblyOutputPath));
|
_assemblyResolver.InsertFirst(new PathAssemblyResolver(_obfuscatedAssemblyOutputPath));
|
||||||
RunPipeline(_pipeline2);
|
RunPipeline(_pipeline2);
|
||||||
|
FileUtil.CopyDir(_obfuscatedAssemblyTempOutputPath, _obfuscatedAssemblyOutputPath, true);
|
||||||
Debug.Log($"Obfuscator Run. end");
|
Debug.Log($"Obfuscator Run. end");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -318,7 +322,7 @@ namespace Obfuz
|
||||||
foreach (ModuleDef mod in _ctx.allObfuscationRelativeModules)
|
foreach (ModuleDef mod in _ctx.allObfuscationRelativeModules)
|
||||||
{
|
{
|
||||||
string assNameWithExt = mod.Name;
|
string assNameWithExt = mod.Name;
|
||||||
string outputFile = $"{_obfuscatedAssemblyOutputPath}/{assNameWithExt}";
|
string outputFile = $"{_obfuscatedAssemblyTempOutputPath}/{assNameWithExt}";
|
||||||
mod.Write(outputFile);
|
mod.Write(outputFile);
|
||||||
Debug.Log($"save module. name:{mod.Assembly.Name} output:{outputFile}");
|
Debug.Log($"save module. name:{mod.Assembly.Name} output:{outputFile}");
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,6 +32,7 @@ namespace Obfuz
|
||||||
private List<string> _nonObfuscatedButReferencingObfuscatedAssemblies = new List<string>();
|
private List<string> _nonObfuscatedButReferencingObfuscatedAssemblies = new List<string>();
|
||||||
private List<string> _assemblySearchPaths = new List<string>();
|
private List<string> _assemblySearchPaths = new List<string>();
|
||||||
|
|
||||||
|
private string _obfuscatedAssemblyTempOutputPath;
|
||||||
private string _obfuscatedAssemblyOutputPath;
|
private string _obfuscatedAssemblyOutputPath;
|
||||||
private List<string> _obfuscationPassRuleConfigFiles;
|
private List<string> _obfuscationPassRuleConfigFiles;
|
||||||
|
|
||||||
|
@ -122,6 +123,12 @@ namespace Obfuz
|
||||||
set => _obfuscatedAssemblyOutputPath = value;
|
set => _obfuscatedAssemblyOutputPath = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public string ObfuscatedAssemblyTempOutputPath
|
||||||
|
{
|
||||||
|
get => _obfuscatedAssemblyTempOutputPath;
|
||||||
|
set => _obfuscatedAssemblyTempOutputPath = value;
|
||||||
|
}
|
||||||
|
|
||||||
public ObfuscationPassType EnableObfuscationPasses
|
public ObfuscationPassType EnableObfuscationPasses
|
||||||
{
|
{
|
||||||
get => _enabledObfuscationPasses;
|
get => _enabledObfuscationPasses;
|
||||||
|
@ -195,6 +202,7 @@ namespace Obfuz
|
||||||
_nonObfuscatedButReferencingObfuscatedAssemblies = settings.assemblySettings.nonObfuscatedButReferencingObfuscatedAssemblies.ToList(),
|
_nonObfuscatedButReferencingObfuscatedAssemblies = settings.assemblySettings.nonObfuscatedButReferencingObfuscatedAssemblies.ToList(),
|
||||||
_assemblySearchPaths = searchPaths,
|
_assemblySearchPaths = searchPaths,
|
||||||
_obfuscatedAssemblyOutputPath = settings.GetObfuscatedAssemblyOutputPath(target),
|
_obfuscatedAssemblyOutputPath = settings.GetObfuscatedAssemblyOutputPath(target),
|
||||||
|
_obfuscatedAssemblyTempOutputPath = settings.GetObfuscatedAssemblyTempOutputPath(target),
|
||||||
_enabledObfuscationPasses = settings.obfuscationPassSettings.enabledPasses,
|
_enabledObfuscationPasses = settings.obfuscationPassSettings.enabledPasses,
|
||||||
_obfuscationPassRuleConfigFiles = settings.obfuscationPassSettings.ruleFiles.ToList(),
|
_obfuscationPassRuleConfigFiles = settings.obfuscationPassSettings.ruleFiles.ToList(),
|
||||||
};
|
};
|
||||||
|
|
|
@ -11,7 +11,7 @@ namespace Obfuz.Settings
|
||||||
public class AssemblySettings
|
public class AssemblySettings
|
||||||
{
|
{
|
||||||
|
|
||||||
[Tooltip("name of assemblies to obfuscate")]
|
[Tooltip("name of assemblies to obfuscate, please don't add 'Obfuz.Runtime'")]
|
||||||
public string[] assembliesToObfuscate;
|
public string[] assembliesToObfuscate;
|
||||||
|
|
||||||
[Tooltip("name of assemblies not obfuscated but reference assemblies to obfuscated ")]
|
[Tooltip("name of assemblies not obfuscated but reference assemblies to obfuscated ")]
|
||||||
|
@ -23,7 +23,6 @@ namespace Obfuz.Settings
|
||||||
[Tooltip("obfuscate Obfuz.Runtime")]
|
[Tooltip("obfuscate Obfuz.Runtime")]
|
||||||
public bool obfuscateObfuzRuntime = true;
|
public bool obfuscateObfuzRuntime = true;
|
||||||
|
|
||||||
|
|
||||||
public List<string> GetAssembliesToObfuscate()
|
public List<string> GetAssembliesToObfuscate()
|
||||||
{
|
{
|
||||||
var asses = new List<string>(assembliesToObfuscate);
|
var asses = new List<string>(assembliesToObfuscate);
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Runtime.Remoting.Messaging;
|
using System.Runtime.Remoting.Messaging;
|
||||||
|
@ -50,6 +51,11 @@ namespace Obfuz.Settings
|
||||||
return $"{ObfuzRootDir}/{target}/OriginalAssemblies";
|
return $"{ObfuzRootDir}/{target}/OriginalAssemblies";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public string GetObfuscatedAssemblyTempOutputPath(BuildTarget target)
|
||||||
|
{
|
||||||
|
return $"{ObfuzRootDir}/{target}/TempObfuscatedAssemblies";
|
||||||
|
}
|
||||||
|
|
||||||
private static ObfuzSettings s_Instance;
|
private static ObfuzSettings s_Instance;
|
||||||
|
|
||||||
public static ObfuzSettings Instance
|
public static ObfuzSettings Instance
|
||||||
|
|
Loading…
Reference in New Issue