2025-10-29 20:40:37 +08:00
// Copyright 2025 Code Philosophy
/ /
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
/ /
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
/ /
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
2025-05-30 13:32:29 +08:00
using Obfuz.Utils ;
2025-05-28 09:25:09 +08:00
using System ;
2025-05-21 09:23:29 +08:00
using System.Collections.Generic ;
using System.Linq ;
using UnityEngine ;
namespace Obfuz.Settings
{
2025-05-23 12:47:57 +08:00
public class SymbolObfuscationSettingsFacade
{
public bool debug ;
public string obfuscatedNamePrefix ;
public bool useConsistentNamespaceObfuscation ;
2025-06-13 21:00:58 +08:00
public bool detectReflectionCompatibility ;
2025-06-06 22:57:28 +08:00
public bool keepUnknownSymbolInSymbolMappingFile ;
2025-05-23 12:47:57 +08:00
public string symbolMappingFile ;
public List < string > ruleFiles ;
2025-05-28 09:25:09 +08:00
public List < Type > customRenamePolicyTypes ;
2025-05-23 12:47:57 +08:00
}
2025-05-21 09:23:29 +08:00
[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 ;
2025-06-06 22:57:28 +08:00
[Tooltip("keep unknown symbol in symbol mapping file, if false, unknown symbol will be removed from mapping file")]
public bool keepUnknownSymbolInSymbolMappingFile = true ;
2025-05-21 09:23:29 +08:00
[Tooltip("symbol mapping file path")]
public string symbolMappingFile = "Assets/Obfuz/SymbolObfus/symbol-mapping.xml" ;
2025-05-29 11:39:10 +08:00
[Tooltip("debug symbol mapping file path, used for debugging purposes")]
public string debugSymbolMappingFile = "Assets/Obfuz/SymbolObfus/symbol-mapping-debug.xml" ;
2025-05-21 09:23:29 +08:00
[Tooltip("rule files")]
public string [ ] ruleFiles ;
2025-05-23 12:47:57 +08:00
2025-05-28 09:25:09 +08:00
[Tooltip("custom rename policy types")]
public string [ ] customRenamePolicyTypes ;
2025-05-29 11:39:10 +08:00
public string GetSymbolMappingFile ( )
{
return debug ? debugSymbolMappingFile : symbolMappingFile ;
}
2025-05-23 12:47:57 +08:00
public SymbolObfuscationSettingsFacade ToFacade ( )
{
return new SymbolObfuscationSettingsFacade
{
debug = debug ,
obfuscatedNamePrefix = obfuscatedNamePrefix ,
useConsistentNamespaceObfuscation = useConsistentNamespaceObfuscation ,
2025-06-13 21:00:58 +08:00
detectReflectionCompatibility = detectReflectionCompatibility ,
2025-06-06 22:57:28 +08:00
keepUnknownSymbolInSymbolMappingFile = keepUnknownSymbolInSymbolMappingFile ,
2025-05-29 11:39:10 +08:00
symbolMappingFile = GetSymbolMappingFile ( ) ,
2025-05-28 17:23:24 +08:00
ruleFiles = ruleFiles ? . ToList ( ) ? ? new List < string > ( ) ,
customRenamePolicyTypes = customRenamePolicyTypes ? . Select ( typeName = > ReflectionUtil . FindUniqueTypeInCurrentAppDomain ( typeName ) ) . ToList ( ) ? ? new List < Type > ( ) ,
2025-05-23 12:47:57 +08:00
} ;
}
2025-05-21 09:23:29 +08:00
}
}