From 48f1dfe64abae065317f9ca273d024f27abd93ff Mon Sep 17 00:00:00 2001 From: walon Date: Fri, 23 May 2025 23:06:18 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8DRenameMethod=E6=9C=AA?= =?UTF-8?q?=E5=A4=84=E7=90=86MethodImpl=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ObfusPasses/SymbolObfus/SymbolRename.cs | 53 +++++++++++-------- 1 file changed, 31 insertions(+), 22 deletions(-) diff --git a/com.code-philosophy.obfuz/Editor/ObfusPasses/SymbolObfus/SymbolRename.cs b/com.code-philosophy.obfuz/Editor/ObfusPasses/SymbolObfus/SymbolRename.cs index 7031de5..0e2a365 100644 --- a/com.code-philosophy.obfuz/Editor/ObfusPasses/SymbolObfus/SymbolRename.cs +++ b/com.code-philosophy.obfuz/Editor/ObfusPasses/SymbolObfus/SymbolRename.cs @@ -399,6 +399,8 @@ namespace Obfuz.ObfusPasses.SymbolObfus } } + + private void BuildRefMethodMetasMap(Dictionary refMethodMetasMap) { foreach (ModuleDef mod in _obfuscatedAndNotObfuscatedModules) @@ -417,6 +419,35 @@ namespace Obfuz.ObfusPasses.SymbolObfus } } } + + foreach (var type in mod.GetTypes()) + { + foreach (MethodDef method in type.Methods) + { + if (method.HasOverrides) + { + foreach (MethodOverride methodOverride in method.Overrides) + { + if (methodOverride.MethodDeclaration is MemberRef memberRef) + { + RenameMethodRef(memberRef, refMethodMetasMap); + } + else + { + Assert.IsTrue(methodOverride.MethodDeclaration is MethodDef); + } + if (methodOverride.MethodBody is MemberRef memberRef2) + { + RenameMethodRef(memberRef2, refMethodMetasMap); + } + else + { + Assert.IsTrue(methodOverride.MethodBody is MethodDef); + } + } + } + } + } } } @@ -617,28 +648,6 @@ 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(TypeDef type, RefTypeDefMetas refTypeDefMeta) { string moduleName = MetaUtil.GetModuleNameWithoutExt(type.Module.Name);