修复 ReflectionCompatibilityDetector错误地对未混淆程序集中Enum打印错误日志的bug

1.x
walon 2025-06-16 11:41:18 +08:00
parent 830d61cc48
commit 2d9782fdb7
2 changed files with 5 additions and 3 deletions

View File

@ -11,11 +11,13 @@ namespace Obfuz.ObfusPasses.SymbolObfus
{ {
public class ReflectionCompatibilityDetector public class ReflectionCompatibilityDetector
{ {
private readonly HashSet<ModuleDef> _assembliesToObfuscate;
private readonly List<ModuleDef> _obfuscatedAndNotObfuscatedModules; private readonly List<ModuleDef> _obfuscatedAndNotObfuscatedModules;
private readonly IObfuscationPolicy _renamePolicy; private readonly IObfuscationPolicy _renamePolicy;
public ReflectionCompatibilityDetector(List<ModuleDef> obfuscatedAndNotObfuscatedModules, IObfuscationPolicy renamePolicy) public ReflectionCompatibilityDetector(List<ModuleDef> assembliesToObfuscate, List<ModuleDef> obfuscatedAndNotObfuscatedModules, IObfuscationPolicy renamePolicy)
{ {
_assembliesToObfuscate = new HashSet<ModuleDef>(assembliesToObfuscate);
_obfuscatedAndNotObfuscatedModules = obfuscatedAndNotObfuscatedModules; _obfuscatedAndNotObfuscatedModules = obfuscatedAndNotObfuscatedModules;
_renamePolicy = renamePolicy; _renamePolicy = renamePolicy;
} }
@ -137,7 +139,7 @@ namespace Obfuz.ObfusPasses.SymbolObfus
private bool IsAnyEnumItemRenamed(TypeDef typeDef) private bool IsAnyEnumItemRenamed(TypeDef typeDef)
{ {
return typeDef.Fields.Any(f => _renamePolicy.NeedRename(f)); return _assembliesToObfuscate.Contains(typeDef.Module) && typeDef.Fields.Any(f => _renamePolicy.NeedRename(f));
} }
private void AnalyzeCallvir(IMethod calledMethod, ITypeDefOrRef constrainedType) private void AnalyzeCallvir(IMethod calledMethod, ITypeDefOrRef constrainedType)

View File

@ -182,7 +182,7 @@ namespace Obfuz.ObfusPasses.SymbolObfus
PrecomputeNeedRename(); PrecomputeNeedRename();
if (_detectReflectionCompatibility) if (_detectReflectionCompatibility)
{ {
var reflectionCompatibilityDetector = new ReflectionCompatibilityDetector(_obfuscatedAndNotObfuscatedModules, _renamePolicy); var reflectionCompatibilityDetector = new ReflectionCompatibilityDetector(_toObfuscatedModules, _obfuscatedAndNotObfuscatedModules, _renamePolicy);
reflectionCompatibilityDetector.Analyze(); reflectionCompatibilityDetector.Analyze();
} }
RenameTypes(); RenameTypes();