重构 SymbolObfus配置
parent
d741eed042
commit
3c46760ac7
|
@ -9,6 +9,11 @@ namespace Obfuz.ObfusPasses.SymbolObfus
|
|||
{
|
||||
public static class NameMakerFactory
|
||||
{
|
||||
public static INameMaker CreateDebugNameMaker()
|
||||
{
|
||||
return new TestNameMaker();
|
||||
}
|
||||
|
||||
public static INameMaker CreateNameMakerBaseASCIICharSet()
|
||||
{
|
||||
var words = new List<string>();
|
||||
|
|
|
@ -11,7 +11,7 @@ using UnityEngine;
|
|||
namespace Obfuz.ObfusPasses.SymbolObfus
|
||||
{
|
||||
|
||||
public class ObfuscateRuleConfig : RenamePolicyBase
|
||||
public class RuleBasedRenamePolicy : RenamePolicyBase
|
||||
{
|
||||
enum ObfuscationType
|
||||
{
|
||||
|
@ -707,7 +707,7 @@ namespace Obfuz.ObfusPasses.SymbolObfus
|
|||
|
||||
private readonly HashSet<string> _obfuscationAssemblyNames;
|
||||
|
||||
public ObfuscateRuleConfig(List<string> obfuscationAssemblyNames)
|
||||
public RuleBasedRenamePolicy(List<string> obfuscationAssemblyNames)
|
||||
{
|
||||
this._obfuscationAssemblyNames = obfuscationAssemblyNames.ToHashSet();
|
||||
}
|
|
@ -1,4 +1,5 @@
|
|||
using System;
|
||||
using Obfuz.Settings;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
@ -6,13 +7,13 @@ using System.Threading.Tasks;
|
|||
|
||||
namespace Obfuz.ObfusPasses.SymbolObfus
|
||||
{
|
||||
public class RenameSymbolPass : ObfuscationPassBase
|
||||
public class SymbolObfusPass : ObfuscationPassBase
|
||||
{
|
||||
private SymbolRename _symbolRename;
|
||||
|
||||
public RenameSymbolPass(List<string> obfuscationRuleFiles, string mappingXmlPath)
|
||||
public SymbolObfusPass(SymbolObfusSettings settings)
|
||||
{
|
||||
_symbolRename = new SymbolRename(mappingXmlPath, obfuscationRuleFiles);
|
||||
_symbolRename = new SymbolRename(settings);
|
||||
}
|
||||
|
||||
public override void Start(ObfuscationPassContext ctx)
|
|
@ -1,5 +1,6 @@
|
|||
using dnlib.DotNet;
|
||||
using Obfuz.ObfusPasses.SymbolObfus;
|
||||
using Obfuz.Settings;
|
||||
using Obfuz.Utils;
|
||||
using System;
|
||||
using System.Collections;
|
||||
|
@ -36,7 +37,7 @@ namespace Obfuz.ObfusPasses.SymbolObfus
|
|||
private List<ModuleDef> _obfuscatedAndNotObfuscatedModules;
|
||||
private List<AssemblyReferenceInfo> _obfuzAssemblies;
|
||||
private HashSet<ModuleDef> _toObfuscatedModuleSet;
|
||||
private ObfuscateRuleConfig _obfuscateRuleConfig;
|
||||
private RuleBasedRenamePolicy _obfuscateRuleConfig;
|
||||
private IRenamePolicy _renamePolicy;
|
||||
private INameMaker _nameMaker;
|
||||
private readonly Dictionary<ModuleDef, List<CustomAttributeInfo>> _customAttributeArgumentsWithTypeByMods = new Dictionary<ModuleDef, List<CustomAttributeInfo>>();
|
||||
|
@ -51,12 +52,13 @@ namespace Obfuz.ObfusPasses.SymbolObfus
|
|||
public List<CANamedArgument> namedArguments;
|
||||
}
|
||||
|
||||
public SymbolRename(string mappingXmlPath, List<string> obfuscationRuleFiles)
|
||||
public SymbolRename(SymbolObfusSettings settings)
|
||||
{
|
||||
_mappingXmlPath = mappingXmlPath;
|
||||
_obfuscationRuleFiles = obfuscationRuleFiles;
|
||||
_renameRecordMap = new RenameRecordMap(mappingXmlPath);
|
||||
_mappingXmlPath = settings.mappingFile;
|
||||
_obfuscationRuleFiles = settings.ruleFiles.ToList();
|
||||
_renameRecordMap = new RenameRecordMap(settings.mappingFile);
|
||||
_virtualMethodGroupCalculator = new VirtualMethodGroupCalculator();
|
||||
_nameMaker = settings.debug ? NameMakerFactory.CreateDebugNameMaker() : NameMakerFactory.CreateNameMakerBaseASCIICharSet();
|
||||
}
|
||||
|
||||
public void Init(ObfuscationPassContext ctx)
|
||||
|
@ -66,10 +68,9 @@ namespace Obfuz.ObfusPasses.SymbolObfus
|
|||
_obfuscatedAndNotObfuscatedModules = ctx.obfuscatedAndNotObfuscatedModules;
|
||||
_toObfuscatedModuleSet = ctx.toObfuscatedModules.ToHashSet();
|
||||
_obfuzAssemblies = BuildAssemblyReferenceInfos(ctx);
|
||||
_obfuscateRuleConfig = new ObfuscateRuleConfig(ctx.toObfuscatedAssemblyNames);
|
||||
_obfuscateRuleConfig = new RuleBasedRenamePolicy(ctx.toObfuscatedAssemblyNames);
|
||||
_obfuscateRuleConfig.LoadXmls(_obfuscationRuleFiles);
|
||||
_renamePolicy = new CacheRenamePolicy(new CombineRenamePolicy(new SystemRenamePolicy(), new UnityRenamePolicy(), _obfuscateRuleConfig));
|
||||
_nameMaker = NameMakerFactory.CreateNameMakerBaseASCIICharSet();
|
||||
BuildCustomAttributeArguments();
|
||||
}
|
||||
|
||||
|
|
|
@ -93,7 +93,7 @@ namespace Obfuz
|
|||
}
|
||||
if (obfuscationPasses.HasFlag(ObfuscationPassType.SymbolObfuscation))
|
||||
{
|
||||
builder.AddPass(new RenameSymbolPass(settings.ruleFiles.ToList(), settings.mappingFile));
|
||||
builder.AddPass(new SymbolObfusPass(settings.symbolObfusSettings));
|
||||
}
|
||||
builder.AddPass(new CleanUpInstructionPass());
|
||||
return builder;
|
||||
|
|
|
@ -23,11 +23,8 @@ namespace Obfuz.Settings
|
|||
[Tooltip("enable obfuscation pass")]
|
||||
public ObfuscationPassType enabledObfuscationPasses = ObfuscationPassType.All;
|
||||
|
||||
[Tooltip("path of mapping.xml")]
|
||||
public string mappingFile = "Assets/Obfuz/mapping.xml";
|
||||
|
||||
[Tooltip("obfuscation rule files for assemblies")]
|
||||
public string[] ruleFiles;
|
||||
[Tooltip("symbol obfuscation settings")]
|
||||
public SymbolObfusSettings symbolObfusSettings;
|
||||
|
||||
[Tooltip("extra assembly search dirs")]
|
||||
public string[] extraAssemblySearchDirs;
|
||||
|
|
|
@ -31,11 +31,12 @@ namespace Obfuz.Settings
|
|||
private SerializedProperty _enable;
|
||||
private SerializedProperty _toObfuscatedAssemblyNames;
|
||||
private SerializedProperty _notObfuscatedAssemblyNamesReferencingObfuscated;
|
||||
private SerializedProperty _enabledObfuscationPasses;
|
||||
private SerializedProperty _mappingFile;
|
||||
private SerializedProperty _ruleFiles;
|
||||
private SerializedProperty _extraAssemblySearchDirs;
|
||||
|
||||
private SerializedProperty _enabledObfuscationPasses;
|
||||
|
||||
private SerializedProperty _symbolObfusSettings;
|
||||
|
||||
public ObfuzSettingsProvider() : base("Project/Obfuz", SettingsScope.Project)
|
||||
{
|
||||
}
|
||||
|
@ -59,10 +60,10 @@ namespace Obfuz.Settings
|
|||
_enable = _serializedObject.FindProperty("enable");
|
||||
_toObfuscatedAssemblyNames = _serializedObject.FindProperty("toObfuscatedAssemblyNames");
|
||||
_notObfuscatedAssemblyNamesReferencingObfuscated = _serializedObject.FindProperty("notObfuscatedAssemblyNamesReferencingObfuscated");
|
||||
_enabledObfuscationPasses = _serializedObject.FindProperty("enabledObfuscationPasses");
|
||||
_mappingFile = _serializedObject.FindProperty("mappingFile");
|
||||
_ruleFiles = _serializedObject.FindProperty("ruleFiles");
|
||||
_extraAssemblySearchDirs = _serializedObject.FindProperty("extraAssemblySearchDirs");
|
||||
_enabledObfuscationPasses = _serializedObject.FindProperty("enabledObfuscationPasses");
|
||||
|
||||
_symbolObfusSettings = _serializedObject.FindProperty("symbolObfusSettings");
|
||||
}
|
||||
|
||||
public override void OnGUI(string searchContext)
|
||||
|
@ -77,10 +78,10 @@ namespace Obfuz.Settings
|
|||
EditorGUILayout.PropertyField(_enable);
|
||||
EditorGUILayout.PropertyField(_toObfuscatedAssemblyNames);
|
||||
EditorGUILayout.PropertyField(_notObfuscatedAssemblyNamesReferencingObfuscated);
|
||||
EditorGUILayout.PropertyField(_enabledObfuscationPasses);
|
||||
EditorGUILayout.PropertyField(_mappingFile);
|
||||
EditorGUILayout.PropertyField(_ruleFiles);
|
||||
EditorGUILayout.PropertyField(_extraAssemblySearchDirs);
|
||||
EditorGUILayout.PropertyField(_enabledObfuscationPasses);
|
||||
EditorGUILayout.PropertyField(_symbolObfusSettings);
|
||||
|
||||
|
||||
if (EditorGUI.EndChangeCheck())
|
||||
{
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Obfuz.Settings
|
||||
{
|
||||
[Serializable]
|
||||
public class SymbolObfusSettings
|
||||
{
|
||||
public bool debug;
|
||||
|
||||
[Tooltip("path of mapping.xml")]
|
||||
public string mappingFile = "Assets/Obfuz/SymbolObfus/mapping.xml";
|
||||
|
||||
[Tooltip("obfuscation rule files for assemblies")]
|
||||
public string[] ruleFiles;
|
||||
}
|
||||
}
|
|
@ -24,7 +24,7 @@ namespace Obfuz.Utils
|
|||
string assPath = Path.Combine(path, assemblyName + ".dll");
|
||||
if (File.Exists(assPath))
|
||||
{
|
||||
Debug.Log($"resolve {assemblyName} at {assPath}");
|
||||
//Debug.Log($"resolve {assemblyName} at {assPath}");
|
||||
return assPath;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue