obfuz/Editor/Unity/ObfuzMenu.cs

108 lines
4.9 KiB
C#
Raw Normal View History

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.
using Obfuz.EncryptionVM;
2025-06-28 12:12:31 +08:00
using Obfuz.GarbageCodeGeneration;
using Obfuz.Settings;
using Obfuz.Utils;
using System.IO;
using UnityEditor;
using UnityEngine;
using FileUtil = Obfuz.Utils.FileUtil;
namespace Obfuz.Unity
{
public static class ObfuzMenu
{
[MenuItem("Obfuz/Settings...", priority = 1)]
public static void OpenSettings() => SettingsService.OpenProjectSettings("Project/Obfuz");
[MenuItem("Obfuz/GenerateEncryptionVM", priority = 62)]
public static void GenerateEncryptionVM()
{
EncryptionVMSettings settings = ObfuzSettings.Instance.encryptionVMSettings;
var generator = new VirtualMachineCodeGenerator(settings.codeGenerationSecretKey, settings.encryptionOpCodeCount);
generator.Generate(settings.codeOutputPath);
2025-06-28 13:10:37 +08:00
AssetDatabase.Refresh();
}
[MenuItem("Obfuz/GenerateSecretKeyFile", priority = 63)]
public static void SaveSecretFile()
{
SecretSettings settings = ObfuzSettings.Instance.secretSettings;
var staticSecretBytes = KeyGenerator.GenerateKey(settings.defaultStaticSecretKey, VirtualMachine.SecretKeyLength);
SaveKey(staticSecretBytes, settings.staticSecretKeyOutputPath);
Debug.Log($"Save static secret key to {settings.staticSecretKeyOutputPath}");
var dynamicSecretBytes = KeyGenerator.GenerateKey(settings.defaultDynamicSecretKey, VirtualMachine.SecretKeyLength);
SaveKey(dynamicSecretBytes, settings.dynamicSecretKeyOutputPath);
Debug.Log($"Save dynamic secret key to {settings.dynamicSecretKeyOutputPath}");
AssetDatabase.Refresh();
}
2025-06-28 13:10:37 +08:00
[MenuItem("Obfuz/GarbageCode/GenerateCodes", priority = 100)]
2025-06-28 12:12:31 +08:00
public static void GenerateGarbageCodes()
{
Debug.Log($"Generating garbage codes begin.");
2025-06-28 19:01:57 +08:00
GarbageCodeGenerationSettings settings = ObfuzSettings.Instance.garbageCodeGenerationSettings;
2025-06-28 12:12:31 +08:00
var generator = new GarbageCodeGenerator(settings);
generator.Generate();
2025-06-28 13:10:37 +08:00
AssetDatabase.Refresh();
2025-06-28 12:12:31 +08:00
Debug.Log($"Generating garbage codes end.");
}
2025-06-28 13:10:37 +08:00
[MenuItem("Obfuz/GarbageCode/CleanGeneratedCodes", priority = 101)]
public static void CleanGeneratedGarbageCodes()
{
Debug.Log($"Clean generated garbage codes begin.");
2025-06-28 19:01:57 +08:00
GarbageCodeGenerationSettings settings = ObfuzSettings.Instance.garbageCodeGenerationSettings;
2025-06-28 13:10:37 +08:00
var generator = new GarbageCodeGenerator(settings);
generator.CleanCodes();
AssetDatabase.Refresh();
Debug.Log($"Clean generated garbage codes end.");
}
private static void SaveKey(byte[] secret, string secretOutputPath)
{
FileUtil.CreateParentDir(secretOutputPath);
File.WriteAllBytes(secretOutputPath, secret);
}
[MenuItem("Obfuz/Documents/Quick Start")]
2025-06-03 19:57:17 +08:00
public static void OpenQuickStart() => Application.OpenURL("https://www.obfuz.com/docs/beginner/quickstart");
[MenuItem("Obfuz/Documents/FAQ")]
2025-06-03 19:57:17 +08:00
public static void OpenFAQ() => Application.OpenURL("https://www.obfuz.com/docs/help/faq");
[MenuItem("Obfuz/Documents/Common Errors")]
2025-06-03 19:57:17 +08:00
public static void OpenCommonErrors() => Application.OpenURL("https://www.obfuz.com/docs/help/commonerrors");
[MenuItem("Obfuz/Documents/Bug Report")]
2025-06-03 19:57:17 +08:00
public static void OpenBugReport() => Application.OpenURL("https://www.obfuz.com/docs/help/issue");
[MenuItem("Obfuz/Documents/GitHub")]
public static void OpenGitHub() => Application.OpenURL("https://github.com/focus-creative-games/obfuz");
[MenuItem("Obfuz/Documents/About")]
2025-06-03 19:57:17 +08:00
public static void OpenAbout() => Application.OpenURL("https://www.obfuz.com/docs/intro");
}
}