From 1d1b257640412bcac00846dfde1387edf2ccd163 Mon Sep 17 00:00:00 2001 From: walon Date: Tue, 15 Apr 2025 17:49:02 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20RetargetTypeRefInCustomAtt?= =?UTF-8?q?ributes=E6=97=B6=E5=8C=B9=E9=85=8Dfield=E6=88=96property?= =?UTF-8?q?=E6=B2=A1=E6=9C=89=E6=AF=94=E8=BE=83TypeSig=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Editor/Obfuscator.cs | 2 +- Editor/Rename/SymbolRename.cs | 6 ++-- Editor/Rename/TestNameMaker.cs | 59 ++++++++++++++++++++++++++++++++++ 3 files changed, 64 insertions(+), 3 deletions(-) create mode 100644 Editor/Rename/TestNameMaker.cs diff --git a/Editor/Obfuscator.cs b/Editor/Obfuscator.cs index fb2e450..9e4ae67 100644 --- a/Editor/Obfuscator.cs +++ b/Editor/Obfuscator.cs @@ -34,7 +34,7 @@ namespace Obfuz _options = options; _assemblyCache = new AssemblyCache(new PathAssemblyResolver(options.AssemblySearchDirs.ToArray())); _renamePolicy = new CombineRenamePolicy(new SystemRenamePolicy(), new UnityRenamePolicy(), new XmlConfigRenamePolicy()); - _nameMaker = new NameMaker(); + _nameMaker = new TestNameMaker(); } public void DoIt() diff --git a/Editor/Rename/SymbolRename.cs b/Editor/Rename/SymbolRename.cs index 7f4c71f..ae8440c 100644 --- a/Editor/Rename/SymbolRename.cs +++ b/Editor/Rename/SymbolRename.cs @@ -315,7 +315,8 @@ namespace Obfuz } foreach (FieldDef field in hierarchyFields) { - if (field.Name == arg.Name) + // FIXME. field of Generic Base Type may not be same + if (field.Name == arg.Name && TypeEqualityComparer.Instance.Equals(field.FieldType, arg.Type)) { if (!refFieldMetasMap.TryGetValue(field, out var fieldMetas)) { @@ -502,7 +503,8 @@ namespace Obfuz } foreach (PropertyDef field in hierarchyProperties) { - if (field.Name == arg.Name) + // FIXME. field of Generic Base Type may not be same + if (field.Name == arg.Name && TypeEqualityComparer.Instance.Equals(arg.Type, field.PropertySig.RetType)) { if (!refPropertyMetasMap.TryGetValue(field, out var fieldMetas)) { diff --git a/Editor/Rename/TestNameMaker.cs b/Editor/Rename/TestNameMaker.cs new file mode 100644 index 0000000..fe8f5ee --- /dev/null +++ b/Editor/Rename/TestNameMaker.cs @@ -0,0 +1,59 @@ +using dnlib.DotNet; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Obfuz.Rename +{ + public class TestNameMaker : INameMaker + { + private int _nextIndex; + + private string GetDefaultNewName(string originName) + { + return $"{originName}>{_nextIndex++}"; + } + + public string GetNewName(ModuleDefMD mod, string originalName) + { + return GetDefaultNewName(originalName); + } + + public string GetNewNamespace(TypeDef typeDef, string originalNamespace) + { + return GetDefaultNewName(originalNamespace); + } + + public string GetNewName(TypeDef typeDef, string originalName) + { + return GetDefaultNewName(originalName); + } + + public string GetNewName(MethodDef methodDef, string originalName) + { + return GetDefaultNewName(originalName); + } + + public string GetNewName(ParamDef param, string originalName) + { + return GetDefaultNewName(originalName); + } + + public string GetNewName(FieldDef fieldDef, string originalName) + { + return GetDefaultNewName(originalName); + } + + public string GetNewName(PropertyDef propertyDef, string originalName) + { + return GetDefaultNewName(originalName); + } + + public string GetNewName(EventDef eventDef, string originalName) + { + return GetDefaultNewName(originalName); + } + } +}