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, }; }