Settings中的array参数加上检查

dev
walon 2025-06-21 08:27:45 +08:00
parent 8314ed4327
commit b1731a8c38
7 changed files with 17 additions and 7 deletions

View File

@ -39,6 +39,7 @@ namespace Obfuz.Emit
private readonly MethodDef _method; private readonly MethodDef _method;
private readonly BasicBlockCollection _basicBlocks; private readonly BasicBlockCollection _basicBlocks;
private readonly Dictionary<Instruction, InstructionParameterInfo> _instructionParameterInfos = new Dictionary<Instruction, InstructionParameterInfo>(); private readonly Dictionary<Instruction, InstructionParameterInfo> _instructionParameterInfos = new Dictionary<Instruction, InstructionParameterInfo>();
private readonly Dictionary<Instruction, EvalDataType> _evalStackTopDataTypeAfterInstructions = new Dictionary<Instruction, EvalDataType>();
public EvalStackCalculator(MethodDef method) public EvalStackCalculator(MethodDef method)
{ {
@ -53,6 +54,11 @@ namespace Obfuz.Emit
return _instructionParameterInfos.TryGetValue(inst, out info); return _instructionParameterInfos.TryGetValue(inst, out info);
} }
public bool TryGetPushResult(Instruction inst, out EvalDataType result)
{
return _evalStackTopDataTypeAfterInstructions.TryGetValue(inst, out result);
}
class EvalStackState class EvalStackState
{ {
public bool visited; public bool visited;
@ -861,6 +867,10 @@ namespace Obfuz.Emit
stackDatas.AddRange(newPushedDatas); stackDatas.AddRange(newPushedDatas);
Assert.AreEqual(stackSize + pushed - pops, stackDatas.Count); Assert.AreEqual(stackSize + pushed - pops, stackDatas.Count);
} }
if (pushed > 0 && stackDatas.Count > 0)
{
_evalStackTopDataTypeAfterInstructions[inst] = stackDatas.Last();
}
} }
foreach (BasicBlock outBb in block.outBlocks) foreach (BasicBlock outBb in block.outBlocks)
{ {

View File

@ -160,7 +160,7 @@ namespace Obfuz
obfuscatedAssemblyOutputPath = settings.GetObfuscatedAssemblyOutputPath(target), obfuscatedAssemblyOutputPath = settings.GetObfuscatedAssemblyOutputPath(target),
obfuscatedAssemblyTempOutputPath = settings.GetObfuscatedAssemblyTempOutputPath(target), obfuscatedAssemblyTempOutputPath = settings.GetObfuscatedAssemblyTempOutputPath(target),
enabledObfuscationPasses = settings.obfuscationPassSettings.enabledPasses, enabledObfuscationPasses = settings.obfuscationPassSettings.enabledPasses,
obfuscationPassRuleConfigFiles = settings.obfuscationPassSettings.ruleFiles.ToList(), obfuscationPassRuleConfigFiles = settings.obfuscationPassSettings.ruleFiles?.ToList() ?? new List<string>(),
obfuscationPasses = new List<IObfuscationPass>(), obfuscationPasses = new List<IObfuscationPass>(),
}, },
}; };

View File

@ -23,7 +23,7 @@ namespace Obfuz.Settings
public List<string> GetAssembliesToObfuscate() public List<string> GetAssembliesToObfuscate()
{ {
var asses = new List<string>(assembliesToObfuscate); var asses = new List<string>(assembliesToObfuscate ?? Array.Empty<string>());
if (obfuscateObfuzRuntime && !asses.Contains(ConstValues.ObfuzRuntimeAssemblyName)) if (obfuscateObfuzRuntime && !asses.Contains(ConstValues.ObfuzRuntimeAssemblyName))
{ {
asses.Add(ConstValues.ObfuzRuntimeAssemblyName); asses.Add(ConstValues.ObfuzRuntimeAssemblyName);
@ -34,7 +34,7 @@ namespace Obfuz.Settings
public List<string> GetObfuscationRelativeAssemblyNames() public List<string> GetObfuscationRelativeAssemblyNames()
{ {
var asses = GetAssembliesToObfuscate(); var asses = GetAssembliesToObfuscate();
asses.AddRange(nonObfuscatedButReferencingObfuscatedAssemblies); asses.AddRange(nonObfuscatedButReferencingObfuscatedAssemblies ?? Array.Empty<string>());
return asses; return asses;
} }
} }

View File

@ -29,7 +29,7 @@ namespace Obfuz.Settings
{ {
return new CallObfuscationSettingsFacade return new CallObfuscationSettingsFacade
{ {
ruleFiles = ruleFiles.ToList(), ruleFiles = ruleFiles?.ToList() ?? new List<string>(),
obfuscationLevel = obfuscationLevel, obfuscationLevel = obfuscationLevel,
maxProxyMethodCountPerDispatchMethod = maxProxyMethodCountPerDispatchMethod, maxProxyMethodCountPerDispatchMethod = maxProxyMethodCountPerDispatchMethod,
}; };

View File

@ -25,7 +25,7 @@ namespace Obfuz.Settings
{ {
return new ConstEncryptionSettingsFacade return new ConstEncryptionSettingsFacade
{ {
ruleFiles = ruleFiles.ToList(), ruleFiles = ruleFiles?.ToList() ?? new List<string>(),
encryptionLevel = encryptionLevel, encryptionLevel = encryptionLevel,
}; };
} }

View File

@ -20,7 +20,7 @@ namespace Obfuz.Settings
{ {
return new ExprObfuscationSettingsFacade return new ExprObfuscationSettingsFacade
{ {
ruleFiles = new List<string>(ruleFiles), ruleFiles = new List<string>(ruleFiles ?? Array.Empty<string>()),
}; };
} }
} }

View File

@ -25,7 +25,7 @@ namespace Obfuz.Settings
{ {
return new FieldEncryptionSettingsFacade return new FieldEncryptionSettingsFacade
{ {
ruleFiles = ruleFiles.ToList(), ruleFiles = ruleFiles?.ToList() ?? new List<string>(),
encryptionLevel = encryptionLevel, encryptionLevel = encryptionLevel,
}; };
} }