From 04464de9e6209f0fc6f54c76306c1de30945f2b1 Mon Sep 17 00:00:00 2001 From: goat <16760685+goaaats@users.noreply.github.com> Date: Sat, 16 Jul 2022 21:00:20 +0200 Subject: [PATCH] chore: add back minhook env var --- Dalamud/Hooking/Hook.cs | 10 +++++++ .../Interface/Internal/DalamudInterface.cs | 26 +++++++++++++++---- 2 files changed, 31 insertions(+), 5 deletions(-) diff --git a/Dalamud/Hooking/Hook.cs b/Dalamud/Hooking/Hook.cs index 9f56b8b31..104d4f5a7 100644 --- a/Dalamud/Hooking/Hook.cs +++ b/Dalamud/Hooking/Hook.cs @@ -3,6 +3,7 @@ using System.Diagnostics; using System.Reflection; using System.Runtime.InteropServices; +using Dalamud.Configuration.Internal; using Dalamud.Hooking.Internal; namespace Dalamud.Hooking @@ -59,6 +60,9 @@ namespace Dalamud.Hooking [Obsolete("Use Hook.FromAddress instead.")] private Hook(IntPtr address, T detour, bool useMinHook, Assembly callingAssembly) { + if (EnvironmentConfiguration.DalamudForceMinHook) + useMinHook = true; + address = HookManager.FollowJmp(address); if (useMinHook) this.compatHookImpl = new MinHookHook(address, detour, callingAssembly); @@ -214,6 +218,9 @@ namespace Dalamud.Hooking /// The hook with the supplied parameters. public static Hook FromSymbol(string moduleName, string exportName, T detour, bool useMinHook) { + if (EnvironmentConfiguration.DalamudForceMinHook) + useMinHook = true; + var moduleHandle = NativeFunctions.GetModuleHandleW(moduleName); if (moduleHandle == IntPtr.Zero) throw new Exception($"Could not get a handle to module {moduleName}"); @@ -240,6 +247,9 @@ namespace Dalamud.Hooking /// The hook with the supplied parameters. public static Hook FromAddress(IntPtr procAddress, T detour, bool useMinHook = false) { + if (EnvironmentConfiguration.DalamudForceMinHook) + useMinHook = true; + procAddress = HookManager.FollowJmp(procAddress); if (useMinHook) return new MinHookHook(procAddress, detour, Assembly.GetCallingAssembly()); diff --git a/Dalamud/Interface/Internal/DalamudInterface.cs b/Dalamud/Interface/Internal/DalamudInterface.cs index 503771197..abbc79696 100644 --- a/Dalamud/Interface/Internal/DalamudInterface.cs +++ b/Dalamud/Interface/Internal/DalamudInterface.cs @@ -12,6 +12,7 @@ using Dalamud.Configuration.Internal; using Dalamud.Game.ClientState.Conditions; using Dalamud.Game.Gui; using Dalamud.Game.Internal; +using Dalamud.Interface.Colors; using Dalamud.Interface.Internal.ManagedAsserts; using Dalamud.Interface.Internal.Windows; using Dalamud.Interface.Internal.Windows.PluginInstaller; @@ -369,7 +370,7 @@ namespace Dalamud.Interface.Internal /// Toggles the . /// public void ToggleStyleEditorWindow() => this.selfTestWindow.Toggle(); - + /// /// Toggles the . /// @@ -438,12 +439,9 @@ namespace Dalamud.Interface.Internal if (!this.isImGuiDrawDevMenu && !condition.Any()) { - var config = Service.Get(); - ImGui.PushStyleColor(ImGuiCol.Button, Vector4.Zero); ImGui.PushStyleColor(ImGuiCol.ButtonActive, Vector4.Zero); ImGui.PushStyleColor(ImGuiCol.ButtonHovered, Vector4.Zero); - ImGui.PushStyleColor(ImGuiCol.Text, new Vector4(0, 0, 0, 1)); ImGui.PushStyleColor(ImGuiCol.TextSelectedBg, new Vector4(0, 0, 0, 1)); ImGui.PushStyleColor(ImGuiCol.Border, new Vector4(0, 0, 0, 1)); ImGui.PushStyleColor(ImGuiCol.BorderShadow, new Vector4(0, 0, 0, 1)); @@ -467,8 +465,26 @@ namespace Dalamud.Interface.Internal ImGui.End(); } + if (EnvironmentConfiguration.DalamudForceMinHook) + { + ImGui.SetNextWindowPos(windowPos, ImGuiCond.Always); + ImGui.SetNextWindowBgAlpha(1); + + if (ImGui.Begin( + "Disclaimer", + ImGuiWindowFlags.AlwaysAutoResize | ImGuiWindowFlags.NoBackground | + ImGuiWindowFlags.NoDecoration | ImGuiWindowFlags.NoMove | + ImGuiWindowFlags.NoScrollbar | ImGuiWindowFlags.NoMouseInputs | + ImGuiWindowFlags.NoResize | ImGuiWindowFlags.NoSavedSettings)) + { + ImGui.TextColored(ImGuiColors.DalamudRed, "Is force MinHook!"); + } + + ImGui.End(); + } + ImGui.PopStyleVar(4); - ImGui.PopStyleColor(8); + ImGui.PopStyleColor(7); } }