reloaded by default, corehook => minhook

This commit is contained in:
goat 2021-10-28 01:14:27 +02:00
parent 0dbf51330c
commit 6c06645b00
No known key found for this signature in database
GPG key ID: 7773BB5B43BA52E5
4 changed files with 9 additions and 7 deletions

View file

@ -25,7 +25,7 @@ namespace Dalamud.Configuration.Internal
/// <summary>
/// Gets a value indicating whether the DalamudForceCoreHook setting has been enabled.
/// </summary>
public static bool DalamudForceCoreHook { get; } = GetEnvironmentVariable("DALAMUD_FORCE_COREHOOK");
public static bool DalamudForceMinHook { get; } = GetEnvironmentVariable("DALAMUD_FORCE_COREHOOK");
private static bool GetEnvironmentVariable(string name)
=> bool.Parse(Environment.GetEnvironmentVariable(name) ?? "false");

View file

@ -29,7 +29,7 @@ namespace Dalamud.Hooking
/// <param name="address">A memory address to install a hook.</param>
/// <param name="detour">Callback function. Delegate must have a same original function prototype.</param>
public Hook(IntPtr address, T detour)
: this(address, detour, true)
: this(address, detour, false)
{
}
@ -44,7 +44,7 @@ namespace Dalamud.Hooking
public Hook(IntPtr address, T detour, bool useMinHook)
{
address = HookManager.FollowJmp(address);
this.isMinHook = true;
this.isMinHook = EnvironmentConfiguration.DalamudForceMinHook || useMinHook;
var hasOtherHooks = HookManager.Originals.ContainsKey(address);
if (!hasOtherHooks)
@ -140,7 +140,7 @@ namespace Dalamud.Hooking
/// <param name="detour">Callback function. Delegate must have a same original function prototype.</param>
/// <returns>The hook with the supplied parameters.</returns>
public static Hook<T> FromSymbol(string moduleName, string exportName, T detour)
=> FromSymbol(moduleName, exportName, detour, true);
=> FromSymbol(moduleName, exportName, detour, false);
/// <summary>
/// Creates a hook. Hooking address is inferred by calling to GetProcAddress() function.

View file

@ -41,7 +41,6 @@ using ImGuiNET;
using ImGuiScene;
using Newtonsoft.Json;
using Serilog;
using SharpDX.Direct3D11;
namespace Dalamud.Interface.Internal.Windows
{
@ -73,6 +72,7 @@ namespace Dalamud.Interface.Internal.Windows
private UIDebug addonInspector = null;
private Hook<MessageBoxWDelegate>? messageBoxMinHook;
private bool hookUseMinHook = false;
// IPC
private ICallGateProvider<string, string> ipcPub;
@ -1589,8 +1589,10 @@ namespace Dalamud.Interface.Internal.Windows
{
try
{
ImGui.Checkbox("Use MinHook", ref this.hookUseMinHook);
if (ImGui.Button("Create"))
this.messageBoxMinHook = Hook<MessageBoxWDelegate>.FromSymbol("User32", "MessageBoxW", this.MessageBoxWDetour);
this.messageBoxMinHook = Hook<MessageBoxWDelegate>.FromSymbol("User32", "MessageBoxW", this.MessageBoxWDetour, this.hookUseMinHook);
if (ImGui.Button("Enable"))
this.messageBoxMinHook?.Enable();

View file

@ -74,7 +74,7 @@ namespace Dalamud.Support
DoPluginTest = configuration.DoPluginTest,
InterfaceLoaded = interfaceManager?.IsReady ?? false,
ThirdRepo = configuration.ThirdRepoList,
ForcedCoreHook = EnvironmentConfiguration.DalamudForceCoreHook,
ForcedCoreHook = EnvironmentConfiguration.DalamudForceMinHook,
};
var encodedPayload = Convert.ToBase64String(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(payload)));