From 5f63818841ffc7d784b495ee62442391edb9696b Mon Sep 17 00:00:00 2001 From: walon Date: Mon, 19 May 2025 16:25:47 +0800 Subject: [PATCH] change: sorted assembly and type by name before write to symbol mapping file --- .../SymbolObfus/RenameRecordMap.cs | 23 +++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/Obfuz/Packages/com.code-philosophy.obfuz/Editor/ObfusPasses/SymbolObfus/RenameRecordMap.cs b/Obfuz/Packages/com.code-philosophy.obfuz/Editor/ObfusPasses/SymbolObfus/RenameRecordMap.cs index b4b1fcc..791f95d 100644 --- a/Obfuz/Packages/com.code-philosophy.obfuz/Editor/ObfusPasses/SymbolObfus/RenameRecordMap.cs +++ b/Obfuz/Packages/com.code-philosophy.obfuz/Editor/ObfusPasses/SymbolObfus/RenameRecordMap.cs @@ -1,5 +1,6 @@ using dnlib.DotNet; using Obfuz.Utils; +using System; using System.Collections.Generic; using System.IO; using System.Linq; @@ -360,6 +361,13 @@ namespace Obfuz.ObfusPasses.SymbolObfus type.events.Add(signature, rme); } + private List GetSortedValueList(Dictionary dic, Comparison comparer) + { + var list = dic.Values.ToList(); + list.Sort(comparer); + return list; + } + public void WriteXmlMappingFile() { if (string.IsNullOrEmpty(_mappingFile)) @@ -369,7 +377,10 @@ namespace Obfuz.ObfusPasses.SymbolObfus var doc = new XmlDocument(); var root = doc.CreateElement("mapping"); doc.AppendChild(root); - foreach (var kvp in _modRenames) + + var sortedModRenames = _modRenames.ToList(); + sortedModRenames.Sort((a, b) => a.Value.oldName.CompareTo(b.Value.oldName)); + foreach (var kvp in sortedModRenames) { ModuleDef mod = kvp.Key; RenameRecord record = kvp.Value; @@ -381,7 +392,9 @@ namespace Obfuz.ObfusPasses.SymbolObfus } root.AppendChild(assemblyNode); } - foreach (RenameMappingAssembly ass in _assemblies.Values) + + 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)) { @@ -389,9 +402,11 @@ namespace Obfuz.ObfusPasses.SymbolObfus } var assemblyNode = doc.CreateElement("assembly"); assemblyNode.SetAttribute("name", ass.assName); - foreach (var e in ass.types) + + var sortedTypes = GetSortedValueList(ass.types, (a, b) => a.oldFullName.CompareTo(b.oldFullName)); + foreach (var type in sortedTypes) { - WriteTypeMapping(assemblyNode, e.Key, e.Value); + WriteTypeMapping(assemblyNode, type.oldFullName, type); } root.AppendChild(assemblyNode); }