From b1731a8c38894673f9de3c5e683f6221efad35d4 Mon Sep 17 00:00:00 2001 From: walon Date: Sat, 21 Jun 2025 08:27:45 +0800 Subject: [PATCH] =?UTF-8?q?Settings=E4=B8=AD=E7=9A=84array=E5=8F=82?= =?UTF-8?q?=E6=95=B0=E5=8A=A0=E4=B8=8A=E6=A3=80=E6=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Editor/Emit/EvalStackCalculator.cs | 10 ++++++++++ Editor/ObfuscatorBuilder.cs | 2 +- Editor/Settings/AssemblySettings.cs | 4 ++-- Editor/Settings/CallObfuscationSettings.cs | 2 +- Editor/Settings/ConstEncryptionSettings.cs | 2 +- Editor/Settings/ExprObfuscationSettings.cs | 2 +- Editor/Settings/FieldEncryptionSettings.cs | 2 +- 7 files changed, 17 insertions(+), 7 deletions(-) diff --git a/Editor/Emit/EvalStackCalculator.cs b/Editor/Emit/EvalStackCalculator.cs index 55b608d..8ab3c87 100644 --- a/Editor/Emit/EvalStackCalculator.cs +++ b/Editor/Emit/EvalStackCalculator.cs @@ -39,6 +39,7 @@ namespace Obfuz.Emit private readonly MethodDef _method; private readonly BasicBlockCollection _basicBlocks; private readonly Dictionary _instructionParameterInfos = new Dictionary(); + private readonly Dictionary _evalStackTopDataTypeAfterInstructions = new Dictionary(); public EvalStackCalculator(MethodDef method) { @@ -53,6 +54,11 @@ namespace Obfuz.Emit return _instructionParameterInfos.TryGetValue(inst, out info); } + public bool TryGetPushResult(Instruction inst, out EvalDataType result) + { + return _evalStackTopDataTypeAfterInstructions.TryGetValue(inst, out result); + } + class EvalStackState { public bool visited; @@ -861,6 +867,10 @@ namespace Obfuz.Emit stackDatas.AddRange(newPushedDatas); Assert.AreEqual(stackSize + pushed - pops, stackDatas.Count); } + if (pushed > 0 && stackDatas.Count > 0) + { + _evalStackTopDataTypeAfterInstructions[inst] = stackDatas.Last(); + } } foreach (BasicBlock outBb in block.outBlocks) { diff --git a/Editor/ObfuscatorBuilder.cs b/Editor/ObfuscatorBuilder.cs index fc983e2..87b39b3 100644 --- a/Editor/ObfuscatorBuilder.cs +++ b/Editor/ObfuscatorBuilder.cs @@ -160,7 +160,7 @@ namespace Obfuz obfuscatedAssemblyOutputPath = settings.GetObfuscatedAssemblyOutputPath(target), obfuscatedAssemblyTempOutputPath = settings.GetObfuscatedAssemblyTempOutputPath(target), enabledObfuscationPasses = settings.obfuscationPassSettings.enabledPasses, - obfuscationPassRuleConfigFiles = settings.obfuscationPassSettings.ruleFiles.ToList(), + obfuscationPassRuleConfigFiles = settings.obfuscationPassSettings.ruleFiles?.ToList() ?? new List(), obfuscationPasses = new List(), }, }; diff --git a/Editor/Settings/AssemblySettings.cs b/Editor/Settings/AssemblySettings.cs index 669b12e..9792351 100644 --- a/Editor/Settings/AssemblySettings.cs +++ b/Editor/Settings/AssemblySettings.cs @@ -23,7 +23,7 @@ namespace Obfuz.Settings public List GetAssembliesToObfuscate() { - var asses = new List(assembliesToObfuscate); + var asses = new List(assembliesToObfuscate ?? Array.Empty()); if (obfuscateObfuzRuntime && !asses.Contains(ConstValues.ObfuzRuntimeAssemblyName)) { asses.Add(ConstValues.ObfuzRuntimeAssemblyName); @@ -34,7 +34,7 @@ namespace Obfuz.Settings public List GetObfuscationRelativeAssemblyNames() { var asses = GetAssembliesToObfuscate(); - asses.AddRange(nonObfuscatedButReferencingObfuscatedAssemblies); + asses.AddRange(nonObfuscatedButReferencingObfuscatedAssemblies ?? Array.Empty()); return asses; } } diff --git a/Editor/Settings/CallObfuscationSettings.cs b/Editor/Settings/CallObfuscationSettings.cs index 32099fb..3bc2150 100644 --- a/Editor/Settings/CallObfuscationSettings.cs +++ b/Editor/Settings/CallObfuscationSettings.cs @@ -29,7 +29,7 @@ namespace Obfuz.Settings { return new CallObfuscationSettingsFacade { - ruleFiles = ruleFiles.ToList(), + ruleFiles = ruleFiles?.ToList() ?? new List(), obfuscationLevel = obfuscationLevel, maxProxyMethodCountPerDispatchMethod = maxProxyMethodCountPerDispatchMethod, }; diff --git a/Editor/Settings/ConstEncryptionSettings.cs b/Editor/Settings/ConstEncryptionSettings.cs index ff4967b..6baffbc 100644 --- a/Editor/Settings/ConstEncryptionSettings.cs +++ b/Editor/Settings/ConstEncryptionSettings.cs @@ -25,7 +25,7 @@ namespace Obfuz.Settings { return new ConstEncryptionSettingsFacade { - ruleFiles = ruleFiles.ToList(), + ruleFiles = ruleFiles?.ToList() ?? new List(), encryptionLevel = encryptionLevel, }; } diff --git a/Editor/Settings/ExprObfuscationSettings.cs b/Editor/Settings/ExprObfuscationSettings.cs index 3b854a1..c4d0f75 100644 --- a/Editor/Settings/ExprObfuscationSettings.cs +++ b/Editor/Settings/ExprObfuscationSettings.cs @@ -20,7 +20,7 @@ namespace Obfuz.Settings { return new ExprObfuscationSettingsFacade { - ruleFiles = new List(ruleFiles), + ruleFiles = new List(ruleFiles ?? Array.Empty()), }; } } diff --git a/Editor/Settings/FieldEncryptionSettings.cs b/Editor/Settings/FieldEncryptionSettings.cs index df3ea14..460eca1 100644 --- a/Editor/Settings/FieldEncryptionSettings.cs +++ b/Editor/Settings/FieldEncryptionSettings.cs @@ -25,7 +25,7 @@ namespace Obfuz.Settings { return new FieldEncryptionSettingsFacade { - ruleFiles = ruleFiles.ToList(), + ruleFiles = ruleFiles?.ToList() ?? new List(), encryptionLevel = encryptionLevel, }; }