using System; using System.Collections; using System.Collections.Generic; using System.Reflection; using UnityEngine; using UnityEditor; using System.Runtime.CompilerServices; using MonoHook; using HybridCLR.Editor.BuildProcessors; using System.IO; namespace HybridCLR.MonoHook { #if UNITY_2022 || UNITY_2023_1_OR_NEWER [InitializeOnLoad] public class GetIl2CppFolderHook { private static MethodHook _hook; static GetIl2CppFolderHook() { if (_hook == null) { Type type = typeof(UnityEditor.EditorApplication).Assembly.GetType("UnityEditorInternal.IL2CPPUtils"); MethodInfo miTarget = type.GetMethod("GetIl2CppFolder", BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Public, null, new Type[] { typeof(bool).MakeByRefType() }, null); MethodInfo miReplacement = new StripAssembliesDel(OverrideMethod).Method; MethodInfo miProxy = new StripAssembliesDel(PlaceHolderMethod).Method; _hook = new MethodHook(miTarget, miReplacement, miProxy); _hook.Install(); } } private delegate string StripAssembliesDel(out bool isDevelopmentLocation); private static string OverrideMethod(out bool isDevelopmentLocation) { //Debug.Log("[GetIl2CppFolderHook] OverrideMethod"); string result = PlaceHolderMethod(out isDevelopmentLocation); isDevelopmentLocation = false; return result; } [MethodImpl(MethodImplOptions.NoOptimization)] private static string PlaceHolderMethod(out bool isDevelopmentLocation) { Debug.LogError("[GetIl2CppFolderHook] PlaceHolderMethod"); isDevelopmentLocation = false; return null; } } #endif }