生成混淆名全局唯一,而不是本程序集内唯一,否则DeobfuscateStackTrace很有可能因为不同程序集的类型名重名而无法分辨准确类型

1.x
walon 2025-06-09 09:16:01 +08:00
parent 7e2162e66d
commit b7d2f69321
1 changed files with 3 additions and 2 deletions

View File

@ -11,6 +11,7 @@ namespace Obfuz.ObfusPasses.SymbolObfus.NameMakers
private readonly Dictionary<object, INameScope> _nameScopes = new Dictionary<object, INameScope>(); private readonly Dictionary<object, INameScope> _nameScopes = new Dictionary<object, INameScope>();
private readonly object _namespaceScope = new object(); private readonly object _namespaceScope = new object();
private readonly object _typeNameScope = new object();
protected abstract INameScope CreateNameScope(); protected abstract INameScope CreateNameScope();
@ -26,7 +27,7 @@ namespace Obfuz.ObfusPasses.SymbolObfus.NameMakers
public void AddPreservedName(TypeDef typeDef, string name) public void AddPreservedName(TypeDef typeDef, string name)
{ {
GetNameScope(typeDef.Module).AddPreservedName(name); GetNameScope(_typeNameScope).AddPreservedName(name);
} }
public void AddPreservedName(MethodDef methodDef, string name) public void AddPreservedName(MethodDef methodDef, string name)
@ -75,7 +76,7 @@ namespace Obfuz.ObfusPasses.SymbolObfus.NameMakers
public string GetNewName(TypeDef typeDef, string originalName) public string GetNewName(TypeDef typeDef, string originalName)
{ {
return GetDefaultNewName(typeDef.Module, originalName); return GetDefaultNewName(_typeNameScope, originalName);
} }
public string GetNewName(MethodDef methodDef, string originalName) public string GetNewName(MethodDef methodDef, string originalName)