混淆失败时打印错误日志,避免悄无声息的错误

backup
walon 2025-05-03 22:32:18 +08:00
parent 291bcd7529
commit fafc7d11a9
2 changed files with 44 additions and 28 deletions

View File

@ -30,6 +30,7 @@ namespace Obfuz
public class ObfuscationEndEventArgs : EventArgs public class ObfuscationEndEventArgs : EventArgs
{ {
public bool success;
public string originalScriptAssembliesPath; public string originalScriptAssembliesPath;
public string obfuscatedScriptAssembliesPath; public string obfuscatedScriptAssembliesPath;
} }
@ -65,9 +66,10 @@ namespace Obfuz
{ {
return; return;
} }
if (!s_obfuscated) string scriptAssembliesPath = GetScriptAssembliesPath();
if (!s_obfuscated && Directory.Exists(scriptAssembliesPath))
{ {
RunObfuscate(GetScriptAssembliesPath()); RunObfuscate(scriptAssembliesPath);
s_obfuscated = true; s_obfuscated = true;
} }
} }
@ -88,12 +90,6 @@ namespace Obfuz
Debug.Log("Obfuscation begin..."); Debug.Log("Obfuscation begin...");
var buildTarget = EditorUserBuildSettings.activeBuildTarget; var buildTarget = EditorUserBuildSettings.activeBuildTarget;
string obfuscatedAssemblyOutputDir = settings.GetObfuscatedAssemblyOutputDir(buildTarget);
OnObfuscationBegin?.Invoke(new ObfuscationBeginEventArgs
{
scriptAssembliesPath = scriptAssembliesPath,
obfuscatedScriptAssembliesPath = obfuscatedAssemblyOutputDir,
});
string backupPlayerScriptAssembliesPath = settings.GetOriginalAssemblyBackupDir(buildTarget); string backupPlayerScriptAssembliesPath = settings.GetOriginalAssemblyBackupDir(buildTarget);
FileUtil.CopyDir(scriptAssembliesPath, backupPlayerScriptAssembliesPath); FileUtil.CopyDir(scriptAssembliesPath, backupPlayerScriptAssembliesPath);
@ -118,24 +114,43 @@ namespace Obfuz
}; };
obfuscatorBuilder.InsertTopPriorityAssemblySearchDirs(assemblySearchDirs); 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"; scriptAssembliesPath = scriptAssembliesPath,
string dst = $"{scriptAssembliesPath}/{dllName}.dll"; 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}"); string src = $"{obfuscatorBuilder.ObfuscatedAssemblyOutputDir}/{dllName}.dll";
continue; 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); succ = true;
Debug.Log($"obfuscate dll:{dst}"); }
catch (Exception e)
{
succ = false;
Debug.LogException(e);
Debug.LogError($"Obfuscation failed.");
} }
OnObfuscationEnd?.Invoke(new ObfuscationEndEventArgs OnObfuscationEnd?.Invoke(new ObfuscationEndEventArgs
{ {
success = succ,
originalScriptAssembliesPath = backupPlayerScriptAssembliesPath, originalScriptAssembliesPath = backupPlayerScriptAssembliesPath,
obfuscatedScriptAssembliesPath = scriptAssembliesPath, obfuscatedScriptAssembliesPath = scriptAssembliesPath,
}); });

View File

@ -24,7 +24,7 @@ namespace Obfuz
private readonly ObfuzPipeline _pipeline = new ObfuzPipeline(); private readonly ObfuzPipeline _pipeline = new ObfuzPipeline();
private readonly ObfuscatorContext _ctx; private ObfuscatorContext _ctx;
public Obfuscator(List<string> toObfuscatedAssemblyNames, public Obfuscator(List<string> toObfuscatedAssemblyNames,
List<string> notObfuscatedAssemblyNamesReferencingObfuscated, List<string> notObfuscatedAssemblyNamesReferencingObfuscated,
@ -46,15 +46,6 @@ namespace Obfuz
_pipeline.AddPass(new CleanUpInstructionPass()); _pipeline.AddPass(new CleanUpInstructionPass());
_ctx = new ObfuscatorContext
{
assemblyCache = _assemblyCache,
assemblies = _obfuzAssemblies,
toObfuscatedAssemblyNames = _toObfuscatedAssemblyNames,
notObfuscatedAssemblyNamesReferencingObfuscated = _notObfuscatedAssemblyNamesReferencingObfuscated,
obfuscatedAssemblyOutputDir = _obfuscatedAssemblyOutputDir,
};
} }
public void Run() public void Run()
@ -67,6 +58,16 @@ namespace Obfuz
private void OnPreObfuscation() private void OnPreObfuscation()
{ {
LoadAssemblies(); LoadAssemblies();
_ctx = new ObfuscatorContext
{
assemblyCache = _assemblyCache,
assemblies = _obfuzAssemblies,
toObfuscatedAssemblyNames = _toObfuscatedAssemblyNames,
notObfuscatedAssemblyNamesReferencingObfuscated = _notObfuscatedAssemblyNamesReferencingObfuscated,
obfuscatedAssemblyOutputDir = _obfuscatedAssemblyOutputDir,
};
_pipeline.Start(_ctx); _pipeline.Start(_ctx);
} }