From 8bd2aab9daae467fd732f252e4bee64653670649 Mon Sep 17 00:00:00 2001 From: walon Date: Fri, 6 Jun 2025 22:25:45 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dsymbol=20mapping=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E6=97=B6=E8=BE=93=E5=87=BA=E5=86=85=E5=AE=B9=E9=A1=BA?= =?UTF-8?q?=E5=BA=8F=E4=B8=8D=E7=A8=B3=E5=AE=9A=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SymbolObfus/RenameRecordMap.cs | 44 +++++++++---------- 1 file changed, 20 insertions(+), 24 deletions(-) diff --git a/Editor/ObfusPasses/SymbolObfus/RenameRecordMap.cs b/Editor/ObfusPasses/SymbolObfus/RenameRecordMap.cs index 071b7f9..080be59 100644 --- a/Editor/ObfusPasses/SymbolObfus/RenameRecordMap.cs +++ b/Editor/ObfusPasses/SymbolObfus/RenameRecordMap.cs @@ -374,37 +374,33 @@ namespace Obfuz.ObfusPasses.SymbolObfus var root = doc.CreateElement("mapping"); doc.AppendChild(root); - var sortedModRenames = _modRenames.ToList(); - sortedModRenames.Sort((a, b) => a.Value.oldName.CompareTo(b.Value.oldName)); - foreach (var kvp in sortedModRenames) + var totalAssNames = _modRenames.Keys.Select(m => m.Assembly.Name.ToString()).Concat(_assemblies.Keys).ToHashSet().ToList(); + totalAssNames.Sort((a, b) => a.CompareTo(b)); + foreach (string assName in totalAssNames) { - ModuleDef mod = kvp.Key; - RenameRecord record = kvp.Value; + ModuleDef mod = _modRenames.Keys.FirstOrDefault(m => m.Assembly.Name == assName); var assemblyNode = doc.CreateElement("assembly"); - assemblyNode.SetAttribute("name", mod.Assembly.Name); - foreach (TypeDef type in mod.GetTypes()) - { - WriteTypeMapping(assemblyNode, type); - } + assemblyNode.SetAttribute("name", assName); root.AppendChild(assemblyNode); - } - - var sortedAsses = GetSortedValueList(_assemblies, (a, b) => a.assName.CompareTo(b.assName)); - foreach (RenameMappingAssembly ass in sortedAsses) - { - if (_modRenames.Keys.Any(m => m.Assembly.Name == ass.assName)) + if (mod != null) { - continue; + var types = mod.GetTypes().ToDictionary(t => _typeRenames.TryGetValue(t, out var rec) ? rec.oldName : t.FullName, t => t); + var sortedTypes = new SortedDictionary(types); + foreach (TypeDef type in sortedTypes.Values) + { + WriteTypeMapping(assemblyNode, type); + } } - var assemblyNode = doc.CreateElement("assembly"); - assemblyNode.SetAttribute("name", ass.assName); - - var sortedTypes = GetSortedValueList(ass.types, (a, b) => a.oldFullName.CompareTo(b.oldFullName)); - foreach (var type in sortedTypes) + else { - WriteTypeMapping(assemblyNode, type.oldFullName, type); + RenameMappingAssembly ass = _assemblies[assName]; + + var sortedTypes = GetSortedValueList(ass.types, (a, b) => a.oldFullName.CompareTo(b.oldFullName)); + foreach (var type in sortedTypes) + { + WriteTypeMapping(assemblyNode, type.oldFullName, type); + } } - root.AppendChild(assemblyNode); } Directory.CreateDirectory(Path.GetDirectoryName(_mappingFile)); doc.Save(_mappingFile);