symbol mapping文件中不存在的类型相关的记录仍然保留在输出的symbol mapping文件中

1.x
walon 2025-06-06 22:47:38 +08:00
parent 8bd2aab9da
commit 161ab5a29e
1 changed files with 22 additions and 3 deletions

View File

@ -385,12 +385,31 @@ namespace Obfuz.ObfusPasses.SymbolObfus
if (mod != null)
{
var types = mod.GetTypes().ToDictionary(t => _typeRenames.TryGetValue(t, out var rec) ? rec.oldName : t.FullName, t => t);
if (_assemblies.TryGetValue(assName, out var ass))
{
var totalTypeNames = types.Keys.Concat(ass.types.Keys).ToHashSet().ToList();
totalTypeNames.Sort((a, b) => a.CompareTo((b)));
foreach (string typeName in totalTypeNames)
{
if (types.TryGetValue(typeName, out TypeDef typeDef))
{
WriteTypeMapping(assemblyNode, typeDef);
}
else
{
WriteTypeMapping(assemblyNode, typeName, ass.types[typeName]);
}
}
}
else
{
var sortedTypes = new SortedDictionary<string, TypeDef>(types);
foreach (TypeDef type in sortedTypes.Values)
{
WriteTypeMapping(assemblyNode, type);
}
}
}
else
{
RenameMappingAssembly ass = _assemblies[assName];