重构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
{
_secret = settings.secret,
_secretOutputPath = settings.secretOutputPath,
_randomSeed = settings.randomSeed,
_secret = settings.secretSettings.secret,
_secretOutputPath = settings.secretSettings.secretOutputPath,
_randomSeed = settings.secretSettings.randomSeed,
_encryptionVmGenerationSecretKey = settings.encryptionVMSettings.codeGenerationSecret,
_encryptionVmOpCodeCount = settings.encryptionVMSettings.encryptionOpCodeCount,
_encryptionVmCodeFile = settings.encryptionVMSettings.codeOutputPath,
_toObfuscatedAssemblyNames = settings.toObfuscatedAssemblyNames.ToList(),
_notObfuscatedAssemblyNamesReferencingObfuscated = settings.notObfuscatedAssemblyNamesReferencingObfuscated.ToList(),
_assemblySearchDirs = settings.extraAssemblySearchDirs.ToList(),
_toObfuscatedAssemblyNames = settings.assemblySettings.toObfuscatedAssemblyNames.ToList(),
_notObfuscatedAssemblyNamesReferencingObfuscated = settings.assemblySettings.notObfuscatedAssemblyNamesReferencingObfuscated.ToList(),
_assemblySearchDirs = settings.assemblySettings.extraAssemblySearchDirs.ToList(),
_obfuscatedAssemblyOutputDir = settings.GetObfuscatedAssemblyOutputDir(target),
};
ObfuscationPassType obfuscationPasses = settings.enabledObfuscationPasses;
ObfuscationPassType obfuscationPasses = settings.obfuscationPassSettings.enabledPasses;
if (obfuscationPasses.HasFlag(ObfuscationPassType.ConstEncrypt))
{
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.IO;
using System.Runtime.Remoting.Messaging;
@ -9,31 +8,20 @@ using UnityEngine;
namespace Obfuz.Settings
{
public class ObfuzSettings : ScriptableObject
{
[Tooltip("enable Obfuz")]
public bool enable = true;
[Tooltip("name of assemblies to obfuscated")]
public string[] toObfuscatedAssemblyNames;
[Tooltip("assembly settings")]
public AssemblySettings assemblySettings;
[Tooltip("name of assemblies not obfuscated but reference assemblies to obfuscated ")]
public string[] notObfuscatedAssemblyNamesReferencingObfuscated;
[Tooltip("obfuscation pass settings")]
public ObfuscationPassSettings obfuscationPassSettings;
[Tooltip("extra assembly search dirs")]
public string[] extraAssemblySearchDirs;
[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("secret settings")]
public SecretSettings secretSettings;
[Tooltip("encryption virtual machine settings")]
public EncryptionVMSettings encryptionVMSettings;

View File

@ -29,15 +29,9 @@ namespace Obfuz.Settings
private SerializedObject _serializedObject;
private SerializedProperty _enable;
private SerializedProperty _toObfuscatedAssemblyNames;
private SerializedProperty _notObfuscatedAssemblyNamesReferencingObfuscated;
private SerializedProperty _extraAssemblySearchDirs;
private SerializedProperty _enabledObfuscationPasses;
private SerializedProperty _secret;
private SerializedProperty _secretOutputPath;
private SerializedProperty _randomSeed;
private SerializedProperty _assemblySettings;
private SerializedProperty _obfuscationPassSettings;
private SerializedProperty _secretSettings;
private SerializedProperty _encryptionVMSettings;
private SerializedProperty _symbolObfusSettings;
@ -66,14 +60,9 @@ namespace Obfuz.Settings
_serializedObject?.Dispose();
_serializedObject = new SerializedObject(setting);
_enable = _serializedObject.FindProperty("enable");
_toObfuscatedAssemblyNames = _serializedObject.FindProperty("toObfuscatedAssemblyNames");
_notObfuscatedAssemblyNamesReferencingObfuscated = _serializedObject.FindProperty("notObfuscatedAssemblyNamesReferencingObfuscated");
_extraAssemblySearchDirs = _serializedObject.FindProperty("extraAssemblySearchDirs");
_enabledObfuscationPasses = _serializedObject.FindProperty("enabledObfuscationPasses");
_secret = _serializedObject.FindProperty("secret");
_secretOutputPath = _serializedObject.FindProperty("secretOutputPath");
_randomSeed = _serializedObject.FindProperty("randomSeed");
_assemblySettings = _serializedObject.FindProperty("assemblySettings");
_obfuscationPassSettings = _serializedObject.FindProperty("obfuscationPassSettings");
_secretSettings = _serializedObject.FindProperty("secretSettings");
_encryptionVMSettings = _serializedObject.FindProperty("encryptionVMSettings");
@ -93,14 +82,9 @@ namespace Obfuz.Settings
EditorGUI.BeginChangeCheck();
EditorGUILayout.PropertyField(_enable);
EditorGUILayout.PropertyField(_toObfuscatedAssemblyNames);
EditorGUILayout.PropertyField(_notObfuscatedAssemblyNamesReferencingObfuscated);
EditorGUILayout.PropertyField(_extraAssemblySearchDirs);
EditorGUILayout.PropertyField(_enabledObfuscationPasses);
EditorGUILayout.PropertyField(_secret);
EditorGUILayout.PropertyField(_secretOutputPath);
EditorGUILayout.PropertyField(_randomSeed);
EditorGUILayout.PropertyField(_assemblySettings);
EditorGUILayout.PropertyField(_obfuscationPassSettings);
EditorGUILayout.PropertyField(_secretSettings);
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();
obfuz.Run();
foreach (var dllName in settings.toObfuscatedAssemblyNames)
foreach (var dllName in settings.assemblySettings.toObfuscatedAssemblyNames)
{
string src = $"{obfuscatorBuilder.ObfuscatedAssemblyOutputDir}/{dllName}.dll";
string dst = $"{scriptAssembliesPath}/{dllName}.dll";

View File

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