From 07afb0f7ef4b1935429cd8ff017f1b1e5ef1cb5d Mon Sep 17 00:00:00 2001 From: walon Date: Mon, 5 May 2025 09:31:18 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A7=BB=E9=99=A4Module=20Rename=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../{TestNameMaker.cs => DebugNameMaker.cs} | 9 +++- Editor/ObfusPasses/SymbolObfus/INameMaker.cs | 4 -- .../ObfusPasses/SymbolObfus/NameMakerBase.cs | 13 +----- .../SymbolObfus/NameMakerFactory.cs | 2 +- .../SymbolObfus/RenameRecordMap.cs | 33 ++------------- .../ObfusPasses/SymbolObfus/SymbolRename.cs | 42 +++++++++---------- 6 files changed, 34 insertions(+), 69 deletions(-) rename Editor/ObfusPasses/SymbolObfus/{TestNameMaker.cs => DebugNameMaker.cs} (67%) diff --git a/Editor/ObfusPasses/SymbolObfus/TestNameMaker.cs b/Editor/ObfusPasses/SymbolObfus/DebugNameMaker.cs similarity index 67% rename from Editor/ObfusPasses/SymbolObfus/TestNameMaker.cs rename to Editor/ObfusPasses/SymbolObfus/DebugNameMaker.cs index cc3844d..acacf83 100644 --- a/Editor/ObfusPasses/SymbolObfus/TestNameMaker.cs +++ b/Editor/ObfusPasses/SymbolObfus/DebugNameMaker.cs @@ -1,8 +1,9 @@ -using System.Text; +using dnlib.DotNet; +using System.Text; namespace Obfuz.ObfusPasses.SymbolObfus { - public class TestNameMaker : NameMakerBase + public class DebugNameMaker : NameMakerBase { private class TestNameScope : NameScopeBase { @@ -18,5 +19,9 @@ namespace Obfuz.ObfusPasses.SymbolObfus return new TestNameScope(); } + public override string GetNewName(ParamDef param, string originalName) + { + return $"${originalName}"; + } } } diff --git a/Editor/ObfusPasses/SymbolObfus/INameMaker.cs b/Editor/ObfusPasses/SymbolObfus/INameMaker.cs index 03c18cc..4028edc 100644 --- a/Editor/ObfusPasses/SymbolObfus/INameMaker.cs +++ b/Editor/ObfusPasses/SymbolObfus/INameMaker.cs @@ -4,8 +4,6 @@ namespace Obfuz.ObfusPasses.SymbolObfus { public interface INameMaker { - void AddPreservedName(ModuleDef mod, string name); - void AddPreservedName(TypeDef typeDef, string name); void AddPreservedNamespace(TypeDef typeDef, string name); @@ -20,8 +18,6 @@ namespace Obfuz.ObfusPasses.SymbolObfus void AddPreservedName(EventDef eventDef, string name); - string GetNewName(ModuleDef mod, string originalName); - string GetNewName(TypeDef typeDef, string originalName); string GetNewNamespace(TypeDef typeDef, string originalNamespace, bool reuse); diff --git a/Editor/ObfusPasses/SymbolObfus/NameMakerBase.cs b/Editor/ObfusPasses/SymbolObfus/NameMakerBase.cs index 9bec34d..234e370 100644 --- a/Editor/ObfusPasses/SymbolObfus/NameMakerBase.cs +++ b/Editor/ObfusPasses/SymbolObfus/NameMakerBase.cs @@ -26,11 +26,6 @@ namespace Obfuz.ObfusPasses.SymbolObfus return nameScope; } - public void AddPreservedName(ModuleDef mod, string name) - { - GetNameScope(mod).AddPreservedName(name); - } - public void AddPreservedName(TypeDef typeDef, string name) { GetNameScope(typeDef.Module).AddPreservedName(name); @@ -66,12 +61,6 @@ namespace Obfuz.ObfusPasses.SymbolObfus GetNameScope(_namespaceScope).AddPreservedName(name); } - - public string GetNewName(ModuleDef mod, string originalName) - { - return GetDefaultNewName(this, originalName); - } - private string GetDefaultNewName(object scope, string originName) { return GetNameScope(scope).GetNewName(originName, false); @@ -96,7 +85,7 @@ namespace Obfuz.ObfusPasses.SymbolObfus return GetDefaultNewName(methodDef.DeclaringType, originalName); } - public string GetNewName(ParamDef param, string originalName) + public virtual string GetNewName(ParamDef param, string originalName) { return "1"; } diff --git a/Editor/ObfusPasses/SymbolObfus/NameMakerFactory.cs b/Editor/ObfusPasses/SymbolObfus/NameMakerFactory.cs index 93cc380..3c3213d 100644 --- a/Editor/ObfusPasses/SymbolObfus/NameMakerFactory.cs +++ b/Editor/ObfusPasses/SymbolObfus/NameMakerFactory.cs @@ -11,7 +11,7 @@ namespace Obfuz.ObfusPasses.SymbolObfus { public static INameMaker CreateDebugNameMaker() { - return new TestNameMaker(); + return new DebugNameMaker(); } public static INameMaker CreateNameMakerBaseASCIICharSet() diff --git a/Editor/ObfusPasses/SymbolObfus/RenameRecordMap.cs b/Editor/ObfusPasses/SymbolObfus/RenameRecordMap.cs index 1843a0a..a1e12ae 100644 --- a/Editor/ObfusPasses/SymbolObfus/RenameRecordMap.cs +++ b/Editor/ObfusPasses/SymbolObfus/RenameRecordMap.cs @@ -81,9 +81,7 @@ namespace Obfuz.ObfusPasses.SymbolObfus private class RenameMappingAssembly { - public RenameStatus status; - public string oldAssName; - public string newAssName; + public string assName; public Dictionary types = new Dictionary(); } @@ -113,13 +111,8 @@ namespace Obfuz.ObfusPasses.SymbolObfus foreach (ModuleDef mod in assemblies) { string name = mod.Assembly.Name; - nameMaker.AddPreservedName(mod, name); RenameMappingAssembly rma = _assemblies.GetValueOrDefault(name); - if (rma != null && rma.status == RenameStatus.Renamed) - { - nameMaker.AddPreservedName(mod, rma.newAssName); - } _modRenames.Add(mod, new RenameRecord { @@ -270,12 +263,9 @@ namespace Obfuz.ObfusPasses.SymbolObfus } var assemblyName = ele.Attributes["name"].Value; - var newAssemblyName = ele.Attributes["newName"].Value; var rma = new RenameMappingAssembly { - oldAssName = assemblyName, - newAssName = newAssemblyName, - status = (RenameStatus)System.Enum.Parse(typeof(RenameStatus), ele.Attributes["status"].Value), + assName = assemblyName, }; foreach (XmlNode node in ele.ChildNodes) { @@ -408,8 +398,6 @@ namespace Obfuz.ObfusPasses.SymbolObfus RenameRecord record = kvp.Value; var assemblyNode = doc.CreateElement("assembly"); assemblyNode.SetAttribute("name", mod.Assembly.Name); - assemblyNode.SetAttribute("newName", record.status == RenameStatus.Renamed ? record.newName : ""); - assemblyNode.SetAttribute("status", record.status.ToString()); foreach (TypeDef type in mod.GetTypes()) { WriteTypeMapping(assemblyNode, type); @@ -418,14 +406,12 @@ namespace Obfuz.ObfusPasses.SymbolObfus } foreach (RenameMappingAssembly ass in _assemblies.Values) { - if (_modRenames.Keys.Any(m => m.Assembly.Name == ass.oldAssName)) + if (_modRenames.Keys.Any(m => m.Assembly.Name == ass.assName)) { continue; } var assemblyNode = doc.CreateElement("assembly"); - assemblyNode.SetAttribute("name", ass.oldAssName); - assemblyNode.SetAttribute("newName", ass.status == RenameStatus.Renamed ? ass.newAssName : ""); - assemblyNode.SetAttribute("status", ass.status.ToString()); + assemblyNode.SetAttribute("name", ass.assName); foreach (var e in ass.types) { WriteTypeMapping(assemblyNode, e.Key, e.Value); @@ -678,17 +664,6 @@ namespace Obfuz.ObfusPasses.SymbolObfus record.newName = newName; } - public bool TryGetExistRenameMapping(ModuleDef mod, out string newName) - { - if (_modRenames.TryGetValue(mod, out var record) && record.renameMappingData != null) - { - newName = ((RenameMappingAssembly)record.renameMappingData).newAssName; - return true; - } - newName = null; - return false; - } - public bool TryGetExistRenameMapping(TypeDef type, out string newNamespace, out string newName) { if (_typeRenames.TryGetValue(type, out var record) && record.renameMappingData != null) diff --git a/Editor/ObfusPasses/SymbolObfus/SymbolRename.cs b/Editor/ObfusPasses/SymbolObfus/SymbolRename.cs index 9ae890d..cf97a50 100644 --- a/Editor/ObfusPasses/SymbolObfus/SymbolRename.cs +++ b/Editor/ObfusPasses/SymbolObfus/SymbolRename.cs @@ -586,27 +586,27 @@ namespace Obfuz.ObfusPasses.SymbolObfus Debug.Log("Rename events begin"); } - private void Rename(ModuleDef mod) - { - string oldName = mod.Assembly.Name; - string newName = _renameRecordMap.TryGetExistRenameMapping(mod, out var n) ? n : _nameMaker.GetNewName(mod, oldName); - _renameRecordMap.AddRename(mod, newName); - mod.Assembly.Name = newName; - mod.Name = $"{newName}.dll"; - //Debug.Log($"rename module. oldName:{oldName} newName:{newName}"); - foreach (AssemblyReferenceInfo ass in GetReferenceMeAssemblies(mod)) - { - foreach (AssemblyRef assRef in ass.module.GetAssemblyRefs()) - { - if (assRef.Name == oldName) - { - _renameRecordMap.AddRename(mod, newName); - assRef.Name = newName; - // Debug.Log($"rename assembly:{ass.name} ref oldName:{oldName} newName:{newName}"); - } - } - } - } + //private void Rename(ModuleDef mod) + //{ + // string oldName = mod.Assembly.Name; + // string newName = _renameRecordMap.TryGetExistRenameMapping(mod, out var n) ? n : _nameMaker.GetNewName(mod, oldName); + // _renameRecordMap.AddRename(mod, newName); + // mod.Assembly.Name = newName; + // mod.Name = $"{newName}.dll"; + // //Debug.Log($"rename module. oldName:{oldName} newName:{newName}"); + // foreach (AssemblyReferenceInfo ass in GetReferenceMeAssemblies(mod)) + // { + // foreach (AssemblyRef assRef in ass.module.GetAssemblyRefs()) + // { + // if (assRef.Name == oldName) + // { + // _renameRecordMap.AddRename(mod, newName); + // assRef.Name = newName; + // // Debug.Log($"rename assembly:{ass.name} ref oldName:{oldName} newName:{newName}"); + // } + // } + // } + //} private void Rename(TypeDef type, RefTypeDefMetas refTypeDefMeta) {