符号混淆开启debug情况下不读取但写入symbol-mapping-debug.xml文件,这样LinkXmlProcess中也能正确映射到混淆后的名字

before-split
walon 2025-05-29 11:39:10 +08:00
parent 5ce7b9b5f4
commit c173efe689
4 changed files with 19 additions and 4 deletions

View File

@ -87,6 +87,7 @@ namespace Obfuz.ObfusPasses.SymbolObfus
} }
private readonly string _mappingFile; private readonly string _mappingFile;
private readonly bool _debug;
private readonly Dictionary<string, RenameMappingAssembly> _assemblies = new Dictionary<string, RenameMappingAssembly>(); private readonly Dictionary<string, RenameMappingAssembly> _assemblies = new Dictionary<string, RenameMappingAssembly>();
@ -99,9 +100,10 @@ namespace Obfuz.ObfusPasses.SymbolObfus
private readonly Dictionary<VirtualMethodGroup, RenameRecord> _virtualMethodGroups = new Dictionary<VirtualMethodGroup, RenameRecord>(); private readonly Dictionary<VirtualMethodGroup, RenameRecord> _virtualMethodGroups = new Dictionary<VirtualMethodGroup, RenameRecord>();
public RenameRecordMap(string mappingFile) public RenameRecordMap(string mappingFile, bool debug)
{ {
_mappingFile = mappingFile; _mappingFile = mappingFile;
_debug = debug;
} }
public void Init(List<ModuleDef> assemblies, INameMaker nameMaker) public void Init(List<ModuleDef> assemblies, INameMaker nameMaker)
@ -227,6 +229,11 @@ namespace Obfuz.ObfusPasses.SymbolObfus
{ {
return; return;
} }
if (_debug)
{
Debug.Log($"skip loading debug mapping file: {Path.GetFullPath(mappingFile)}");
return;
}
var doc = new XmlDocument(); var doc = new XmlDocument();
doc.Load(mappingFile); doc.Load(mappingFile);
var root = doc.DocumentElement; var root = doc.DocumentElement;

View File

@ -48,7 +48,7 @@ namespace Obfuz.ObfusPasses.SymbolObfus
_useConsistentNamespaceObfuscation = settings.useConsistentNamespaceObfuscation; _useConsistentNamespaceObfuscation = settings.useConsistentNamespaceObfuscation;
_mappingXmlPath = settings.symbolMappingFile; _mappingXmlPath = settings.symbolMappingFile;
_obfuscationRuleFiles = settings.ruleFiles.ToList(); _obfuscationRuleFiles = settings.ruleFiles.ToList();
_renameRecordMap = new RenameRecordMap(settings.debug ? null : settings.symbolMappingFile); _renameRecordMap = new RenameRecordMap(settings.symbolMappingFile, settings.debug);
_virtualMethodGroupCalculator = new VirtualMethodGroupCalculator(); _virtualMethodGroupCalculator = new VirtualMethodGroupCalculator();
_nameMaker = settings.debug ? NameMakerFactory.CreateDebugNameMaker() : NameMakerFactory.CreateNameMakerBaseASCIICharSet(settings.obfuscatedNamePrefix); _nameMaker = settings.debug ? NameMakerFactory.CreateDebugNameMaker() : NameMakerFactory.CreateNameMakerBaseASCIICharSet(settings.obfuscatedNamePrefix);

View File

@ -33,12 +33,20 @@ namespace Obfuz.Settings
[Tooltip("symbol mapping file path")] [Tooltip("symbol mapping file path")]
public string symbolMappingFile = "Assets/Obfuz/SymbolObfus/symbol-mapping.xml"; public string symbolMappingFile = "Assets/Obfuz/SymbolObfus/symbol-mapping.xml";
[Tooltip("debug symbol mapping file path, used for debugging purposes")]
public string debugSymbolMappingFile = "Assets/Obfuz/SymbolObfus/symbol-mapping-debug.xml";
[Tooltip("rule files")] [Tooltip("rule files")]
public string[] ruleFiles; public string[] ruleFiles;
[Tooltip("custom rename policy types")] [Tooltip("custom rename policy types")]
public string[] customRenamePolicyTypes; public string[] customRenamePolicyTypes;
public string GetSymbolMappingFile()
{
return debug ? debugSymbolMappingFile : symbolMappingFile;
}
public SymbolObfuscationSettingsFacade ToFacade() public SymbolObfuscationSettingsFacade ToFacade()
{ {
return new SymbolObfuscationSettingsFacade return new SymbolObfuscationSettingsFacade
@ -46,7 +54,7 @@ namespace Obfuz.Settings
debug = debug, debug = debug,
obfuscatedNamePrefix = obfuscatedNamePrefix, obfuscatedNamePrefix = obfuscatedNamePrefix,
useConsistentNamespaceObfuscation = useConsistentNamespaceObfuscation, useConsistentNamespaceObfuscation = useConsistentNamespaceObfuscation,
symbolMappingFile = symbolMappingFile, symbolMappingFile = GetSymbolMappingFile(),
ruleFiles = ruleFiles?.ToList() ?? new List<string>(), ruleFiles = ruleFiles?.ToList() ?? new List<string>(),
customRenamePolicyTypes = customRenamePolicyTypes?.Select(typeName => ReflectionUtil.FindUniqueTypeInCurrentAppDomain(typeName)).ToList() ?? new List<Type>(), customRenamePolicyTypes = customRenamePolicyTypes?.Select(typeName => ReflectionUtil.FindUniqueTypeInCurrentAppDomain(typeName)).ToList() ?? new List<Type>(),
}; };

View File

@ -42,7 +42,7 @@ namespace Obfuz.Unity
public static string GenerateAdditionalLinkXmlFile(BuildTarget target) public static string GenerateAdditionalLinkXmlFile(BuildTarget target)
{ {
ObfuzSettings settings = ObfuzSettings.Instance; ObfuzSettings settings = ObfuzSettings.Instance;
string symbolMappingFile = settings.symbolObfusSettings.symbolMappingFile; string symbolMappingFile = settings.symbolObfusSettings.GetSymbolMappingFile();
if (!File.Exists(symbolMappingFile)) if (!File.Exists(symbolMappingFile))
{ {
Debug.LogWarning($"Symbol mapping file not found: {symbolMappingFile}. Skipping link.xml generation."); Debug.LogWarning($"Symbol mapping file not found: {symbolMappingFile}. Skipping link.xml generation.");