重构settings

backup
walon 2025-05-12 08:46:44 +08:00
parent ce535949aa
commit d80c83d1e9
8 changed files with 79 additions and 53 deletions

View File

@ -111,18 +111,18 @@ namespace Obfuz
{ {
var builder = new ObfuscatorBuilder var builder = new ObfuscatorBuilder
{ {
_secret = settings.secret, _secret = settings.secretSettings.secret,
_secretOutputPath = settings.secretOutputPath, _secretOutputPath = settings.secretSettings.secretOutputPath,
_randomSeed = settings.randomSeed, _randomSeed = settings.secretSettings.randomSeed,
_encryptionVmGenerationSecretKey = settings.encryptionVMSettings.codeGenerationSecret, _encryptionVmGenerationSecretKey = settings.encryptionVMSettings.codeGenerationSecret,
_encryptionVmOpCodeCount = settings.encryptionVMSettings.encryptionOpCodeCount, _encryptionVmOpCodeCount = settings.encryptionVMSettings.encryptionOpCodeCount,
_encryptionVmCodeFile = settings.encryptionVMSettings.codeOutputPath, _encryptionVmCodeFile = settings.encryptionVMSettings.codeOutputPath,
_toObfuscatedAssemblyNames = settings.toObfuscatedAssemblyNames.ToList(), _toObfuscatedAssemblyNames = settings.assemblySettings.toObfuscatedAssemblyNames.ToList(),
_notObfuscatedAssemblyNamesReferencingObfuscated = settings.notObfuscatedAssemblyNamesReferencingObfuscated.ToList(), _notObfuscatedAssemblyNamesReferencingObfuscated = settings.assemblySettings.notObfuscatedAssemblyNamesReferencingObfuscated.ToList(),
_assemblySearchDirs = settings.extraAssemblySearchDirs.ToList(), _assemblySearchDirs = settings.assemblySettings.extraAssemblySearchDirs.ToList(),
_obfuscatedAssemblyOutputDir = settings.GetObfuscatedAssemblyOutputDir(target), _obfuscatedAssemblyOutputDir = settings.GetObfuscatedAssemblyOutputDir(target),
}; };
ObfuscationPassType obfuscationPasses = settings.enabledObfuscationPasses; ObfuscationPassType obfuscationPasses = settings.obfuscationPassSettings.enabledPasses;
if (obfuscationPasses.HasFlag(ObfuscationPassType.ConstEncrypt)) if (obfuscationPasses.HasFlag(ObfuscationPassType.ConstEncrypt))
{ {
builder.AddPass(new ConstEncryptPass(settings.constEncryptSettings)); builder.AddPass(new ConstEncryptPass(settings.constEncryptSettings));

View File

@ -0,0 +1,19 @@
using System;
using UnityEngine;
namespace Obfuz.Settings
{
[Serializable]
public class AssemblySettings
{
[Tooltip("name of assemblies to obfuscated")]
public string[] toObfuscatedAssemblyNames;
[Tooltip("name of assemblies not obfuscated but reference assemblies to obfuscated ")]
public string[] notObfuscatedAssemblyNamesReferencingObfuscated;
[Tooltip("extra assembly search dirs")]
public string[] extraAssemblySearchDirs;
}
}

View File

@ -0,0 +1,16 @@
using Obfuz.ObfusPasses;
using System;
using UnityEngine;
namespace Obfuz.Settings
{
[Serializable]
public class ObfuscationPassSettings
{
[Tooltip("enable obfuscation pass")]
public ObfuscationPassType enabledPasses = ObfuscationPassType.All;
[Tooltip("config xml files")]
public string[] configFiles;
}
}

View File

@ -1,4 +1,3 @@
using Obfuz.ObfusPasses;
using System.Collections.Generic; using System.Collections.Generic;
using System.IO; using System.IO;
using System.Runtime.Remoting.Messaging; using System.Runtime.Remoting.Messaging;
@ -9,31 +8,20 @@ using UnityEngine;
namespace Obfuz.Settings namespace Obfuz.Settings
{ {
public class ObfuzSettings : ScriptableObject public class ObfuzSettings : ScriptableObject
{ {
[Tooltip("enable Obfuz")] [Tooltip("enable Obfuz")]
public bool enable = true; public bool enable = true;
[Tooltip("name of assemblies to obfuscated")] [Tooltip("assembly settings")]
public string[] toObfuscatedAssemblyNames; public AssemblySettings assemblySettings;
[Tooltip("name of assemblies not obfuscated but reference assemblies to obfuscated ")] [Tooltip("obfuscation pass settings")]
public string[] notObfuscatedAssemblyNamesReferencingObfuscated; public ObfuscationPassSettings obfuscationPassSettings;
[Tooltip("extra assembly search dirs")] [Tooltip("secret settings")]
public string[] extraAssemblySearchDirs; public SecretSettings secretSettings;
[Tooltip("enable obfuscation pass")]
public ObfuscationPassType enabledObfuscationPasses = ObfuscationPassType.All;
[Tooltip("secret key")]
public string secret = "Code Philosophy";
[Tooltip("secret key save path")]
public string secretOutputPath = $"Assets/Obfuz/secret.bytes";
[Tooltip("global random seed")]
public int randomSeed = 0;
[Tooltip("encryption virtual machine settings")] [Tooltip("encryption virtual machine settings")]
public EncryptionVMSettings encryptionVMSettings; public EncryptionVMSettings encryptionVMSettings;

View File

@ -29,15 +29,9 @@ namespace Obfuz.Settings
private SerializedObject _serializedObject; private SerializedObject _serializedObject;
private SerializedProperty _enable; private SerializedProperty _enable;
private SerializedProperty _toObfuscatedAssemblyNames; private SerializedProperty _assemblySettings;
private SerializedProperty _notObfuscatedAssemblyNamesReferencingObfuscated; private SerializedProperty _obfuscationPassSettings;
private SerializedProperty _extraAssemblySearchDirs; private SerializedProperty _secretSettings;
private SerializedProperty _enabledObfuscationPasses;
private SerializedProperty _secret;
private SerializedProperty _secretOutputPath;
private SerializedProperty _randomSeed;
private SerializedProperty _encryptionVMSettings; private SerializedProperty _encryptionVMSettings;
private SerializedProperty _symbolObfusSettings; private SerializedProperty _symbolObfusSettings;
@ -66,14 +60,9 @@ namespace Obfuz.Settings
_serializedObject?.Dispose(); _serializedObject?.Dispose();
_serializedObject = new SerializedObject(setting); _serializedObject = new SerializedObject(setting);
_enable = _serializedObject.FindProperty("enable"); _enable = _serializedObject.FindProperty("enable");
_toObfuscatedAssemblyNames = _serializedObject.FindProperty("toObfuscatedAssemblyNames"); _assemblySettings = _serializedObject.FindProperty("assemblySettings");
_notObfuscatedAssemblyNamesReferencingObfuscated = _serializedObject.FindProperty("notObfuscatedAssemblyNamesReferencingObfuscated"); _obfuscationPassSettings = _serializedObject.FindProperty("obfuscationPassSettings");
_extraAssemblySearchDirs = _serializedObject.FindProperty("extraAssemblySearchDirs"); _secretSettings = _serializedObject.FindProperty("secretSettings");
_enabledObfuscationPasses = _serializedObject.FindProperty("enabledObfuscationPasses");
_secret = _serializedObject.FindProperty("secret");
_secretOutputPath = _serializedObject.FindProperty("secretOutputPath");
_randomSeed = _serializedObject.FindProperty("randomSeed");
_encryptionVMSettings = _serializedObject.FindProperty("encryptionVMSettings"); _encryptionVMSettings = _serializedObject.FindProperty("encryptionVMSettings");
@ -93,14 +82,9 @@ namespace Obfuz.Settings
EditorGUI.BeginChangeCheck(); EditorGUI.BeginChangeCheck();
EditorGUILayout.PropertyField(_enable); EditorGUILayout.PropertyField(_enable);
EditorGUILayout.PropertyField(_toObfuscatedAssemblyNames); EditorGUILayout.PropertyField(_assemblySettings);
EditorGUILayout.PropertyField(_notObfuscatedAssemblyNamesReferencingObfuscated); EditorGUILayout.PropertyField(_obfuscationPassSettings);
EditorGUILayout.PropertyField(_extraAssemblySearchDirs); EditorGUILayout.PropertyField(_secretSettings);
EditorGUILayout.PropertyField(_enabledObfuscationPasses);
EditorGUILayout.PropertyField(_secret);
EditorGUILayout.PropertyField(_secretOutputPath);
EditorGUILayout.PropertyField(_randomSeed);
EditorGUILayout.PropertyField(_encryptionVMSettings); EditorGUILayout.PropertyField(_encryptionVMSettings);

View File

@ -0,0 +1,19 @@
using System;
using UnityEngine;
namespace Obfuz.Settings
{
[Serializable]
public class SecretSettings
{
[Tooltip("secret key")]
public string secret = "Code Philosophy";
[Tooltip("secret key save path")]
public string secretOutputPath = $"Assets/Obfuz/secret.bytes";
[Tooltip("random seed")]
public int randomSeed = 0;
}
}

View File

@ -115,7 +115,7 @@ namespace Obfuz.Unity
Obfuscator obfuz = obfuscatorBuilder.Build(); Obfuscator obfuz = obfuscatorBuilder.Build();
obfuz.Run(); obfuz.Run();
foreach (var dllName in settings.toObfuscatedAssemblyNames) foreach (var dllName in settings.assemblySettings.toObfuscatedAssemblyNames)
{ {
string src = $"{obfuscatorBuilder.ObfuscatedAssemblyOutputDir}/{dllName}.dll"; string src = $"{obfuscatorBuilder.ObfuscatedAssemblyOutputDir}/{dllName}.dll";
string dst = $"{scriptAssembliesPath}/{dllName}.dll"; string dst = $"{scriptAssembliesPath}/{dllName}.dll";

View File

@ -26,7 +26,7 @@ namespace Obfuz.Unity
[MenuItem("Obfuz/SaveSecretFile", priority = 63)] [MenuItem("Obfuz/SaveSecretFile", priority = 63)]
public static void SaveSecretFile() public static void SaveSecretFile()
{ {
ObfuzSettings settings = ObfuzSettings.Instance; SecretSettings settings = ObfuzSettings.Instance.secretSettings;
var secretBytes = KeyGenerator.GenerateKey(settings.secret, VirtualMachine.SecretKeyLength); var secretBytes = KeyGenerator.GenerateKey(settings.secret, VirtualMachine.SecretKeyLength);
Obfuscator.SaveKey(secretBytes, settings.secretOutputPath); Obfuscator.SaveKey(secretBytes, settings.secretOutputPath);