From f5b45a054309ebcba2c3116ae1731e53ab76ea2f Mon Sep 17 00:00:00 2001 From: walon Date: Fri, 23 May 2025 11:13:45 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E9=9D=9E=E6=B7=B7?= =?UTF-8?q?=E6=B7=86=E7=9A=84=E7=A8=8B=E5=BA=8F=E9=9B=86=E4=B8=AD=E8=99=9A?= =?UTF-8?q?=E5=87=BD=E6=95=B0override=E6=B7=B7=E6=B7=86=E7=A8=8B=E5=BA=8F?= =?UTF-8?q?=E9=9B=86=E4=B8=AD=E5=87=BD=E6=95=B0=EF=BC=8C=E5=BD=93=E5=9F=BA?= =?UTF-8?q?=E7=B1=BB=E8=99=9A=E5=87=BD=E6=95=B0=E5=90=8D=E8=A2=AB=E6=B7=B7?= =?UTF-8?q?=E6=B7=86=E5=90=8E=E6=B2=A1=E6=9C=89=E5=90=8C=E6=AD=A5=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E9=9D=9E=E6=B7=B7=E6=B7=86=E7=A8=8B=E5=BA=8F=E9=9B=86?= =?UTF-8?q?=E4=B8=ADoverride=E5=87=BD=E6=95=B0=E5=90=8D=E7=9A=84bug=20remo?= =?UTF-8?q?ve:=20=E5=88=A0=E9=99=A4=20RenameRecordMap=E4=B8=AD=E7=BB=B4?= =?UTF-8?q?=E6=8A=A4parameter=E6=98=A0=E5=B0=84=E7=9A=84=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SymbolObfus/RenameRecordMap.cs | 57 +++++++------------ .../ObfusPasses/SymbolObfus/SymbolRename.cs | 2 +- 2 files changed, 20 insertions(+), 39 deletions(-) diff --git a/com.code-philosophy.obfuz/Editor/ObfusPasses/SymbolObfus/RenameRecordMap.cs b/com.code-philosophy.obfuz/Editor/ObfusPasses/SymbolObfus/RenameRecordMap.cs index 791f95d..4a69c90 100644 --- a/com.code-philosophy.obfuz/Editor/ObfusPasses/SymbolObfus/RenameRecordMap.cs +++ b/com.code-philosophy.obfuz/Editor/ObfusPasses/SymbolObfus/RenameRecordMap.cs @@ -92,7 +92,6 @@ namespace Obfuz.ObfusPasses.SymbolObfus private readonly Dictionary _modRenames = new Dictionary(); private readonly Dictionary _typeRenames = new Dictionary(); private readonly Dictionary _methodRenames = new Dictionary(); - private readonly Dictionary _paramRenames = new Dictionary(); private readonly Dictionary _fieldRenames = new Dictionary(); private readonly Dictionary _propertyRenames = new Dictionary(); private readonly Dictionary _eventRenames = new Dictionary(); @@ -147,7 +146,6 @@ namespace Obfuz.ObfusPasses.SymbolObfus { nameMaker.AddPreservedName(method, method.Name); string methodSig = TypeSigUtil.ComputeMethodDefSignature(method); - nameMaker.AddPreservedName(method, method.Name); RenameMappingMethod rmm = rmt?.methods.GetValueOrDefault(methodSig); if (rmm != null) @@ -163,19 +161,6 @@ namespace Obfuz.ObfusPasses.SymbolObfus renameMappingData = rmm, oldStackTraceSignature = MetaUtil.CreateMethodDefIl2CppStackTraceSignature(method), }); - foreach (Parameter param in method.Parameters) - { - if (param.ParamDef != null) - { - _paramRenames.Add(param.ParamDef, new RenameRecord - { - status = RenameStatus.NotRenamed, - signature = param.Name, - oldName = param.Name, - newName = null, - }); - } - } } foreach (FieldDef field in type.Fields) { @@ -550,13 +535,6 @@ namespace Obfuz.ObfusPasses.SymbolObfus methodNode.SetAttribute("oldStackTraceSignature", record.oldStackTraceSignature); methodNode.SetAttribute("newStackTraceSignature", MetaUtil.CreateMethodDefIl2CppStackTraceSignature(method)); //methodNode.SetAttribute("status", record != null ? record.status.ToString() : RenameStatus.NotRenamed.ToString()); - foreach (Parameter param in method.Parameters) - { - if (param.ParamDef != null) - { - WriteMethodParamMapping(methodNode, param.ParamDef); - } - } typeEle.AppendChild(methodNode); } @@ -568,19 +546,6 @@ namespace Obfuz.ObfusPasses.SymbolObfus typeEle.AppendChild(methodNode); } - private void WriteMethodParamMapping(XmlElement methodEle, ParamDef param) - { - if (!_paramRenames.TryGetValue(param, out var record) || record.status == RenameStatus.NotRenamed) - { - return; - } - var paramNode = methodEle.OwnerDocument.CreateElement("param"); - paramNode.SetAttribute("index", param.Sequence.ToString()); - paramNode.SetAttribute("newName", record.newName); - //paramNode.SetAttribute("status", record.status.ToString()); - methodEle.AppendChild(paramNode); - } - public void AddRename(ModuleDef mod, string newName) { RenameRecord record = _modRenames[mod]; @@ -597,9 +562,25 @@ namespace Obfuz.ObfusPasses.SymbolObfus public void AddRename(MethodDef method, string newName) { - RenameRecord record = _methodRenames[method]; - record.status = RenameStatus.Renamed; - record.newName = newName; + if (_methodRenames.TryGetValue(method, out RenameRecord record)) + { + record.status = RenameStatus.Renamed; + record.newName = newName; + return; + } + else + { + string methodSig = TypeSigUtil.ComputeMethodDefSignature(method); + _methodRenames.Add(method, new RenameRecord + { + status = RenameStatus.Renamed, + signature = methodSig, + oldName = method.Name, + newName = newName, + renameMappingData = null, + oldStackTraceSignature = MetaUtil.CreateMethodDefIl2CppStackTraceSignature(method), + }); + } } public void InitAndAddRename(VirtualMethodGroup methodGroup, string newName) diff --git a/com.code-philosophy.obfuz/Editor/ObfusPasses/SymbolObfus/SymbolRename.cs b/com.code-philosophy.obfuz/Editor/ObfusPasses/SymbolObfus/SymbolRename.cs index ef55dfe..d65f8c8 100644 --- a/com.code-philosophy.obfuz/Editor/ObfusPasses/SymbolObfus/SymbolRename.cs +++ b/com.code-philosophy.obfuz/Editor/ObfusPasses/SymbolObfus/SymbolRename.cs @@ -475,7 +475,7 @@ namespace Obfuz.ObfusPasses.SymbolObfus VirtualMethodGroup group = _virtualMethodGroupCalculator.GetMethodGroup(method); if (!groupNeedRenames.TryGetValue(group, out var needRename)) { - needRename = group.methods.All(m => _toObfuscatedModuleSet.Contains(m.DeclaringType.Module) && _renamePolicy.NeedRename(m)); + needRename = group.methods.All(m => _obfuscatedAndNotObfuscatedModules.Contains(m.Module) && (!_toObfuscatedModuleSet.Contains(m.DeclaringType.Module) || _renamePolicy.NeedRename(m))); groupNeedRenames.Add(group, needRename); if (needRename) {