using System.Linq; using System.Reflection; using System.Runtime.InteropServices; using HarmonyLib; using undead_universal_patch_il2cpp.Core; using undead_universal_patch_il2cpp.Core.Config; using UnityEngine; namespace undead_universal_patch_il2cpp.Patches { [HarmonyPatch] public class ConnectToRecNetPatchEvent { static PatchTypesResult patchResult = Util.ConfigPreparePatchTypes( PatchConfig.HilePatch, "Hile Patch event method", "RecNet.Core", "ConnectToRecNet" ); static bool Prepare() => patchResult.Success; static MethodBase TargetMethod() => patchResult.Method; static void Prefix() { if (!ServerPatchesConfig.CustomKnownDlls.Value && PatchConfig.HilePatch.Value) HilePatch.Patch(); } } public static class HilePatch { public static void Patch([Optional] string[] dlls) { Util.ConditionalDebug($"Patching KnownDlls with {(dlls != null ? dlls.Length : 0)} new filenames"); string[] baseDlls = [ "GameAssembly.dll", "UnityPlayer.dll", "WinPixEventRuntime.dll", "steam_api64.dll", "steam_api.dll", "d3d11.dll", "d3d9.dll", "d3d8.dll", "ddraw.dll", "dxgi.dll", "winhttp.dll" ]; if (dlls != null) baseDlls = baseDlls.Concat(dlls).ToArray(); GameObject cheatManagerObject = GameObject.Find("[CheatManager]"); HileManager hileManager = cheatManagerObject.GetComponent(); PropertyInfo knownDllsProperty = AccessTools.Property(typeof(HileManager), "KnownDlls"); knownDllsProperty.SetValue(hileManager, new Il2CppInterop.Runtime.InteropTypes.Arrays.Il2CppStringArray(baseDlls)); UniversalPatchPlugin.Log.LogInfo($"Hile patch succeeded: {baseDlls.Length} new KnownDlls."); } } }