From f1c423ed02564c151f0b48857dfd1afd05466e1e Mon Sep 17 00:00:00 2001 From: walon Date: Fri, 6 Jun 2025 22:57:28 +0800 Subject: [PATCH] =?UTF-8?q?SymbolObfuscationSettings=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E9=A1=B9keepUnknownSymbolInSymbolMappingFile?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Editor/ObfusPasses/SymbolObfus/RenameRecordMap.cs | 6 ++++-- Editor/ObfusPasses/SymbolObfus/SymbolRename.cs | 2 +- Editor/Settings/SymbolObfuscationSettings.cs | 5 +++++ 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/Editor/ObfusPasses/SymbolObfus/RenameRecordMap.cs b/Editor/ObfusPasses/SymbolObfus/RenameRecordMap.cs index bb1dba4..5f8fc4c 100644 --- a/Editor/ObfusPasses/SymbolObfus/RenameRecordMap.cs +++ b/Editor/ObfusPasses/SymbolObfus/RenameRecordMap.cs @@ -87,6 +87,7 @@ namespace Obfuz.ObfusPasses.SymbolObfus private readonly string _mappingFile; private readonly bool _debug; + private readonly bool _keepUnknownSymbolInSymbolMappingFile; private readonly Dictionary _assemblies = new Dictionary(); @@ -99,10 +100,11 @@ namespace Obfuz.ObfusPasses.SymbolObfus private readonly Dictionary _virtualMethodGroups = new Dictionary(); - public RenameRecordMap(string mappingFile, bool debug) + public RenameRecordMap(string mappingFile, bool debug, bool keepUnknownSymbolInSymbolMappingFile) { _mappingFile = mappingFile; _debug = debug; + _keepUnknownSymbolInSymbolMappingFile = keepUnknownSymbolInSymbolMappingFile; } public void Init(List assemblies, INameMaker nameMaker) @@ -395,7 +397,7 @@ namespace Obfuz.ObfusPasses.SymbolObfus { WriteTypeMapping(assemblyNode, typeDef); } - else + else if (_keepUnknownSymbolInSymbolMappingFile) { WriteTypeMapping(assemblyNode, typeName, ass.types[typeName]); } diff --git a/Editor/ObfusPasses/SymbolObfus/SymbolRename.cs b/Editor/ObfusPasses/SymbolObfus/SymbolRename.cs index 613530c..af2c2e1 100644 --- a/Editor/ObfusPasses/SymbolObfus/SymbolRename.cs +++ b/Editor/ObfusPasses/SymbolObfus/SymbolRename.cs @@ -43,7 +43,7 @@ namespace Obfuz.ObfusPasses.SymbolObfus _useConsistentNamespaceObfuscation = settings.useConsistentNamespaceObfuscation; _mappingXmlPath = settings.symbolMappingFile; _obfuscationRuleFiles = settings.ruleFiles.ToList(); - _renameRecordMap = new RenameRecordMap(settings.symbolMappingFile, settings.debug); + _renameRecordMap = new RenameRecordMap(settings.symbolMappingFile, settings.debug, settings.keepUnknownSymbolInSymbolMappingFile); _virtualMethodGroupCalculator = new VirtualMethodGroupCalculator(); _nameMaker = settings.debug ? NameMakerFactory.CreateDebugNameMaker() : NameMakerFactory.CreateNameMakerBaseASCIICharSet(settings.obfuscatedNamePrefix); diff --git a/Editor/Settings/SymbolObfuscationSettings.cs b/Editor/Settings/SymbolObfuscationSettings.cs index 8c9140c..a2725fc 100644 --- a/Editor/Settings/SymbolObfuscationSettings.cs +++ b/Editor/Settings/SymbolObfuscationSettings.cs @@ -11,6 +11,7 @@ namespace Obfuz.Settings public bool debug; public string obfuscatedNamePrefix; public bool useConsistentNamespaceObfuscation; + public bool keepUnknownSymbolInSymbolMappingFile; public string symbolMappingFile; public List ruleFiles; public List customRenamePolicyTypes; @@ -27,6 +28,9 @@ namespace Obfuz.Settings [Tooltip("obfuscate same namespace to one name")] public bool useConsistentNamespaceObfuscation = true; + [Tooltip("keep unknown symbol in symbol mapping file, if false, unknown symbol will be removed from mapping file")] + public bool keepUnknownSymbolInSymbolMappingFile = true; + [Tooltip("symbol mapping file path")] public string symbolMappingFile = "Assets/Obfuz/SymbolObfus/symbol-mapping.xml"; @@ -51,6 +55,7 @@ namespace Obfuz.Settings debug = debug, obfuscatedNamePrefix = obfuscatedNamePrefix, useConsistentNamespaceObfuscation = useConsistentNamespaceObfuscation, + keepUnknownSymbolInSymbolMappingFile = keepUnknownSymbolInSymbolMappingFile, symbolMappingFile = GetSymbolMappingFile(), ruleFiles = ruleFiles?.ToList() ?? new List(), customRenamePolicyTypes = customRenamePolicyTypes?.Select(typeName => ReflectionUtil.FindUniqueTypeInCurrentAppDomain(typeName)).ToList() ?? new List(),