符号混淆开启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 bool _debug;
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>();
public RenameRecordMap(string mappingFile)
public RenameRecordMap(string mappingFile, bool debug)
{
_mappingFile = mappingFile;
_debug = debug;
}
public void Init(List<ModuleDef> assemblies, INameMaker nameMaker)
@ -227,6 +229,11 @@ namespace Obfuz.ObfusPasses.SymbolObfus
{
return;
}
if (_debug)
{
Debug.Log($"skip loading debug mapping file: {Path.GetFullPath(mappingFile)}");
return;
}
var doc = new XmlDocument();
doc.Load(mappingFile);
var root = doc.DocumentElement;

View File

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

View File

@ -33,12 +33,20 @@ namespace Obfuz.Settings
[Tooltip("symbol mapping file path")]
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")]
public string[] ruleFiles;
[Tooltip("custom rename policy types")]
public string[] customRenamePolicyTypes;
public string GetSymbolMappingFile()
{
return debug ? debugSymbolMappingFile : symbolMappingFile;
}
public SymbolObfuscationSettingsFacade ToFacade()
{
return new SymbolObfuscationSettingsFacade
@ -46,7 +54,7 @@ namespace Obfuz.Settings
debug = debug,
obfuscatedNamePrefix = obfuscatedNamePrefix,
useConsistentNamespaceObfuscation = useConsistentNamespaceObfuscation,
symbolMappingFile = symbolMappingFile,
symbolMappingFile = GetSymbolMappingFile(),
ruleFiles = ruleFiles?.ToList() ?? new List<string>(),
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)
{
ObfuzSettings settings = ObfuzSettings.Instance;
string symbolMappingFile = settings.symbolObfusSettings.symbolMappingFile;
string symbolMappingFile = settings.symbolObfusSettings.GetSymbolMappingFile();
if (!File.Exists(symbolMappingFile))
{
Debug.LogWarning($"Symbol mapping file not found: {symbolMappingFile}. Skipping link.xml generation.");