diff --git a/Editor/ObfuscatorBuilder.cs b/Editor/ObfuscatorBuilder.cs index 3793d7b..35734b8 100644 --- a/Editor/ObfuscatorBuilder.cs +++ b/Editor/ObfuscatorBuilder.cs @@ -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)); diff --git a/Editor/Settings/AssemblySettings.cs b/Editor/Settings/AssemblySettings.cs new file mode 100644 index 0000000..ddbbbaa --- /dev/null +++ b/Editor/Settings/AssemblySettings.cs @@ -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; + } +} diff --git a/Editor/Settings/ObfuscationPassSettings.cs b/Editor/Settings/ObfuscationPassSettings.cs new file mode 100644 index 0000000..03841a2 --- /dev/null +++ b/Editor/Settings/ObfuscationPassSettings.cs @@ -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; + } +} diff --git a/Editor/Settings/ObfuzSettings.cs b/Editor/Settings/ObfuzSettings.cs index 661e8f9..a3ee88f 100644 --- a/Editor/Settings/ObfuzSettings.cs +++ b/Editor/Settings/ObfuzSettings.cs @@ -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; diff --git a/Editor/Settings/ObfuzSettingsProvider.cs b/Editor/Settings/ObfuzSettingsProvider.cs index 6e8cbad..3a5c9e2 100644 --- a/Editor/Settings/ObfuzSettingsProvider.cs +++ b/Editor/Settings/ObfuzSettingsProvider.cs @@ -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); diff --git a/Editor/Settings/SecretSettings.cs b/Editor/Settings/SecretSettings.cs new file mode 100644 index 0000000..a4db265 --- /dev/null +++ b/Editor/Settings/SecretSettings.cs @@ -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; + } +} diff --git a/Editor/Unity/ObfuscationProcess.cs b/Editor/Unity/ObfuscationProcess.cs index 8e4142c..81fbfdc 100644 --- a/Editor/Unity/ObfuscationProcess.cs +++ b/Editor/Unity/ObfuscationProcess.cs @@ -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"; diff --git a/Editor/Unity/ObfuzMenu.cs b/Editor/Unity/ObfuzMenu.cs index 19fbe9a..f46460d 100644 --- a/Editor/Unity/ObfuzMenu.cs +++ b/Editor/Unity/ObfuzMenu.cs @@ -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);