obfuz/Editor/Settings/SymbolObfuscationSettings.cs

71 lines
2.7 KiB
C#
Raw Permalink Normal View History

2025-05-30 13:32:29 +08:00
using Obfuz.Utils;
2025-05-28 09:25:09 +08:00
using System;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
namespace Obfuz.Settings
{
public class SymbolObfuscationSettingsFacade
{
public bool debug;
public string obfuscatedNamePrefix;
public bool useConsistentNamespaceObfuscation;
2025-06-13 21:00:58 +08:00
public bool detectReflectionCompatibility;
public bool keepUnknownSymbolInSymbolMappingFile;
public string symbolMappingFile;
public List<string> ruleFiles;
2025-05-28 09:25:09 +08:00
public List<Type> customRenamePolicyTypes;
}
[Serializable]
public class SymbolObfuscationSettings
{
public bool debug;
[Tooltip("prefix for obfuscated name to avoid name confliction with original name")]
public string obfuscatedNamePrefix = "$";
[Tooltip("obfuscate same namespace to one name")]
public bool useConsistentNamespaceObfuscation = true;
2025-06-13 21:00:58 +08:00
[Tooltip("detect reflection compatibility, if true, will detect if the obfuscated name is compatibility with reflection, such as Type.GetType(), Enum.Parse(), etc.")]
public bool detectReflectionCompatibility = 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";
[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;
2025-05-28 09:25:09 +08:00
[Tooltip("custom rename policy types")]
public string[] customRenamePolicyTypes;
public string GetSymbolMappingFile()
{
return debug ? debugSymbolMappingFile : symbolMappingFile;
}
public SymbolObfuscationSettingsFacade ToFacade()
{
return new SymbolObfuscationSettingsFacade
{
debug = debug,
obfuscatedNamePrefix = obfuscatedNamePrefix,
useConsistentNamespaceObfuscation = useConsistentNamespaceObfuscation,
2025-06-13 21:00:58 +08:00
detectReflectionCompatibility = detectReflectionCompatibility,
keepUnknownSymbolInSymbolMappingFile = keepUnknownSymbolInSymbolMappingFile,
symbolMappingFile = GetSymbolMappingFile(),
ruleFiles = ruleFiles?.ToList() ?? new List<string>(),
customRenamePolicyTypes = customRenamePolicyTypes?.Select(typeName => ReflectionUtil.FindUniqueTypeInCurrentAppDomain(typeName)).ToList() ?? new List<Type>(),
};
}
}
}