From d47996821c75d1e3739550fd313d52881f6881fe Mon Sep 17 00:00:00 2001
From: IcePixelx <41352111+PixieCore@users.noreply.github.com>
Date: Tue, 27 Jul 2021 23:08:20 +0200
Subject: [PATCH 1/2] Switched hooking lib for r5-dev and r5-dedicated.
 Refactored code base.

---
 external/minhook/include/MinHook.h      | 186 +++++++++++++++
 external/minhook/lib/libMinHook.x64.lib | Bin 0 -> 433164 bytes
 r5dedicated/cnetchan.cpp                |  46 ----
 r5dedicated/cnetchan.h                  |  34 ---
 r5dedicated/concommand.cpp              |  39 ----
 r5dedicated/concommand.h                |   7 -
 r5dedicated/console.cpp                 |  10 +-
 r5dedicated/cvengineserver.cpp          |  24 +-
 r5dedicated/cvengineserver.h            |   8 -
 r5dedicated/dllmain.cpp                 |   4 +-
 r5dedicated/hooks.cpp                   | 136 +++++------
 r5dedicated/hooks.h                     | 119 +++++++---
 r5dedicated/iconvar.cpp                 |  51 ++++-
 r5dedicated/iconvar.h                   |   7 -
 r5dedicated/msgbox.cpp                  |  21 +-
 r5dedicated/msgbox.h                    |   7 -
 r5dedicated/net.cpp                     |  71 ++++++
 r5dedicated/pch.h                       |   2 +-
 r5dedicated/r5dedicated.vcxproj         |  16 +-
 r5dedicated/r5dedicated.vcxproj.filters | 118 +++++-----
 r5dedicated/sqvm.cpp                    |  49 ++--
 r5dedicated/sqvm.h                      |  10 -
 r5dev/include/console.h                 |  16 +-
 r5dev/include/enums.h                   | 252 +++++++++++++++++++++
 r5dev/include/gameclasses.h             | 255 ---------------------
 r5dev/include/hooks.h                   |  93 +++++++-
 r5dev/include/input.h                   |  12 +-
 r5dev/include/patterns.h                |  44 ++--
 r5dev/include/pch.h                     |   5 +-
 r5dev/r5dev.vcxproj                     |  23 +-
 r5dev/r5dev.vcxproj.filters             | 220 +++++++++++-------
 r5dev/src/console.cpp                   | 123 +---------
 r5dev/src/dllmain.cpp                   |  11 +-
 r5dev/src/hooks.cpp                     | 289 ------------------------
 r5dev/src/hooks/chlclient.cpp           |  25 ++
 r5dev/src/hooks/cvengineserver.cpp      |  34 +++
 r5dev/src/hooks/hooks.cpp               | 173 ++++++++++++++
 r5dev/src/hooks/iconvar.cpp             |  58 +++++
 r5dev/src/hooks/msgbox.cpp              |  15 ++
 r5dev/src/hooks/net.cpp                 |  37 +++
 r5dev/src/hooks/sqvm.cpp                |  90 ++++++++
 r5dev/src/hooks/winapi.cpp              |  59 +++++
 r5dev/src/id3dx.cpp                     |  65 +++---
 r5dev/src/input.cpp                     | 119 +---------
 r5dev/src/overlay.cpp                   |  10 +-
 45 files changed, 1619 insertions(+), 1374 deletions(-)
 create mode 100644 external/minhook/include/MinHook.h
 create mode 100644 external/minhook/lib/libMinHook.x64.lib
 delete mode 100644 r5dedicated/cnetchan.cpp
 delete mode 100644 r5dedicated/cnetchan.h
 delete mode 100644 r5dedicated/concommand.cpp
 delete mode 100644 r5dedicated/concommand.h
 delete mode 100644 r5dedicated/cvengineserver.h
 delete mode 100644 r5dedicated/iconvar.h
 delete mode 100644 r5dedicated/msgbox.h
 create mode 100644 r5dedicated/net.cpp
 delete mode 100644 r5dedicated/sqvm.h
 delete mode 100644 r5dev/src/hooks.cpp
 create mode 100644 r5dev/src/hooks/chlclient.cpp
 create mode 100644 r5dev/src/hooks/cvengineserver.cpp
 create mode 100644 r5dev/src/hooks/hooks.cpp
 create mode 100644 r5dev/src/hooks/iconvar.cpp
 create mode 100644 r5dev/src/hooks/msgbox.cpp
 create mode 100644 r5dev/src/hooks/net.cpp
 create mode 100644 r5dev/src/hooks/sqvm.cpp
 create mode 100644 r5dev/src/hooks/winapi.cpp

diff --git a/external/minhook/include/MinHook.h b/external/minhook/include/MinHook.h
new file mode 100644
index 00000000..15c0a875
--- /dev/null
+++ b/external/minhook/include/MinHook.h
@@ -0,0 +1,186 @@
+/*
+ *  MinHook - The Minimalistic API Hooking Library for x64/x86
+ *  Copyright (C) 2009-2017 Tsuda Kageyu.
+ *  All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions
+ *  are met:
+ *
+ *   1. Redistributions of source code must retain the above copyright
+ *      notice, this list of conditions and the following disclaimer.
+ *   2. Redistributions in binary form must reproduce the above copyright
+ *      notice, this list of conditions and the following disclaimer in the
+ *      documentation and/or other materials provided with the distribution.
+ *
+ *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ *  TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ *  PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER
+ *  OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ *  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ *  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ *  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ *  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ *  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ *  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#if !(defined _M_IX86) && !(defined _M_X64) && !(defined __i386__) && !(defined __x86_64__)
+    #error MinHook supports only x86 and x64 systems.
+#endif
+
+#include <windows.h>
+
+// MinHook Error Codes.
+typedef enum MH_STATUS
+{
+    // Unknown error. Should not be returned.
+    MH_UNKNOWN = -1,
+
+    // Successful.
+    MH_OK = 0,
+
+    // MinHook is already initialized.
+    MH_ERROR_ALREADY_INITIALIZED,
+
+    // MinHook is not initialized yet, or already uninitialized.
+    MH_ERROR_NOT_INITIALIZED,
+
+    // The hook for the specified target function is already created.
+    MH_ERROR_ALREADY_CREATED,
+
+    // The hook for the specified target function is not created yet.
+    MH_ERROR_NOT_CREATED,
+
+    // The hook for the specified target function is already enabled.
+    MH_ERROR_ENABLED,
+
+    // The hook for the specified target function is not enabled yet, or already
+    // disabled.
+    MH_ERROR_DISABLED,
+
+    // The specified pointer is invalid. It points the address of non-allocated
+    // and/or non-executable region.
+    MH_ERROR_NOT_EXECUTABLE,
+
+    // The specified target function cannot be hooked.
+    MH_ERROR_UNSUPPORTED_FUNCTION,
+
+    // Failed to allocate memory.
+    MH_ERROR_MEMORY_ALLOC,
+
+    // Failed to change the memory protection.
+    MH_ERROR_MEMORY_PROTECT,
+
+    // The specified module is not loaded.
+    MH_ERROR_MODULE_NOT_FOUND,
+
+    // The specified function is not found.
+    MH_ERROR_FUNCTION_NOT_FOUND
+}
+MH_STATUS;
+
+// Can be passed as a parameter to MH_EnableHook, MH_DisableHook,
+// MH_QueueEnableHook or MH_QueueDisableHook.
+#define MH_ALL_HOOKS NULL
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+    // Initialize the MinHook library. You must call this function EXACTLY ONCE
+    // at the beginning of your program.
+    MH_STATUS WINAPI MH_Initialize(VOID);
+
+    // Uninitialize the MinHook library. You must call this function EXACTLY
+    // ONCE at the end of your program.
+    MH_STATUS WINAPI MH_Uninitialize(VOID);
+
+    // Creates a Hook for the specified target function, in disabled state.
+    // Parameters:
+    //   pTarget    [in]  A pointer to the target function, which will be
+    //                    overridden by the detour function.
+    //   pDetour    [in]  A pointer to the detour function, which will override
+    //                    the target function.
+    //   ppOriginal [out] A pointer to the trampoline function, which will be
+    //                    used to call the original target function.
+    //                    This parameter can be NULL.
+    MH_STATUS WINAPI MH_CreateHook(LPVOID pTarget, LPVOID pDetour, LPVOID *ppOriginal);
+
+    // Creates a Hook for the specified API function, in disabled state.
+    // Parameters:
+    //   pszModule  [in]  A pointer to the loaded module name which contains the
+    //                    target function.
+    //   pszTarget  [in]  A pointer to the target function name, which will be
+    //                    overridden by the detour function.
+    //   pDetour    [in]  A pointer to the detour function, which will override
+    //                    the target function.
+    //   ppOriginal [out] A pointer to the trampoline function, which will be
+    //                    used to call the original target function.
+    //                    This parameter can be NULL.
+    MH_STATUS WINAPI MH_CreateHookApi(
+        LPCWSTR pszModule, LPCSTR pszProcName, LPVOID pDetour, LPVOID *ppOriginal);
+
+    // Creates a Hook for the specified API function, in disabled state.
+    // Parameters:
+    //   pszModule  [in]  A pointer to the loaded module name which contains the
+    //                    target function.
+    //   pszTarget  [in]  A pointer to the target function name, which will be
+    //                    overridden by the detour function.
+    //   pDetour    [in]  A pointer to the detour function, which will override
+    //                    the target function.
+    //   ppOriginal [out] A pointer to the trampoline function, which will be
+    //                    used to call the original target function.
+    //                    This parameter can be NULL.
+    //   ppTarget   [out] A pointer to the target function, which will be used
+    //                    with other functions.
+    //                    This parameter can be NULL.
+    MH_STATUS WINAPI MH_CreateHookApiEx(
+        LPCWSTR pszModule, LPCSTR pszProcName, LPVOID pDetour, LPVOID *ppOriginal, LPVOID *ppTarget);
+
+    // Removes an already created hook.
+    // Parameters:
+    //   pTarget [in] A pointer to the target function.
+    MH_STATUS WINAPI MH_RemoveHook(LPVOID pTarget);
+
+    // Enables an already created hook.
+    // Parameters:
+    //   pTarget [in] A pointer to the target function.
+    //                If this parameter is MH_ALL_HOOKS, all created hooks are
+    //                enabled in one go.
+    MH_STATUS WINAPI MH_EnableHook(LPVOID pTarget);
+
+    // Disables an already created hook.
+    // Parameters:
+    //   pTarget [in] A pointer to the target function.
+    //                If this parameter is MH_ALL_HOOKS, all created hooks are
+    //                disabled in one go.
+    MH_STATUS WINAPI MH_DisableHook(LPVOID pTarget);
+
+    // Queues to enable an already created hook.
+    // Parameters:
+    //   pTarget [in] A pointer to the target function.
+    //                If this parameter is MH_ALL_HOOKS, all created hooks are
+    //                queued to be enabled.
+    MH_STATUS WINAPI MH_QueueEnableHook(LPVOID pTarget);
+
+    // Queues to disable an already created hook.
+    // Parameters:
+    //   pTarget [in] A pointer to the target function.
+    //                If this parameter is MH_ALL_HOOKS, all created hooks are
+    //                queued to be disabled.
+    MH_STATUS WINAPI MH_QueueDisableHook(LPVOID pTarget);
+
+    // Applies all queued changes in one go.
+    MH_STATUS WINAPI MH_ApplyQueued(VOID);
+
+    // Translates the MH_STATUS to its name as a string.
+    const char * WINAPI MH_StatusToString(MH_STATUS status);
+
+#ifdef __cplusplus
+}
+#endif
+
diff --git a/external/minhook/lib/libMinHook.x64.lib b/external/minhook/lib/libMinHook.x64.lib
new file mode 100644
index 0000000000000000000000000000000000000000..27efcff2095b39f1a2b13c2471ee916c9a138e8e
GIT binary patch
literal 433164
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
W2~PJ?fx-C#oH?r!2zX#0&i@~^;pB$^

literal 0
HcmV?d00001

diff --git a/r5dedicated/cnetchan.cpp b/r5dedicated/cnetchan.cpp
deleted file mode 100644
index bfd915ba..00000000
--- a/r5dedicated/cnetchan.cpp
+++ /dev/null
@@ -1,46 +0,0 @@
-#include "pch.h"
-#include "cnetchan.h"
-
-//-----------------------------------------------------------------------------
-// Hook and log the receive datagram
-//-----------------------------------------------------------------------------
-bool HNET_ReceiveDatagram(int sock, void* inpacket, bool raw)
-{
-	bool result = org_NET_ReceiveDatagram(sock, inpacket, raw);
-	if (result)
-	{
-		int i = NULL;
-		netpacket_t* pkt = (netpacket_t*)inpacket;
-
-		// Log received packet data
-		HexDump("[+] NET_ReceiveDatagram", 0, &pkt->data[i], pkt->wiresize);
-	}
-	return result;
-}
-
-//-----------------------------------------------------------------------------
-// Hook and log send datagram
-//-----------------------------------------------------------------------------
-unsigned int HNET_SendDatagram(SOCKET s, const char* buf, int len, int flags)
-{
-	unsigned int result = org_NET_SendDatagram(s, buf, len, flags);
-	if (result)
-	{
-		// Log transmitted packet data
-		HexDump("[+] NET_SendDatagram", 0, buf, len);
-	}
-	return result;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void AttachCNetChanHooks()
-{
-	DetourAttach((LPVOID*)&org_NET_ReceiveDatagram, &HNET_ReceiveDatagram);
-	DetourAttach((LPVOID*)&org_NET_SendDatagram, &HNET_SendDatagram);
-}
-
-void DetachCNetChanHooks()
-{
-	DetourDetach((LPVOID*)&org_NET_ReceiveDatagram, &HNET_ReceiveDatagram);
-	DetourDetach((LPVOID*)&org_NET_SendDatagram, &HNET_SendDatagram);
-}
\ No newline at end of file
diff --git a/r5dedicated/cnetchan.h b/r5dedicated/cnetchan.h
deleted file mode 100644
index b0e425db..00000000
--- a/r5dedicated/cnetchan.h
+++ /dev/null
@@ -1,34 +0,0 @@
-#pragma once
-#include "pch.h"
-#include "hooks.h"
-
-bool HNET_ReceiveDatagram(int sock, void* inpacket, bool raw);
-unsigned int HNET_SendDatagram(SOCKET s, const char* buf, int len, int flags);
-
-void AttachCNetChanHooks();
-void DetachCNetChanHooks();
-
-typedef unsigned __int64 QWORD;
-struct __declspec(align(8)) netpacket_t
-{
-	DWORD family_maybe;
-	sockaddr_in sin;
-	WORD sin_port;
-	BYTE gap16;
-	BYTE byte17;
-	DWORD source;
-	double received;
-	unsigned __int8* data;
-	QWORD label;
-	BYTE byte38;
-	QWORD qword40;
-	QWORD qword48;
-	BYTE gap50[8];
-	QWORD qword58;
-	QWORD qword60;
-	QWORD qword68;
-	int less_than_12;
-	DWORD wiresize;
-	BYTE gap78[8];
-	QWORD qword80;
-};
\ No newline at end of file
diff --git a/r5dedicated/concommand.cpp b/r5dedicated/concommand.cpp
deleted file mode 100644
index bbe14b4d..00000000
--- a/r5dedicated/concommand.cpp
+++ /dev/null
@@ -1,39 +0,0 @@
-#include "pch.h"
-#include "concommand.h"
-
-//-----------------------------------------------------------------------------
-// Purpose: test each ConCommand query before execution
-// Input  : *cmd - flag
-// Output : true if execution is not permitted, false if permitted
-//-----------------------------------------------------------------------------
-bool HConCommand_IsFlagSet(int* cmd, int flag)
-{
-	int real_flags = *((cmd + (56 / sizeof(int))));
-	if (g_bDebugConsole)
-	{
-		printf("--------------------------------------------------\n");
-		printf(" Flaged: %08X\n", real_flags);
-	}
-	// Mask off FCVAR_CHEATS and FCVAR_DEVELOPMENTONLY
-	real_flags &= 0xFFFFBFFD;
-	if (g_bDebugConsole)
-	{
-		printf(" Masked: %08X\n", real_flags);
-		printf(" Verify: %08X\n", flag);
-		printf("--------------------------------------------------\n");
-	}
-	if (flag & 0x80000) { return true; }
-
-	if (!g_bReturnAllFalse) { return (real_flags & flag) != 0; }
-	else { return false; } // Returning false on all queries may cause problems
-}
-
-void AttachConCommandHooks()
-{
-	DetourAttach((LPVOID*)&org_ConCommand_IsFlagSet, &HConCommand_IsFlagSet);
-}
-
-void DetachConCommandHooks()
-{
-	DetourDetach((LPVOID*)&org_ConCommand_IsFlagSet, &HConCommand_IsFlagSet);
-}
\ No newline at end of file
diff --git a/r5dedicated/concommand.h b/r5dedicated/concommand.h
deleted file mode 100644
index 6442c1e1..00000000
--- a/r5dedicated/concommand.h
+++ /dev/null
@@ -1,7 +0,0 @@
-#pragma once
-#include "hooks.h"
-
-bool HConCommand_IsFlagSet(int* cmd, int flag);
-
-void AttachConCommandHooks();
-void DetachConCommandHooks();
\ No newline at end of file
diff --git a/r5dedicated/console.cpp b/r5dedicated/console.cpp
index 8c22fb47..3d77c848 100644
--- a/r5dedicated/console.cpp
+++ b/r5dedicated/console.cpp
@@ -1,8 +1,6 @@
 #include "pch.h"
 #include "hooks.h"
 #include "console.h"
-#include "iconvar.h"
-#include "concommand.h"
 
 //#############################################################################
 // INITIALIZATION
@@ -71,8 +69,8 @@ DWORD __stdcall ProcessConsoleWorker(LPVOID)
 
 		///////////////////////////////////////////////////////////////////////
 		// Engine toggles
-		if (sCommand == "toggle net") { ToggleNetTrace(); continue; }
-		if (sCommand == "toggle dev") { ToggleDevCommands(); continue; }
+		if (sCommand == "toggle net") { Hooks::ToggleNetHooks(); continue; }
+		if (sCommand == "toggle dev") { Hooks::ToggleDevCommands(); continue; }
 		if (sCommand == "toggle fal") { g_bReturnAllFalse = !g_bReturnAllFalse; continue; }
 		///////////////////////////////////////////////////////////////////////
 		// Debug toggles
@@ -80,12 +78,12 @@ DWORD __stdcall ProcessConsoleWorker(LPVOID)
 		if (sCommand == "console test") { g_bDebugConsole = !g_bDebugConsole; continue; }
 		///////////////////////////////////////////////////////////////////////
 		// Exec toggles
-		if (sCommand == "1") { org_CommandExecute(NULL, "exec autoexec_dev"); }
+		if (sCommand == "1") { addr_CommandExecute(NULL, "exec autoexec_dev"); }
 		if (sCommand == "2") { g_bDebugLoading = !g_bDebugLoading; continue; }
 
 		///////////////////////////////////////////////////////////////////////
 		// Execute the command in the r5 SQVM
-		org_CommandExecute(NULL, sCommand.c_str());
+		addr_CommandExecute(NULL, sCommand.c_str());
 		sCommand.clear();
 
 		///////////////////////////////////////////////////////////////////////
diff --git a/r5dedicated/cvengineserver.cpp b/r5dedicated/cvengineserver.cpp
index bf15cee5..450639f4 100644
--- a/r5dedicated/cvengineserver.cpp
+++ b/r5dedicated/cvengineserver.cpp
@@ -1,10 +1,15 @@
 #include "pch.h"
-#include "cvengineserver.h"
+#include "hooks.h"
+
+namespace Hooks
+{
+	IsPersistenceDataAvailableFn originalIsPersistenceDataAvailable = nullptr;
+}
 
 //-----------------------------------------------------------------------------
-// Sets the persistence var in the playerstruct to ready for each client
+// Sets the persistence var in the playerstruct to ready for each client     
 //-----------------------------------------------------------------------------
-bool HPersistence_IsAvailable(__int64 thisptr, int client)
+bool Hooks::IsPersistenceDataAvailable(__int64 thisptr, int client)
 {
 	static bool isPersistenceVarSet[256];
 
@@ -27,16 +32,5 @@ bool HPersistence_IsAvailable(__int64 thisptr, int client)
 		isPersistenceVarSet[client] = true;
 	}
 
-	///////////////////////////////////////////////////////////////////////////
-	return org_Persistence_IsAvailable(thisptr, client);
-}
-
-void AttachCEngineServerHooks()
-{
-	DetourAttach((LPVOID*)&org_Persistence_IsAvailable, &HPersistence_IsAvailable);
-}
-
-void DetachCEngineServerHooks()
-{
-	DetourDetach((LPVOID*)&org_Persistence_IsAvailable, &HPersistence_IsAvailable);
+	return originalIsPersistenceDataAvailable(thisptr, client);
 }
\ No newline at end of file
diff --git a/r5dedicated/cvengineserver.h b/r5dedicated/cvengineserver.h
deleted file mode 100644
index 933c2a15..00000000
--- a/r5dedicated/cvengineserver.h
+++ /dev/null
@@ -1,8 +0,0 @@
-#pragma once
-#include "pch.h"
-#include "hooks.h"
-
-bool HPersistence_IsAvailable(__int64 thisptr, int client);
-
-void AttachCEngineServerHooks();
-void DetachCEngineServerHooks();
\ No newline at end of file
diff --git a/r5dedicated/dllmain.cpp b/r5dedicated/dllmain.cpp
index 8d135d1e..89df758c 100644
--- a/r5dedicated/dllmain.cpp
+++ b/r5dedicated/dllmain.cpp
@@ -10,7 +10,7 @@
 void InitializeR5Dedicated()
 {
     SetupConsole();
-    InstallHooks();
+    Hooks::InstallHooks();
     printf("+-----------------------------------------------------------------------------+\n");
     printf("|   R5 DEDICATED SERVER ---------------------------------------------------   |\n");
     printf("+-----------------------------------------------------------------------------+\n");
@@ -20,7 +20,7 @@ void InitializeR5Dedicated()
 void TerminateR5Dedicated()
 {
     FreeConsole();
-    RemoveHooks();
+    Hooks::RemoveHooks();
 }
 
 //#############################################################################
diff --git a/r5dedicated/hooks.cpp b/r5dedicated/hooks.cpp
index 90e52c41..67fa4dc9 100644
--- a/r5dedicated/hooks.cpp
+++ b/r5dedicated/hooks.cpp
@@ -1,78 +1,99 @@
 #include "pch.h"
 #include "hooks.h"
-#include "iconvar.h"
-#include "concommand.h"
-#include "cvengineserver.h"
-#include "cnetchan.h"
-#include "sqvm.h"
-#include "msgbox.h"
 #include "opcodes.h"
 
-//#################################################################################
-// MANAGEMENT
-//#################################################################################
-
-void InstallHooks()
+void Hooks::InstallHooks()
 {
 	///////////////////////////////////////////////////////////////////////////////
-	// Begin the detour transaction, to hook the the process
-	DetourTransactionBegin();
-	DetourUpdateThread(GetCurrentThread());
+	// Initialize Minhook
+	MH_Initialize();
+
+	// Hook Squirrel functions
+	MH_CreateHook(addr_SQVM_Print, &Hooks::SQVM_Print, NULL);
+	MH_CreateHook(addr_SQVM_LoadRson, &Hooks::SQVM_LoadRson, reinterpret_cast<void**>(&originalSQVM_LoadRson));
+	MH_CreateHook(addr_SQVM_LoadScript, &Hooks::SQVM_LoadScript, reinterpret_cast<void**>(&originalSQVM_LoadScript));
 
 	///////////////////////////////////////////////////////////////////////////////
-	// Hook functions
-	AttachIConVarHooks();
-	AttachConCommandHooks();
-	AttachCEngineServerHooks();
-	AttachSQVMHooks();
-	AttachMSGBoxHooks();
+	// Hook Game Functions
+	// MH_CreateHook(addr_CHLClient_FrameStageNotify, &Hooks::FrameStageNotify, reinterpret_cast<void**>(&originalFrameStageNotify));
+	MH_CreateHook(addr_CVEngineServer_IsPersistenceDataAvailable, &Hooks::IsPersistenceDataAvailable, reinterpret_cast<void**>(&originalIsPersistenceDataAvailable));
 
 	///////////////////////////////////////////////////////////////////////////////
-	// Commit the transaction
-	if (DetourTransactionCommit() != NO_ERROR)
-	{
-		// Failed to hook into the process, terminate
-		TerminateProcess(GetCurrentProcess(), 0xBAD0C0DE);
-	}
+	// Hook Netchan functions
+	MH_CreateHook(addr_NET_ReceiveDatagram, &Hooks::NET_ReceiveDatagram, reinterpret_cast<void**>(&originalNET_ReceiveDatagram));
+	MH_CreateHook(addr_NET_SendDatagram, &Hooks::NET_SendDatagram, reinterpret_cast<void**>(&originalNET_SendDatagram));
+
+	///////////////////////////////////////////////////////////////////////////////
+	// Hook ConVar | ConCommand functions.
+	MH_CreateHook(addr_ConVar_IsFlagSet, &Hooks::ConVar_IsFlagSet, NULL);
+	MH_CreateHook(addr_ConCommand_IsFlagSet, &Hooks::ConCommand_IsFlagSet, NULL);
+
+	///////////////////////////////////////////////////////////////////////////////
+	// Hook Utility functions
+	MH_CreateHook(addr_MSG_EngineError, &Hooks::MSG_EngineError, reinterpret_cast<void**>(&originalMSG_EngineError));
+
+	///////////////////////////////////////////////////////////////////////////////
+	// Enable Squirrel hooks
+	MH_EnableHook(addr_SQVM_Print);
+	MH_EnableHook(addr_SQVM_LoadRson);
+	MH_EnableHook(addr_SQVM_LoadScript);
+
+	///////////////////////////////////////////////////////////////////////////////
+	// Enable Game hooks
+	MH_EnableHook(addr_CHLClient_FrameStageNotify);
+	MH_EnableHook(addr_CVEngineServer_IsPersistenceDataAvailable);
+
+	///////////////////////////////////////////////////////////////////////////////
+	// Enabled Utility hooks
+	MH_EnableHook(addr_MSG_EngineError);
 
 	InstallOpcodes();
 }
 
-void RemoveHooks()
+void Hooks::RemoveHooks()
 {
 	///////////////////////////////////////////////////////////////////////////////
-	// Begin the detour transaction, to unhook the the process
-	DetourTransactionBegin();
-	DetourUpdateThread(GetCurrentThread());
+	// Unhook Squirrel functions
+	MH_RemoveHook(addr_SQVM_Print);
+	MH_RemoveHook(addr_SQVM_LoadRson);
+	MH_RemoveHook(addr_SQVM_LoadScript);
 
 	///////////////////////////////////////////////////////////////////////////////
-	// Unhook functions
-	DetachIConVarHooks();
-	DetachConCommandHooks();
-	DetachCEngineServerHooks();
-	DetachSQVMHooks();
-	DetachMSGBoxHooks();
+	// Unhook Game Functions
+	MH_RemoveHook(addr_CHLClient_FrameStageNotify);
+	MH_RemoveHook(addr_CVEngineServer_IsPersistenceDataAvailable);
 
 	///////////////////////////////////////////////////////////////////////////////
-	// Commit the transaction
-	DetourTransactionCommit();
+	// Unhook Netchan functions
+	MH_RemoveHook(addr_NET_ReceiveDatagram);
+	MH_RemoveHook(addr_NET_SendDatagram);
+
+	///////////////////////////////////////////////////////////////////////////////
+	// Unhook ConVar | ConCommand functions.
+	MH_RemoveHook(addr_ConVar_IsFlagSet);
+	MH_RemoveHook(addr_ConCommand_IsFlagSet);
+
+	///////////////////////////////////////////////////////////////////////////////
+	// Unhook Utility functions
+	MH_RemoveHook(addr_MSG_EngineError);
+
+	///////////////////////////////////////////////////////////////////////////////
+	// Reset Minhook
+	MH_Uninitialize();
 }
 
 //#################################################################################
 // TOGGLES
 //#################################################################################
 
-void ToggleDevCommands()
+void Hooks::ToggleDevCommands()
 {
-	static bool bDev = true;
-
-	DetourTransactionBegin();
-	DetourUpdateThread(GetCurrentThread());
+	static bool bDev = true;;
 
 	if (!bDev)
 	{
-		AttachIConVarHooks();
-		AttachConCommandHooks();
+		MH_EnableHook(addr_ConVar_IsFlagSet);
+		MH_EnableHook(addr_ConCommand_IsFlagSet);
 		printf("\n");
 		printf("+--------------------------------------------------------+\n");
 		printf("|>>>>>>>>>>>>>| DEVONLY COMMANDS ACTIVATED |<<<<<<<<<<<<<|\n");
@@ -82,8 +103,8 @@ void ToggleDevCommands()
 	}
 	else
 	{
-		DetachIConVarHooks();
-		DetachConCommandHooks();
+		MH_DisableHook(addr_ConVar_IsFlagSet);
+		MH_DisableHook(addr_ConCommand_IsFlagSet);
 		printf("\n");
 		printf("+--------------------------------------------------------+\n");
 		printf("|>>>>>>>>>>>>| DEVONLY COMMANDS DEACTIVATED |<<<<<<<<<<<<|\n");
@@ -91,24 +112,17 @@ void ToggleDevCommands()
 		printf("\n");
 	}
 
-	if (DetourTransactionCommit() != NO_ERROR)
-	{
-		TerminateProcess(GetCurrentProcess(), 0xBAD0C0DE);
-	}
-
 	bDev = !bDev;
 }
 
-void ToggleNetTrace()
+void Hooks::ToggleNetHooks()
 {
 	static bool bNet = true;
 
-	DetourTransactionBegin();
-	DetourUpdateThread(GetCurrentThread());
-
 	if (!bNet)
 	{
-		AttachCNetChanHooks();
+		MH_EnableHook(addr_NET_ReceiveDatagram);
+		MH_EnableHook(addr_NET_SendDatagram);
 		printf("\n");
 		printf("+--------------------------------------------------------+\n");
 		printf("|>>>>>>>>>>>>>| NETCHANNEL TRACE ACTIVATED |<<<<<<<<<<<<<|\n");
@@ -117,7 +131,8 @@ void ToggleNetTrace()
 	}
 	else
 	{
-		DetachCNetChanHooks();
+		MH_DisableHook(addr_NET_ReceiveDatagram);
+		MH_DisableHook(addr_NET_SendDatagram);
 		printf("\n");
 		printf("+--------------------------------------------------------+\n");
 		printf("|>>>>>>>>>>>>| NETCHANNEL TRACE DEACTIVATED |<<<<<<<<<<<<|\n");
@@ -125,10 +140,5 @@ void ToggleNetTrace()
 		printf("\n");
 	}
 
-	if (DetourTransactionCommit() != NO_ERROR)
-	{
-		TerminateProcess(GetCurrentProcess(), 0xBAD0C0DE);
-	}
-
 	bNet = !bNet;
 }
diff --git a/r5dedicated/hooks.h b/r5dedicated/hooks.h
index cdded7a3..66ab2187 100644
--- a/r5dedicated/hooks.h
+++ b/r5dedicated/hooks.h
@@ -1,11 +1,5 @@
 #pragma once
 #include "pch.h"
-#include "iconvar.h"
-#include "concommand.h"
-#include "cvengineserver.h"
-#include "cnetchan.h"
-#include "sqvm.h"
-#include "msgbox.h"
 // Define the signatures or offsets to be searched and hooked
 namespace
 {
@@ -13,77 +7,130 @@ namespace
 
 #pragma region Console
 	/*0x140202090*/
-	FUNC_AT_ADDRESS(org_CommandExecute, void(*)(void*, const char*), r5_patterns.PatternSearch("48 89 5C 24 ? 57 48 83 EC 20 48 8D 0D ? ? ? ? 41 8B D8").GetPtr());
+	FUNC_AT_ADDRESS(addr_CommandExecute, void(*)(void*, const char*), r5_patterns.PatternSearch("48 89 5C 24 ? 57 48 83 EC 20 48 8D 0D ? ? ? ? 41 8B D8").GetPtr());
 
 	/*0x14046FE90*/
-	FUNC_AT_ADDRESS(org_IConVar_IsFlagSet, bool(*)(int**, int), r5_patterns.PatternSearch("48 8B 41 48 85 50 38").GetPtr());
+	FUNC_AT_ADDRESS(addr_ConVar_IsFlagSet, bool(*)(int**, int), r5_patterns.PatternSearch("48 8B 41 48 85 50 38").GetPtr());
 
 	/*0x14046F490*/
-	FUNC_AT_ADDRESS(org_ConCommand_IsFlagSet, bool(*)(int*, int), r5_patterns.PatternSearch("85 51 38 0F 95 C0 C3").GetPtr());
+	FUNC_AT_ADDRESS(addr_ConCommand_IsFlagSet, bool(*)(int*, int), r5_patterns.PatternSearch("85 51 38 0F 95 C0 C3").GetPtr());
 #pragma endregion
 
 #pragma region Squirrel
 	/*0x141057FD0*/
-	FUNC_AT_ADDRESS(org_SQVM_PrintFunc, void*, r5_patterns.PatternSearch("83 F8 01 48 8D 3D ? ? ? ?").OffsetSelf(0x3).FollowNearCallSelf(0x3, 0x7).GetPtr());
+	FUNC_AT_ADDRESS(addr_SQVM_Print, void*, r5_patterns.PatternSearch("83 F8 01 48 8D 3D ? ? ? ?").OffsetSelf(0x3).FollowNearCallSelf(0x3, 0x7).GetPtr());
 
 	//DWORD64 p_SQVM_LoadScript = FindPattern("r5apex.exe", (const unsigned char*)"\x48\x89\x5C\x24\x10\x48\x89\x74\x24\x18\x48\x89\x7C\x24\x20\x48\x89\x4C\x24\x08\x55\x41\x54\x41\x55\x41\x56\x41\x57\x48\x8D\x6C", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"); // For S0 and S1
 
 	/*0x141055630*/
 	// For anything S2 and above (current S8
-	FUNC_AT_ADDRESS(org_SQVM_LoadScript, bool(*)(void*, const char*, const char*, int), r5_patterns.PatternSearch("48 8B C4 48 89 48 08 55 41 56 48 8D 68").GetPtr());
+	FUNC_AT_ADDRESS(addr_SQVM_LoadScript, bool(*)(void*, const char*, const char*, int), r5_patterns.PatternSearch("48 8B C4 48 89 48 08 55 41 56 48 8D 68").GetPtr());
 
 	/*0x140C957E0*/
-	FUNC_AT_ADDRESS(org_SQVM_LoadRson, int(*)(const char*), r5_patterns.PatternSearch("4C 8B DC 49 89 5B 08 57 48 81 EC A0 00 00 00 33").GetPtr());
+	FUNC_AT_ADDRESS(addr_SQVM_LoadRson, int(*)(const char*), r5_patterns.PatternSearch("4C 8B DC 49 89 5B 08 57 48 81 EC A0 00 00 00 33").GetPtr());
 #pragma endregion
 
 #pragma region NetChannel
 	/*0x1402655F0*/
-	FUNC_AT_ADDRESS(org_NET_ReceiveDatagram, bool(*)(int, void*, bool), r5_patterns.PatternSearch("48 89 74 24 18 48 89 7C 24 20 55 41 54 41 55 41 56 41 57 48 8D AC 24 50 EB").GetPtr());
+	FUNC_AT_ADDRESS(addr_NET_ReceiveDatagram, bool(*)(int, void*, bool), r5_patterns.PatternSearch("48 89 74 24 18 48 89 7C 24 20 55 41 54 41 55 41 56 41 57 48 8D AC 24 50 EB").GetPtr());
 
 	/*0x1402662D0*/
-	FUNC_AT_ADDRESS(org_NET_SendDatagram, int(*)(SOCKET, const char*, int, int), r5_patterns.PatternSearch("48 89 5C 24 08 48 89 6C 24 10 48 89 74 24 18 57 41 56 41 57 48 81 EC ? 05 ? ?").GetPtr());
+	FUNC_AT_ADDRESS(addr_NET_SendDatagram, int(*)(SOCKET, const char*, int, int), r5_patterns.PatternSearch("48 89 5C 24 08 48 89 6C 24 10 48 89 74 24 18 57 41 56 41 57 48 81 EC ? 05 ? ?").GetPtr());
 #pragma endregion
 
 #pragma region CHLClient
 	/*0x1405C0740*/
-	FUNC_AT_ADDRESS(org_CHLClient_FrameStageNotify, void(*)(void* rcx, int curStage), r5_patterns.PatternSearch("48 83 EC 28 89 15 ?? ?? ?? ??").GetPtr());
+	FUNC_AT_ADDRESS(addr_CHLClient_FrameStageNotify, void(*)(void* rcx, int curStage), r5_patterns.PatternSearch("48 83 EC 28 89 15 ?? ?? ?? ??").GetPtr());
 #pragma endregion
 
 #pragma region CVEngineServer
 	/*0x140315CF0*/
-	FUNC_AT_ADDRESS(org_Persistence_IsAvailable, bool(*)(__int64, int), r5_patterns.PatternSearch("3B 15 ?? ?? ?? ?? 7D 33").GetPtr());
+	FUNC_AT_ADDRESS(addr_CVEngineServer_IsPersistenceDataAvailable, bool(*)(__int64, int), r5_patterns.PatternSearch("3B 15 ?? ?? ?? ?? 7D 33").GetPtr());
 #pragma endregion
 
 #pragma region Utility
 	/*0x140295600*/
-	FUNC_AT_ADDRESS(org_MSG_EngineError, int(*)(char*, va_list), r5_patterns.PatternSearch("48 89 5C 24 08 48 89 74 24 10 57 48 81 EC 30 08 00 00 48 8B DA").GetPtr());
+	FUNC_AT_ADDRESS(addr_MSG_EngineError, int(*)(char*, va_list), r5_patterns.PatternSearch("48 89 5C 24 08 48 89 74 24 10 57 48 81 EC 30 08 00 00 48 8B DA").GetPtr());
 #pragma endregion
-
-	inline bool g_bDebugConsole = false;
-	inline bool g_bReturnAllFalse = false;
-	inline bool g_bDebugLoading = false;
+	// Un-used atm.
+	// DWORD64 p_KeyValues_FindKey = /*1404744E0*/ reinterpret_cast<DWORD64>(PatternScan("r5apex.exe", "40 56 57 41 57 48 81 EC ?? ?? ?? ?? 45"));
 
 	void PrintHAddress() // Test the sigscan results
 	{
 		std::cout << "+--------------------------------------------------------+" << std::endl;
-		PRINT_ADDRESS("CommandExecute", org_CommandExecute);
-		PRINT_ADDRESS("IConVar_IsFlagSet", org_IConVar_IsFlagSet);
-		PRINT_ADDRESS("ConCommand_IsFlagSet", org_ConCommand_IsFlagSet);
-		PRINT_ADDRESS("SQVM_Print", org_SQVM_PrintFunc);
-		PRINT_ADDRESS("SQVM_LoadScript", org_SQVM_LoadScript);
-		PRINT_ADDRESS("SQVM_LoadRson", org_SQVM_LoadRson);
-		PRINT_ADDRESS("NET_ReceiveDatagram", org_NET_ReceiveDatagram);
-		PRINT_ADDRESS("NET_SendDatagram ", org_NET_SendDatagram);
-		PRINT_ADDRESS("CHLClient::FrameStageNotify", org_CHLClient_FrameStageNotify);
-		PRINT_ADDRESS("CVEngineServer::Persistence_IsAvailable", org_Persistence_IsAvailable);
-		PRINT_ADDRESS("MSG_EngineError", org_MSG_EngineError);
+		PRINT_ADDRESS("CommandExecute", addr_CommandExecute);
+		PRINT_ADDRESS("ConVar_IsFlagSet", addr_ConVar_IsFlagSet);
+		PRINT_ADDRESS("ConCommand_IsFlagSet", addr_ConCommand_IsFlagSet);
+		PRINT_ADDRESS("SQVM_Print", addr_SQVM_Print);
+		PRINT_ADDRESS("SQVM_LoadScript", addr_SQVM_LoadScript);
+		PRINT_ADDRESS("SQVM_LoadRson", addr_SQVM_LoadRson);
+		PRINT_ADDRESS("NET_ReceiveDatagram", addr_NET_ReceiveDatagram);
+		PRINT_ADDRESS("NET_SendDatagram ", addr_NET_SendDatagram);
+		PRINT_ADDRESS("CHLClient::FrameStageNotify", addr_CHLClient_FrameStageNotify);
+		PRINT_ADDRESS("CVEngineServer::IsPersistenceDataAvailable", addr_CVEngineServer_IsPersistenceDataAvailable);
+		PRINT_ADDRESS("MSG_EngineError", addr_MSG_EngineError);
 		std::cout << "+--------------------------------------------------------+" << std::endl;
 		// TODO implement error handling when sigscan fails or result is 0
 	}
 }
 
-void InstallHooks();
-void RemoveHooks();
+inline bool g_bDebugLoading = false;
+inline bool g_bReturnAllFalse = false;
+inline bool g_bDebugConsole = false;
 
-void ToggleDevCommands();
-void ToggleNetTrace();
\ No newline at end of file
+namespace Hooks
+{
+#pragma region CHLClient
+//	void __fastcall FrameStageNotify(CHLClient* rcx, ClientFrameStage_t curStage);
+
+//	using FrameStageNotifyFn = void(__fastcall*)(CHLClient*, ClientFrameStage_t);
+//	extern FrameStageNotifyFn originalFrameStageNotify;
+#pragma endregion
+
+#pragma region Squirrel
+	void* SQVM_Print(void* sqvm, char* fmt, ...);
+	__int64 SQVM_LoadRson(const char* rson_name);
+	bool SQVM_LoadScript(void* sqvm, const char* script_path, const char* script_name, int flag);
+
+	using SQVM_LoadRsonFn = __int64(*)(const char*);
+	extern SQVM_LoadRsonFn originalSQVM_LoadRson;
+
+	using SQVM_LoadScriptFn = bool(*)(void*, const char*, const char*, int);
+	extern SQVM_LoadScriptFn originalSQVM_LoadScript;
+#pragma endregion
+
+#pragma region CVEngineServer
+	bool IsPersistenceDataAvailable(__int64 thisptr, int client);
+
+	using IsPersistenceDataAvailableFn = bool(*)(__int64, int);
+	extern IsPersistenceDataAvailableFn originalIsPersistenceDataAvailable;
+#pragma endregion
+
+#pragma region NetChannel
+	bool NET_ReceiveDatagram(int sock, void* inpacket, bool raw);
+	unsigned int NET_SendDatagram(SOCKET s, const char* buf, int len, int flags);
+
+	using NET_ReceiveDatagramFn = bool(*)(int, void*, bool);
+	extern NET_ReceiveDatagramFn originalNET_ReceiveDatagram;
+
+	using NET_SendDatagramFn = unsigned int(*)(SOCKET, const char*, int, int);
+	extern NET_SendDatagramFn originalNET_SendDatagram;
+#pragma endregion
+
+#pragma region ConVar
+	bool ConVar_IsFlagSet(int** cvar, int flag);
+	bool ConCommand_IsFlagSet(int* cmd, int flag);
+#pragma endregion
+
+#pragma region Other
+	int MSG_EngineError(char* fmt, va_list args);
+
+	using MSG_EngineErrorFn = int(*)(char*, va_list);
+	extern MSG_EngineErrorFn originalMSG_EngineError;
+#pragma endregion
+
+	void InstallHooks();
+	void RemoveHooks();
+	void ToggleNetHooks();
+	void ToggleDevCommands();
+}
\ No newline at end of file
diff --git a/r5dedicated/iconvar.cpp b/r5dedicated/iconvar.cpp
index 169c9060..75002dff 100644
--- a/r5dedicated/iconvar.cpp
+++ b/r5dedicated/iconvar.cpp
@@ -1,12 +1,13 @@
 #include "pch.h"
-#include "iconvar.h"
+#include "hooks.h"
 
 //-----------------------------------------------------------------------------
 // Purpose: test each ConVar query before setting the cvar
 // Input  : **cvar - flag
 // Output : true if change is not permitted, false if permitted
 //-----------------------------------------------------------------------------
-bool HConVar_IsFlagSet(int** cvar, int flag)
+
+bool Hooks::ConVar_IsFlagSet(int** cvar, int flag)
 {
 	int real_flags = *(*(cvar + (72 / (sizeof(void*)))) + (56 / sizeof(int)));
 	if (g_bDebugConsole)
@@ -24,16 +25,46 @@ bool HConVar_IsFlagSet(int** cvar, int flag)
 	}
 	if (flag & 0x80000) { return true; }
 
-	if (!g_bReturnAllFalse) { return (real_flags & flag) != 0; }
-	else { return false; } // Returning false on all queries may cause problems
+	if (!g_bReturnAllFalse)
+	{
+		return (real_flags & flag) != 0;
+	}
+	else
+	{
+		return false;
+	}
 }
 
-void AttachIConVarHooks()
-{
-	DetourAttach((LPVOID*)&org_IConVar_IsFlagSet, &HConVar_IsFlagSet);
-}
+//-----------------------------------------------------------------------------
+// Purpose: test each ConCommand query before execution
+// Input  : *cmd - flag
+// Output : true if execution is not permitted, false if permitted
+//-----------------------------------------------------------------------------
 
-void DetachIConVarHooks()
+bool Hooks::ConCommand_IsFlagSet(int* cmd, int flag)
 {
-	DetourDetach((LPVOID*)&org_IConVar_IsFlagSet, &HConVar_IsFlagSet);
+	int real_flags = *((cmd + (56 / sizeof(int))));
+	if (g_bDebugConsole)
+	{
+		printf("--------------------------------------------------\n");
+		printf(" Flaged: %08X\n", real_flags);
+	}
+	// Mask off FCVAR_CHEATS and FCVAR_DEVELOPMENTONLY
+	real_flags &= 0xFFFFBFFD;
+	if (g_bDebugConsole)
+	{
+		printf(" Masked: %08X\n", real_flags);
+		printf(" Verify: %08X\n", flag);
+		printf("--------------------------------------------------\n");
+	}
+	if (flag & 0x80000) { return true; }
+
+	if (!g_bReturnAllFalse)
+	{
+		return(real_flags & flag) != 0;
+	}
+	else
+	{
+		return false;
+	}
 }
\ No newline at end of file
diff --git a/r5dedicated/iconvar.h b/r5dedicated/iconvar.h
deleted file mode 100644
index 25880877..00000000
--- a/r5dedicated/iconvar.h
+++ /dev/null
@@ -1,7 +0,0 @@
-#pragma once
-#include "hooks.h"
-
-bool HConVar_IsFlagSet(int** cvar, int flag);
-
-void AttachIConVarHooks();
-void DetachIConVarHooks();
\ No newline at end of file
diff --git a/r5dedicated/msgbox.cpp b/r5dedicated/msgbox.cpp
index 24e1ea15..58a7727b 100644
--- a/r5dedicated/msgbox.cpp
+++ b/r5dedicated/msgbox.cpp
@@ -1,24 +1,19 @@
 #include "pch.h"
 #include "hooks.h"
 
+namespace Hooks
+{
+	MSG_EngineErrorFn originalMSG_EngineError = nullptr;
+}
+
 //-----------------------------------------------------------------------------
 // Engine Error message box
 //-----------------------------------------------------------------------------
-int HMSG_EngineError(char* fmt, va_list args)
+
+int Hooks::MSG_EngineError(char* fmt, va_list args)
 {
 	printf("\nENGINE ERROR #####################################\n");
 	vprintf(fmt, args);
 
-	///////////////////////////////////////////////////////////////////////////
-	return org_MSG_EngineError(fmt, args);
-}
-
-void AttachMSGBoxHooks()
-{
-	DetourAttach((LPVOID*)&org_MSG_EngineError, &HMSG_EngineError);
-}
-
-void DetachMSGBoxHooks()
-{
-	DetourDetach((LPVOID*)&org_MSG_EngineError, &HMSG_EngineError);
+	return originalMSG_EngineError(fmt, args);
 }
\ No newline at end of file
diff --git a/r5dedicated/msgbox.h b/r5dedicated/msgbox.h
deleted file mode 100644
index ea1e094d..00000000
--- a/r5dedicated/msgbox.h
+++ /dev/null
@@ -1,7 +0,0 @@
-#pragma once
-#include "hooks.h"
-
-int HMSG_EngineError(char* fmt, va_list args);
-
-void AttachMSGBoxHooks();
-void DetachMSGBoxHooks();
\ No newline at end of file
diff --git a/r5dedicated/net.cpp b/r5dedicated/net.cpp
new file mode 100644
index 00000000..340a4be2
--- /dev/null
+++ b/r5dedicated/net.cpp
@@ -0,0 +1,71 @@
+#include "pch.h"
+#include "hooks.h"
+
+namespace Hooks
+{
+	NET_ReceiveDatagramFn originalNET_ReceiveDatagram = nullptr;
+	NET_SendDatagramFn originalNET_SendDatagram = nullptr;
+}
+
+typedef unsigned __int64 QWORD;
+
+struct __declspec(align(8)) netpacket_t
+{
+	DWORD family_maybe;
+	sockaddr_in sin;
+	WORD sin_port;
+	BYTE gap16;
+	BYTE byte17;
+	DWORD source;
+	double received;
+	unsigned __int8* data;
+	QWORD label;
+	BYTE byte38;
+	QWORD qword40;
+	QWORD qword48;
+	BYTE gap50[8];
+	QWORD qword58;
+	QWORD qword60;
+	QWORD qword68;
+	int less_than_12;
+	DWORD wiresize;
+	BYTE gap78[8];
+	QWORD qword80;
+};
+
+//-----------------------------------------------------------------------------
+// Hook and log the receive datagram
+//-----------------------------------------------------------------------------
+
+bool Hooks::NET_ReceiveDatagram(int sock, void* inpacket, bool raw)
+{
+	bool result = originalNET_ReceiveDatagram(sock, inpacket, raw);
+	if (result)
+	{
+		int i = NULL;
+		netpacket_t* pkt = (netpacket_t*)inpacket;
+
+		///////////////////////////////////////////////////////////////////////////
+		// Log received packet data
+		HexDump("[+] NET_ReceiveDatagram", 0, &pkt->data[i], pkt->wiresize);
+	}
+
+	return result;
+}
+
+//-----------------------------------------------------------------------------
+// Hook and log send datagram
+//-----------------------------------------------------------------------------
+
+unsigned int Hooks::NET_SendDatagram(SOCKET s, const char* buf, int len, int flags)
+{
+	unsigned int result = originalNET_SendDatagram(s, buf, len, flags);
+	if (result)
+	{
+		///////////////////////////////////////////////////////////////////////////
+		// Log transmitted packet data
+		HexDump("[+] NET_SendDatagram", 0, buf, len);
+	}
+
+	return result;
+}
\ No newline at end of file
diff --git a/r5dedicated/pch.h b/r5dedicated/pch.h
index 975aba77..7159ba8a 100644
--- a/r5dedicated/pch.h
+++ b/r5dedicated/pch.h
@@ -3,7 +3,7 @@
 
 #define WIN32_LEAN_AND_MEAN // Prevent winsock2 redefinition.
 #include <windows.h>
-#include <detours.h>
+#include <minhook.h>
 #include <WinSock2.h>
 #include <thread>
 #include <fstream>
diff --git a/r5dedicated/r5dedicated.vcxproj b/r5dedicated/r5dedicated.vcxproj
index 7e6fe2bd..055520ed 100644
--- a/r5dedicated/r5dedicated.vcxproj
+++ b/r5dedicated/r5dedicated.vcxproj
@@ -87,8 +87,8 @@
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
     <LinkIncremental>false</LinkIncremental>
     <TargetName>dedicated</TargetName>
-    <IncludePath>$(VC_IncludePath);$(WindowsSDK_IncludePath);$(SolutionDir)external\detours\include;$(SolutionDir)external\spdlog\include;$(SolutionDir)shared\include;$(SolutionDir)r5dedicated;$(IncludePath)</IncludePath>
-    <LibraryPath>$(VC_LibraryPath_x64);$(WindowsSDK_LibraryPath_x64);$(SolutionDir)external\detours\libs;$(LibraryPath)</LibraryPath>
+    <IncludePath>$(VC_IncludePath);$(WindowsSDK_IncludePath);$(SolutionDir)external\minhook\include;$(SolutionDir)external\spdlog\include;$(SolutionDir)shared\include;$(SolutionDir)r5dedicated;$(IncludePath)</IncludePath>
+    <LibraryPath>$(SolutionDir)external\minhook\lib;$(VC_LibraryPath_x64);$(WindowsSDK_LibraryPath_x64);$(LibraryPath)</LibraryPath>
   </PropertyGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
     <ClCompile>
@@ -164,19 +164,18 @@
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <OptimizeReferences>true</OptimizeReferences>
       <GenerateDebugInformation>true</GenerateDebugInformation>
-      <AdditionalDependencies>detours.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>libMinHook.x64.lib</AdditionalDependencies>
       <ModuleDefinitionFile>r5dedicated.def</ModuleDefinitionFile>
     </Link>
   </ItemDefinitionGroup>
   <ItemGroup>
     <ClCompile Include="..\shared\utility.cpp" />
-    <ClCompile Include="concommand.cpp" />
     <ClCompile Include="console.cpp" />
     <ClCompile Include="dllmain.cpp" />
     <ClCompile Include="hooks.cpp" />
     <ClCompile Include="iconvar.cpp" />
     <ClCompile Include="msgbox.cpp" />
-    <ClCompile Include="cnetchan.cpp" />
+    <ClCompile Include="net.cpp" />
     <ClCompile Include="opcodes.cpp" />
     <ClCompile Include="pch.cpp">
       <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
@@ -186,6 +185,7 @@
     <ClCompile Include="sqvm.cpp" />
   </ItemGroup>
   <ItemGroup>
+    <ClInclude Include="..\external\minhook\include\MinHook.h" />
     <ClInclude Include="..\external\spdlog\include\async.h" />
     <ClInclude Include="..\external\spdlog\include\async_logger-inl.h" />
     <ClInclude Include="..\external\spdlog\include\async_logger.h" />
@@ -284,17 +284,11 @@
     <ClInclude Include="..\shared\include\httplib.h" />
     <ClInclude Include="..\shared\include\json.hpp" />
     <ClInclude Include="..\shared\include\utility.h" />
-    <ClInclude Include="concommand.h" />
     <ClInclude Include="console.h" />
     <ClInclude Include="dllmain.h" />
     <ClInclude Include="hooks.h" />
-    <ClInclude Include="iconvar.h" />
-    <ClInclude Include="msgbox.h" />
-    <ClInclude Include="cnetchan.h" />
     <ClInclude Include="opcodes.h" />
     <ClInclude Include="pch.h" />
-    <ClInclude Include="cvengineserver.h" />
-    <ClInclude Include="sqvm.h" />
   </ItemGroup>
   <ItemGroup>
     <None Include="r5dedicated.def" />
diff --git a/r5dedicated/r5dedicated.vcxproj.filters b/r5dedicated/r5dedicated.vcxproj.filters
index b0039216..c95890fb 100644
--- a/r5dedicated/r5dedicated.vcxproj.filters
+++ b/r5dedicated/r5dedicated.vcxproj.filters
@@ -17,27 +17,9 @@
     <Filter Include="shared\include">
       <UniqueIdentifier>{a0165b58-06b1-4b6a-b5d1-5d643517ad14}</UniqueIdentifier>
     </Filter>
-    <Filter Include="hooks\iconvar">
-      <UniqueIdentifier>{06affed3-5a59-4b95-88ca-72d92c91909b}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="hooks\concommand">
-      <UniqueIdentifier>{0742106d-702f-499e-99f1-e43f2a6ae561}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="hooks\cvengineserver">
-      <UniqueIdentifier>{338a4fb7-7519-4628-9206-679d33824965}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="hooks\other">
-      <UniqueIdentifier>{cc424eef-0c7a-4fb0-9d84-30bf8db2e253}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="hooks\squirrel">
-      <UniqueIdentifier>{74afa89f-72af-4e13-aa90-70f7a1957154}</UniqueIdentifier>
-    </Filter>
     <Filter Include="core\resource">
       <UniqueIdentifier>{35b40ed1-12bd-4bcf-9c05-5a42a0096619}</UniqueIdentifier>
     </Filter>
-    <Filter Include="hooks\netchannel">
-      <UniqueIdentifier>{05e6e9a7-801b-49b0-9c5a-21c4868befb7}</UniqueIdentifier>
-    </Filter>
     <Filter Include="shared\libraries">
       <UniqueIdentifier>{a7199092-e8a9-49fa-97e1-b2d0ea21001b}</UniqueIdentifier>
     </Filter>
@@ -62,6 +44,42 @@
     <Filter Include="shared\libraries\spdlog\include\sinks">
       <UniqueIdentifier>{eaefe9b7-d14d-48b6-878a-53a5ada7454b}</UniqueIdentifier>
     </Filter>
+    <Filter Include="shared\libraries\minhook">
+      <UniqueIdentifier>{245e8064-9b24-4631-9326-340dfb761fde}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="shared\libraries\minhook\include">
+      <UniqueIdentifier>{485b5648-149f-4664-a961-be9cd520e9e3}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="r5-sdk">
+      <UniqueIdentifier>{f5326cf2-826e-4499-98de-e818e096939d}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="r5-sdk\include">
+      <UniqueIdentifier>{4c680991-cc41-4265-a6f3-b46d698bd72f}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="r5-sdk\src">
+      <UniqueIdentifier>{8aac7eb6-9810-4fa2-bbfe-499fb2950f01}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="hooks\src">
+      <UniqueIdentifier>{f28b1a49-9b41-48d2-9462-1674af3d72a2}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="hooks\src\other">
+      <UniqueIdentifier>{cc424eef-0c7a-4fb0-9d84-30bf8db2e253}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="hooks\src\squirrel">
+      <UniqueIdentifier>{74afa89f-72af-4e13-aa90-70f7a1957154}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="hooks\src\netchannel">
+      <UniqueIdentifier>{05e6e9a7-801b-49b0-9c5a-21c4868befb7}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="hooks\src\iconvar">
+      <UniqueIdentifier>{06affed3-5a59-4b95-88ca-72d92c91909b}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="hooks\src\cvengineserver">
+      <UniqueIdentifier>{338a4fb7-7519-4628-9206-679d33824965}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="hooks\include">
+      <UniqueIdentifier>{31cdde4d-3641-497c-9b34-20d3d7c89d87}</UniqueIdentifier>
+    </Filter>
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="..\shared\include\address.h">
@@ -79,36 +97,12 @@
     <ClInclude Include="console.h">
       <Filter>core\include</Filter>
     </ClInclude>
-    <ClInclude Include="cnetchan.h">
-      <Filter>hooks\netchannel</Filter>
-    </ClInclude>
     <ClInclude Include="pch.h">
       <Filter>core\include</Filter>
     </ClInclude>
-    <ClInclude Include="concommand.h">
-      <Filter>hooks\concommand</Filter>
-    </ClInclude>
-    <ClInclude Include="cvengineserver.h">
-      <Filter>hooks\cvengineserver</Filter>
-    </ClInclude>
-    <ClInclude Include="sqvm.h">
-      <Filter>hooks\squirrel</Filter>
-    </ClInclude>
-    <ClInclude Include="msgbox.h">
-      <Filter>hooks\other</Filter>
-    </ClInclude>
-    <ClInclude Include="hooks.h">
-      <Filter>hooks</Filter>
-    </ClInclude>
     <ClInclude Include="dllmain.h">
       <Filter>core\include</Filter>
     </ClInclude>
-    <ClInclude Include="opcodes.h">
-      <Filter>hooks\other</Filter>
-    </ClInclude>
-    <ClInclude Include="iconvar.h">
-      <Filter>hooks\iconvar</Filter>
-    </ClInclude>
     <ClInclude Include="..\external\spdlog\include\async.h">
       <Filter>shared\libraries\spdlog\include</Filter>
     </ClInclude>
@@ -391,6 +385,15 @@
     <ClInclude Include="..\external\spdlog\include\sinks\win_eventlog_sink.h">
       <Filter>shared\libraries\spdlog\include\sinks</Filter>
     </ClInclude>
+    <ClInclude Include="..\external\minhook\include\MinHook.h">
+      <Filter>shared\libraries\minhook\include</Filter>
+    </ClInclude>
+    <ClInclude Include="opcodes.h">
+      <Filter>r5-sdk\include</Filter>
+    </ClInclude>
+    <ClInclude Include="hooks.h">
+      <Filter>hooks\include</Filter>
+    </ClInclude>
   </ItemGroup>
   <ItemGroup>
     <ClCompile Include="console.cpp">
@@ -402,33 +405,30 @@
     <ClCompile Include="pch.cpp">
       <Filter>core</Filter>
     </ClCompile>
-    <ClCompile Include="hooks.cpp">
-      <Filter>hooks</Filter>
-    </ClCompile>
-    <ClCompile Include="cnetchan.cpp">
-      <Filter>hooks\netchannel</Filter>
-    </ClCompile>
-    <ClCompile Include="concommand.cpp">
-      <Filter>hooks\concommand</Filter>
+    <ClCompile Include="net.cpp">
+      <Filter>hooks\src\netchannel</Filter>
     </ClCompile>
     <ClCompile Include="cvengineserver.cpp">
-      <Filter>hooks\cvengineserver</Filter>
+      <Filter>hooks\src\cvengineserver</Filter>
     </ClCompile>
     <ClCompile Include="sqvm.cpp">
-      <Filter>hooks\squirrel</Filter>
+      <Filter>hooks\src\squirrel</Filter>
     </ClCompile>
     <ClCompile Include="msgbox.cpp">
-      <Filter>hooks\other</Filter>
-    </ClCompile>
-    <ClCompile Include="opcodes.cpp">
-      <Filter>hooks\other</Filter>
-    </ClCompile>
-    <ClCompile Include="iconvar.cpp">
-      <Filter>hooks\iconvar</Filter>
+      <Filter>hooks\src\other</Filter>
     </ClCompile>
     <ClCompile Include="..\shared\utility.cpp">
       <Filter>shared</Filter>
     </ClCompile>
+    <ClCompile Include="iconvar.cpp">
+      <Filter>hooks\src\iconvar</Filter>
+    </ClCompile>
+    <ClCompile Include="opcodes.cpp">
+      <Filter>r5-sdk\src</Filter>
+    </ClCompile>
+    <ClCompile Include="hooks.cpp">
+      <Filter>hooks\src</Filter>
+    </ClCompile>
   </ItemGroup>
   <ItemGroup>
     <None Include="r5dedicated.def">
diff --git a/r5dedicated/sqvm.cpp b/r5dedicated/sqvm.cpp
index b94a76b3..c3654922 100644
--- a/r5dedicated/sqvm.cpp
+++ b/r5dedicated/sqvm.cpp
@@ -1,11 +1,18 @@
 #include "pch.h"
-#include "sqvm.h"
+#include "hooks.h"
+
+namespace Hooks
+{
+	SQVM_LoadRsonFn originalSQVM_LoadRson = nullptr;
+	SQVM_LoadScriptFn originalSQVM_LoadScript = nullptr;
+}
 
 //---------------------------------------------------------------------------------
 // Print the output of the VM.
 // TODO: separate SV CL and UI
 //---------------------------------------------------------------------------------
-void* HSQVM_PrintFunc(void* sqvm, char* fmt, ...)
+
+void* Hooks::SQVM_Print(void* sqvm, char* fmt, ...)
 {
 	va_list args;
 	va_start(args, fmt);
@@ -17,11 +24,13 @@ void* HSQVM_PrintFunc(void* sqvm, char* fmt, ...)
 //---------------------------------------------------------------------------------
 // Load the include file from the mods directory
 //---------------------------------------------------------------------------------
-__int64 HSQVM_LoadRson(const char* rson_name)
+
+__int64 Hooks::SQVM_LoadRson(const char* rson_name)
 {
 	char filepath[MAX_PATH] = { 0 };
 	sprintf_s(filepath, MAX_PATH, "platform\\%s", rson_name);
 
+	///////////////////////////////////////////////////////////////////////////////
 	// Flip forward slashes in filepath to windows-style backslash
 	for (int i = 0; i < strlen(filepath); i++)
 	{
@@ -31,15 +40,17 @@ __int64 HSQVM_LoadRson(const char* rson_name)
 		}
 	}
 
+	///////////////////////////////////////////////////////////////////////////////
 	// Returns the new path if the rson exists on the disk
-	if (FileExists(filepath) && org_SQVM_LoadRson(rson_name))
+	if (FileExists(filepath) && originalSQVM_LoadRson(rson_name))
 	{
 		printf("\n");
 		printf("##################################################\n");
 		printf("] '%s'\n", filepath);
 		printf("##################################################\n");
 		printf("\n");
-		return org_SQVM_LoadRson(filepath);
+
+		return originalSQVM_LoadRson(filepath);
 	}
 
 	printf("\n");
@@ -47,17 +58,20 @@ __int64 HSQVM_LoadRson(const char* rson_name)
 	printf("] '%s'\n", rson_name);
 	printf("##################################################\n");
 	printf("\n");
-	return org_SQVM_LoadRson(rson_name);
+
+	return originalSQVM_LoadRson(rson_name);
 }
 
 //---------------------------------------------------------------------------------
 // Load the script file from the mods directory
 //---------------------------------------------------------------------------------
-bool HSQVM_LoadScript(void* sqvm, const char* script_path, const char* script_name, int flag)
+
+bool Hooks::SQVM_LoadScript(void* sqvm, const char* script_path, const char* script_name, int flag)
 {
 	char filepath[MAX_PATH] = { 0 };
 	sprintf_s(filepath, MAX_PATH, "platform\\%s", script_path);
 
+	///////////////////////////////////////////////////////////////////////////////
 	// Flip forward slashes in filepath to windows-style backslash
 	for (int i = 0; i < strlen(filepath); i++)
 	{
@@ -70,9 +84,9 @@ bool HSQVM_LoadScript(void* sqvm, const char* script_path, const char* script_na
 	{
 		printf(" [+] Loading SQVM Script '%s' ...\n", filepath);
 	}
-
+	///////////////////////////////////////////////////////////////////////////////
 	// Returns true if the script exists on the disk
-	if (FileExists(filepath) && org_SQVM_LoadScript(sqvm, filepath, script_name, flag))
+	if (FileExists(filepath) && originalSQVM_LoadScript(sqvm, filepath, script_name, flag))
 	{
 		return true;
 	}
@@ -81,20 +95,5 @@ bool HSQVM_LoadScript(void* sqvm, const char* script_path, const char* script_na
 		printf(" [!] FAILED. Try SP / VPK for '%s'\n", filepath);
 	}
 
-	///////////////////////////////////////////////////////////////////////////////
-	return org_SQVM_LoadScript(sqvm, script_path, script_name, flag);
-}
-
-void AttachSQVMHooks()
-{
-	DetourAttach((LPVOID*)&org_SQVM_PrintFunc, &HSQVM_PrintFunc);
-	DetourAttach((LPVOID*)&org_SQVM_LoadRson, &HSQVM_LoadRson);
-	DetourAttach((LPVOID*)&org_SQVM_LoadScript, &HSQVM_LoadScript);
-}
-
-void DetachSQVMHooks()
-{
-	DetourDetach((LPVOID*)&org_SQVM_PrintFunc, &HSQVM_PrintFunc);
-	DetourDetach((LPVOID*)&org_SQVM_LoadRson, &HSQVM_LoadRson);
-	DetourDetach((LPVOID*)&org_SQVM_LoadScript, &HSQVM_LoadScript);
+	return originalSQVM_LoadScript(sqvm, script_path, script_name, flag);
 }
\ No newline at end of file
diff --git a/r5dedicated/sqvm.h b/r5dedicated/sqvm.h
deleted file mode 100644
index 2798c54d..00000000
--- a/r5dedicated/sqvm.h
+++ /dev/null
@@ -1,10 +0,0 @@
-#pragma once
-#include "pch.h"
-#include "hooks.h"
-
-void* HSQVM_PrintFunc(void* sqvm, char* fmt, ...);
-__int64 HSQVM_LoadRson(const char* rson_name);
-bool HSQVM_LoadScript(void* sqvm, const char* script_path, const char* script_name, int flag);
-
-void AttachSQVMHooks();
-void DetachSQVMHooks();
\ No newline at end of file
diff --git a/r5dev/include/console.h b/r5dev/include/console.h
index a7879bb3..6e5f6aed 100644
--- a/r5dev/include/console.h
+++ b/r5dev/include/console.h
@@ -2,18 +2,4 @@
 
 /////////////////////////////////////////////////////////////////////////////
 // Initialization
-void SetupConsole();
-void RemoveCMHooks();
-void ToggleDevCommands();
-
-/////////////////////////////////////////////////////////////////////////////
-// Hooks
-bool HConVar_IsFlagSet(int** cvar, int flag);
-bool HConCommand_IsFlagSet(int* cmd, int flag);
-
-/////////////////////////////////////////////////////////////////////////////
-// Globals
-inline bool g_bDebugConsole   = false;
-inline bool g_bReturnAllFalse = false;
-
-/////////////////////////////////////////////////////////////////////////////
+void SetupConsole();
\ No newline at end of file
diff --git a/r5dev/include/enums.h b/r5dev/include/enums.h
index 4d75b736..9d0d470b 100644
--- a/r5dev/include/enums.h
+++ b/r5dev/include/enums.h
@@ -79,3 +79,255 @@ enum class DXGISwapChainVTbl : short
     GetFrameStatistics                   = 16,
     GetLastPresentCount                  = 17,
 };
+
+#define MAX_SPLITSCREEN_CLIENT_BITS 2
+#define MAX_SPLITSCREEN_CLIENTS	( 1 << MAX_SPLITSCREEN_CLIENT_BITS ) // 4
+
+enum
+{
+	MAX_JOYSTICKS = MAX_SPLITSCREEN_CLIENTS,
+	MOUSE_BUTTON_COUNT = 5,
+};
+
+enum JoystickAxis_t
+{
+	JOY_AXIS_X = 0,
+	JOY_AXIS_Y,
+	JOY_AXIS_Z,
+	JOY_AXIS_R,
+	JOY_AXIS_U,
+	JOY_AXIS_V,
+	MAX_JOYSTICK_AXES,
+};
+
+enum
+{
+	JOYSTICK_MAX_BUTTON_COUNT = 32,
+	JOYSTICK_POV_BUTTON_COUNT = 4,
+	JOYSTICK_AXIS_BUTTON_COUNT = MAX_JOYSTICK_AXES * 2,
+};
+
+#define JOYSTICK_BUTTON_INTERNAL( _joystick, _button ) ( JOYSTICK_FIRST_BUTTON + ((_joystick) * JOYSTICK_MAX_BUTTON_COUNT) + (_button) )
+#define JOYSTICK_POV_BUTTON_INTERNAL( _joystick, _button ) ( JOYSTICK_FIRST_POV_BUTTON + ((_joystick) * JOYSTICK_POV_BUTTON_COUNT) + (_button) )
+#define JOYSTICK_AXIS_BUTTON_INTERNAL( _joystick, _button ) ( JOYSTICK_FIRST_AXIS_BUTTON + ((_joystick) * JOYSTICK_AXIS_BUTTON_COUNT) + (_button) )
+
+#define JOYSTICK_BUTTON( _joystick, _button ) ( (ButtonCode_t)JOYSTICK_BUTTON_INTERNAL( _joystick, _button ) )
+#define JOYSTICK_POV_BUTTON( _joystick, _button ) ( (ButtonCode_t)JOYSTICK_POV_BUTTON_INTERNAL( _joystick, _button ) )
+#define JOYSTICK_AXIS_BUTTON( _joystick, _button ) ( (ButtonCode_t)JOYSTICK_AXIS_BUTTON_INTERNAL( _joystick, _button ) )
+
+enum ButtonCode_t
+{
+	BUTTON_CODE_INVALID = -1,
+	BUTTON_CODE_NONE = 0,
+
+	KEY_FIRST = 0,
+
+	KEY_NONE = KEY_FIRST,
+	KEY_0,
+	KEY_1,
+	KEY_2,
+	KEY_3,
+	KEY_4,
+	KEY_5,
+	KEY_6,
+	KEY_7,
+	KEY_8,
+	KEY_9,
+	KEY_A,
+	KEY_B,
+	KEY_C,
+	KEY_D,
+	KEY_E,
+	KEY_F,
+	KEY_G,
+	KEY_H,
+	KEY_I,
+	KEY_J,
+	KEY_K,
+	KEY_L,
+	KEY_M,
+	KEY_N,
+	KEY_O,
+	KEY_P,
+	KEY_Q,
+	KEY_R,
+	KEY_S,
+	KEY_T,
+	KEY_U,
+	KEY_V,
+	KEY_W,
+	KEY_X,
+	KEY_Y,
+	KEY_Z,
+	KEY_PAD_0,
+	KEY_PAD_1,
+	KEY_PAD_2,
+	KEY_PAD_3,
+	KEY_PAD_4,
+	KEY_PAD_5,
+	KEY_PAD_6,
+	KEY_PAD_7,
+	KEY_PAD_8,
+	KEY_PAD_9,
+	KEY_PAD_DIVIDE,
+	KEY_PAD_MULTIPLY,
+	KEY_PAD_MINUS,
+	KEY_PAD_PLUS,
+	KEY_PAD_ENTER,
+	KEY_PAD_DECIMAL,
+	KEY_LBRACKET,
+	KEY_RBRACKET,
+	KEY_SEMICOLON,
+	KEY_APOSTROPHE,
+	KEY_BACKQUOTE,
+	KEY_COMMA,
+	KEY_PERIOD,
+	KEY_SLASH,
+	KEY_BACKSLASH,
+	KEY_MINUS,
+	KEY_EQUAL,
+	KEY_ENTER,
+	KEY_SPACE,
+	KEY_BACKSPACE,
+	KEY_TAB,
+	KEY_CAPSLOCK,
+	KEY_NUMLOCK,
+	KEY_ESCAPE,
+	KEY_SCROLLLOCK,
+	KEY_INSERT,
+	KEY_DELETE,
+	KEY_HOME,
+	KEY_END,
+	KEY_PAGEUP,
+	KEY_PAGEDOWN,
+	KEY_BREAK,
+	KEY_LSHIFT,
+	KEY_RSHIFT,
+	KEY_LALT,
+	KEY_RALT,
+	KEY_LCONTROL,
+	KEY_RCONTROL,
+	KEY_LWIN,
+	KEY_RWIN,
+	KEY_APP,
+	KEY_UP,
+	KEY_LEFT,
+	KEY_DOWN,
+	KEY_RIGHT,
+	KEY_F1,
+	KEY_F2,
+	KEY_F3,
+	KEY_F4,
+	KEY_F5,
+	KEY_F6,
+	KEY_F7,
+	KEY_F8,
+	KEY_F9,
+	KEY_F10,
+	KEY_F11,
+	KEY_F12,
+	KEY_CAPSLOCKTOGGLE,
+	KEY_NUMLOCKTOGGLE,
+	KEY_SCROLLLOCKTOGGLE,
+
+	KEY_LAST = KEY_SCROLLLOCKTOGGLE,
+	KEY_COUNT = KEY_LAST - KEY_FIRST + 1,
+
+	// Mouse
+	MOUSE_FIRST = KEY_LAST + 1,
+
+	MOUSE_LEFT = MOUSE_FIRST,
+	MOUSE_RIGHT,
+	MOUSE_MIDDLE,
+	MOUSE_4,
+	MOUSE_5,
+	MOUSE_WHEEL_UP,		// A fake button which is 'pressed' and 'released' when the wheel is moved up
+	MOUSE_WHEEL_DOWN,	// A fake button which is 'pressed' and 'released' when the wheel is moved down
+
+	MOUSE_LAST = MOUSE_WHEEL_DOWN,
+	MOUSE_COUNT = MOUSE_LAST - MOUSE_FIRST + 1,
+
+	// Joystick
+	JOYSTICK_FIRST = MOUSE_LAST + 1,
+
+	JOYSTICK_FIRST_BUTTON = JOYSTICK_FIRST,
+	JOYSTICK_LAST_BUTTON = JOYSTICK_BUTTON_INTERNAL(MAX_JOYSTICKS - 1, JOYSTICK_MAX_BUTTON_COUNT - 1),
+	JOYSTICK_FIRST_POV_BUTTON,
+	JOYSTICK_LAST_POV_BUTTON = JOYSTICK_POV_BUTTON_INTERNAL(MAX_JOYSTICKS - 1, JOYSTICK_POV_BUTTON_COUNT - 1),
+	JOYSTICK_FIRST_AXIS_BUTTON,
+	JOYSTICK_LAST_AXIS_BUTTON = JOYSTICK_AXIS_BUTTON_INTERNAL(MAX_JOYSTICKS - 1, JOYSTICK_AXIS_BUTTON_COUNT - 1),
+
+	JOYSTICK_LAST = JOYSTICK_LAST_AXIS_BUTTON,
+
+	BUTTON_CODE_LAST,
+	BUTTON_CODE_COUNT = BUTTON_CODE_LAST - KEY_FIRST + 1,
+
+	// Helpers for XBox 360
+	KEY_XBUTTON_UP = JOYSTICK_FIRST_POV_BUTTON,	// POV buttons
+	KEY_XBUTTON_RIGHT,
+	KEY_XBUTTON_DOWN,
+	KEY_XBUTTON_LEFT,
+
+	KEY_XBUTTON_A = JOYSTICK_FIRST_BUTTON,		// Buttons
+	KEY_XBUTTON_B,
+	KEY_XBUTTON_X,
+	KEY_XBUTTON_Y,
+	KEY_XBUTTON_LEFT_SHOULDER,
+	KEY_XBUTTON_RIGHT_SHOULDER,
+	KEY_XBUTTON_BACK,
+	KEY_XBUTTON_START,
+	KEY_XBUTTON_STICK1,
+	KEY_XBUTTON_STICK2,
+	KEY_XBUTTON_INACTIVE_START,
+
+	KEY_XSTICK1_RIGHT = JOYSTICK_FIRST_AXIS_BUTTON,	// XAXIS POSITIVE
+	KEY_XSTICK1_LEFT,							// XAXIS NEGATIVE
+	KEY_XSTICK1_DOWN,							// YAXIS POSITIVE
+	KEY_XSTICK1_UP,								// YAXIS NEGATIVE
+	KEY_XBUTTON_LTRIGGER,						// ZAXIS POSITIVE
+	KEY_XBUTTON_RTRIGGER,						// ZAXIS NEGATIVE
+	KEY_XSTICK2_RIGHT,							// UAXIS POSITIVE
+	KEY_XSTICK2_LEFT,							// UAXIS NEGATIVE
+	KEY_XSTICK2_DOWN,							// VAXIS POSITIVE
+	KEY_XSTICK2_UP,								// VAXIS NEGATIVE
+};
+
+// Buttons are not confirmed to be the same. They have been always the same throughout the source engine. Lets hope they did not change them.
+
+enum KeyValuesTypes
+{
+	TYPE_NONE = 0x0,
+	TYPE_STRING = 0x1,
+	TYPE_INT = 0x2,
+	TYPE_FLOAT = 0x3,
+	TYPE_PTR = 0x4,
+	TYPE_WSTRING = 0x5,
+	TYPE_COLOR = 0x6,
+	TYPE_UINT64 = 0x7,
+	TYPE_COMPILED_INT_BYTE = 0x8,
+	TYPE_COMPILED_INT_0 = 0x9,
+	TYPE_COMPILED_INT_1 = 0xA,
+	TYPE_NUMTYPES = 0xB,
+};
+
+enum ClientFrameStage_t
+{
+	FRAME_UNDEFINED = -1,			// (haven't run any frames yet)
+	FRAME_START,
+
+	// A network packet is being recieved
+	FRAME_NET_UPDATE_START,
+	// Data has been received and we're going to start calling PostDataUpdate
+	FRAME_NET_UPDATE_POSTDATAUPDATE_START,
+	// Data has been received and we've called PostDataUpdate on all data recipients
+	FRAME_NET_UPDATE_POSTDATAUPDATE_END,
+	// We've received all packets, we can now do interpolation, prediction, etc..
+	FRAME_NET_UPDATE_END,
+
+	// We're about to start rendering the scene
+	FRAME_RENDER_START,
+	// We've finished rendering the scene.
+	FRAME_RENDER_END,
+
+	FRAME_NET_FULL_FRAME_UPDATE_ON_REMOVE
+};
diff --git a/r5dev/include/gameclasses.h b/r5dev/include/gameclasses.h
index c495cc2e..e0cb8599 100644
--- a/r5dev/include/gameclasses.h
+++ b/r5dev/include/gameclasses.h
@@ -1,223 +1,6 @@
 #pragma once
 #include "patterns.h"
 
-/////////////////////////////////////////////////////////////////////////////
-// Enums
-
-#define MAX_SPLITSCREEN_CLIENT_BITS 2
-#define MAX_SPLITSCREEN_CLIENTS	( 1 << MAX_SPLITSCREEN_CLIENT_BITS ) // 4
-
-enum
-{
-	MAX_JOYSTICKS = MAX_SPLITSCREEN_CLIENTS,
-	MOUSE_BUTTON_COUNT = 5,
-};
-
-enum JoystickAxis_t
-{
-	JOY_AXIS_X = 0,
-	JOY_AXIS_Y,
-	JOY_AXIS_Z,
-	JOY_AXIS_R,
-	JOY_AXIS_U,
-	JOY_AXIS_V,
-	MAX_JOYSTICK_AXES,
-};
-
-enum
-{
-	JOYSTICK_MAX_BUTTON_COUNT = 32,
-	JOYSTICK_POV_BUTTON_COUNT = 4,
-	JOYSTICK_AXIS_BUTTON_COUNT = MAX_JOYSTICK_AXES * 2,
-};
-
-#define JOYSTICK_BUTTON_INTERNAL( _joystick, _button ) ( JOYSTICK_FIRST_BUTTON + ((_joystick) * JOYSTICK_MAX_BUTTON_COUNT) + (_button) )
-#define JOYSTICK_POV_BUTTON_INTERNAL( _joystick, _button ) ( JOYSTICK_FIRST_POV_BUTTON + ((_joystick) * JOYSTICK_POV_BUTTON_COUNT) + (_button) )
-#define JOYSTICK_AXIS_BUTTON_INTERNAL( _joystick, _button ) ( JOYSTICK_FIRST_AXIS_BUTTON + ((_joystick) * JOYSTICK_AXIS_BUTTON_COUNT) + (_button) )
-
-#define JOYSTICK_BUTTON( _joystick, _button ) ( (ButtonCode_t)JOYSTICK_BUTTON_INTERNAL( _joystick, _button ) )
-#define JOYSTICK_POV_BUTTON( _joystick, _button ) ( (ButtonCode_t)JOYSTICK_POV_BUTTON_INTERNAL( _joystick, _button ) )
-#define JOYSTICK_AXIS_BUTTON( _joystick, _button ) ( (ButtonCode_t)JOYSTICK_AXIS_BUTTON_INTERNAL( _joystick, _button ) )
-
-enum ButtonCode_t
-{
-	BUTTON_CODE_INVALID = -1,
-	BUTTON_CODE_NONE = 0,
-
-	KEY_FIRST = 0,
-
-	KEY_NONE = KEY_FIRST,
-	KEY_0,
-	KEY_1,
-	KEY_2,
-	KEY_3,
-	KEY_4,
-	KEY_5,
-	KEY_6,
-	KEY_7,
-	KEY_8,
-	KEY_9,
-	KEY_A,
-	KEY_B,
-	KEY_C,
-	KEY_D,
-	KEY_E,
-	KEY_F,
-	KEY_G,
-	KEY_H,
-	KEY_I,
-	KEY_J,
-	KEY_K,
-	KEY_L,
-	KEY_M,
-	KEY_N,
-	KEY_O,
-	KEY_P,
-	KEY_Q,
-	KEY_R,
-	KEY_S,
-	KEY_T,
-	KEY_U,
-	KEY_V,
-	KEY_W,
-	KEY_X,
-	KEY_Y,
-	KEY_Z,
-	KEY_PAD_0,
-	KEY_PAD_1,
-	KEY_PAD_2,
-	KEY_PAD_3,
-	KEY_PAD_4,
-	KEY_PAD_5,
-	KEY_PAD_6,
-	KEY_PAD_7,
-	KEY_PAD_8,
-	KEY_PAD_9,
-	KEY_PAD_DIVIDE,
-	KEY_PAD_MULTIPLY,
-	KEY_PAD_MINUS,
-	KEY_PAD_PLUS,
-	KEY_PAD_ENTER,
-	KEY_PAD_DECIMAL,
-	KEY_LBRACKET,
-	KEY_RBRACKET,
-	KEY_SEMICOLON,
-	KEY_APOSTROPHE,
-	KEY_BACKQUOTE,
-	KEY_COMMA,
-	KEY_PERIOD,
-	KEY_SLASH,
-	KEY_BACKSLASH,
-	KEY_MINUS,
-	KEY_EQUAL,
-	KEY_ENTER,
-	KEY_SPACE,
-	KEY_BACKSPACE,
-	KEY_TAB,
-	KEY_CAPSLOCK,
-	KEY_NUMLOCK,
-	KEY_ESCAPE,
-	KEY_SCROLLLOCK,
-	KEY_INSERT,
-	KEY_DELETE,
-	KEY_HOME,
-	KEY_END,
-	KEY_PAGEUP,
-	KEY_PAGEDOWN,
-	KEY_BREAK,
-	KEY_LSHIFT,
-	KEY_RSHIFT,
-	KEY_LALT,
-	KEY_RALT,
-	KEY_LCONTROL,
-	KEY_RCONTROL,
-	KEY_LWIN,
-	KEY_RWIN,
-	KEY_APP,
-	KEY_UP,
-	KEY_LEFT,
-	KEY_DOWN,
-	KEY_RIGHT,
-	KEY_F1,
-	KEY_F2,
-	KEY_F3,
-	KEY_F4,
-	KEY_F5,
-	KEY_F6,
-	KEY_F7,
-	KEY_F8,
-	KEY_F9,
-	KEY_F10,
-	KEY_F11,
-	KEY_F12,
-	KEY_CAPSLOCKTOGGLE,
-	KEY_NUMLOCKTOGGLE,
-	KEY_SCROLLLOCKTOGGLE,
-
-	KEY_LAST = KEY_SCROLLLOCKTOGGLE,
-	KEY_COUNT = KEY_LAST - KEY_FIRST + 1,
-
-	// Mouse
-	MOUSE_FIRST = KEY_LAST + 1,
-
-	MOUSE_LEFT = MOUSE_FIRST,
-	MOUSE_RIGHT,
-	MOUSE_MIDDLE,
-	MOUSE_4,
-	MOUSE_5,
-	MOUSE_WHEEL_UP,		// A fake button which is 'pressed' and 'released' when the wheel is moved up
-	MOUSE_WHEEL_DOWN,	// A fake button which is 'pressed' and 'released' when the wheel is moved down
-
-	MOUSE_LAST = MOUSE_WHEEL_DOWN,
-	MOUSE_COUNT = MOUSE_LAST - MOUSE_FIRST + 1,
-
-	// Joystick
-	JOYSTICK_FIRST = MOUSE_LAST + 1,
-
-	JOYSTICK_FIRST_BUTTON = JOYSTICK_FIRST,
-	JOYSTICK_LAST_BUTTON = JOYSTICK_BUTTON_INTERNAL(MAX_JOYSTICKS - 1, JOYSTICK_MAX_BUTTON_COUNT - 1),
-	JOYSTICK_FIRST_POV_BUTTON,
-	JOYSTICK_LAST_POV_BUTTON = JOYSTICK_POV_BUTTON_INTERNAL(MAX_JOYSTICKS - 1, JOYSTICK_POV_BUTTON_COUNT - 1),
-	JOYSTICK_FIRST_AXIS_BUTTON,
-	JOYSTICK_LAST_AXIS_BUTTON = JOYSTICK_AXIS_BUTTON_INTERNAL(MAX_JOYSTICKS - 1, JOYSTICK_AXIS_BUTTON_COUNT - 1),
-
-	JOYSTICK_LAST = JOYSTICK_LAST_AXIS_BUTTON,
-
-	BUTTON_CODE_LAST,
-	BUTTON_CODE_COUNT = BUTTON_CODE_LAST - KEY_FIRST + 1,
-
-	// Helpers for XBox 360
-	KEY_XBUTTON_UP = JOYSTICK_FIRST_POV_BUTTON,	// POV buttons
-	KEY_XBUTTON_RIGHT,
-	KEY_XBUTTON_DOWN,
-	KEY_XBUTTON_LEFT,
-
-	KEY_XBUTTON_A = JOYSTICK_FIRST_BUTTON,		// Buttons
-	KEY_XBUTTON_B,
-	KEY_XBUTTON_X,
-	KEY_XBUTTON_Y,
-	KEY_XBUTTON_LEFT_SHOULDER,
-	KEY_XBUTTON_RIGHT_SHOULDER,
-	KEY_XBUTTON_BACK,
-	KEY_XBUTTON_START,
-	KEY_XBUTTON_STICK1,
-	KEY_XBUTTON_STICK2,
-	KEY_XBUTTON_INACTIVE_START,
-
-	KEY_XSTICK1_RIGHT = JOYSTICK_FIRST_AXIS_BUTTON,	// XAXIS POSITIVE
-	KEY_XSTICK1_LEFT,							// XAXIS NEGATIVE
-	KEY_XSTICK1_DOWN,							// YAXIS POSITIVE
-	KEY_XSTICK1_UP,								// YAXIS NEGATIVE
-	KEY_XBUTTON_LTRIGGER,						// ZAXIS POSITIVE
-	KEY_XBUTTON_RTRIGGER,						// ZAXIS NEGATIVE
-	KEY_XSTICK2_RIGHT,							// UAXIS POSITIVE
-	KEY_XSTICK2_LEFT,							// UAXIS NEGATIVE
-	KEY_XSTICK2_DOWN,							// VAXIS POSITIVE
-	KEY_XSTICK2_UP,								// VAXIS NEGATIVE
-};
-
-// Buttons are not confirmed to be the same. They have been always the same throughout the source engine. Lets hope they did not change them.
-
 /////////////////////////////////////////////////////////////////////////////
 // Classes and Structs
 
@@ -351,22 +134,6 @@ public:
 	int m_mutex; // 0x0130
 };
 
-enum KeyValuesTypes
-{
-	TYPE_NONE = 0x0,
-	TYPE_STRING = 0x1,
-	TYPE_INT = 0x2,
-	TYPE_FLOAT = 0x3,
-	TYPE_PTR = 0x4,
-	TYPE_WSTRING = 0x5,
-	TYPE_COLOR = 0x6,
-	TYPE_UINT64 = 0x7,
-	TYPE_COMPILED_INT_BYTE = 0x8,
-	TYPE_COMPILED_INT_0 = 0x9,
-	TYPE_COMPILED_INT_1 = 0xA,
-	TYPE_NUMTYPES = 0xB,
-};
-
 class KeyValues
 {
 public:
@@ -485,28 +252,6 @@ public:
 	bool m_bWorkshopMapDownloadPending; //0x026A
 };
 
-enum ClientFrameStage_t
-{
-	FRAME_UNDEFINED = -1,			// (haven't run any frames yet)
-	FRAME_START,
-
-	// A network packet is being recieved
-	FRAME_NET_UPDATE_START,
-	// Data has been received and we're going to start calling PostDataUpdate
-	FRAME_NET_UPDATE_POSTDATAUPDATE_START,
-	// Data has been received and we've called PostDataUpdate on all data recipients
-	FRAME_NET_UPDATE_POSTDATAUPDATE_END,
-	// We've received all packets, we can now do interpolation, prediction, etc..
-	FRAME_NET_UPDATE_END,
-
-	// We're about to start rendering the scene
-	FRAME_RENDER_START,
-	// We've finished rendering the scene.
-	FRAME_RENDER_END,
-
-	FRAME_NET_FULL_FRAME_UPDATE_ON_REMOVE
-};
-
 class CHLClient
 {
 public:
diff --git a/r5dev/include/hooks.h b/r5dev/include/hooks.h
index 025eb1e0..ab484fd0 100644
--- a/r5dev/include/hooks.h
+++ b/r5dev/include/hooks.h
@@ -1,14 +1,87 @@
 #pragma once
+#include "patterns.h"
+#include "structs.h"
+#include "overlay.h"
+#include "hooks.h"
+#include "gameclasses.h"
 
-/////////////////////////////////////////////////////////////////////////////
-// Initialization
-void InstallENHooks();
-void RemoveENHooks();
-void ToggleDevCommands();
-void ToggleNetHooks();
-
-/////////////////////////////////////////////////////////////////////////////
-// Globals
 inline bool g_bDebugLoading = false;
+inline bool g_bReturnAllFalse = false;
+inline bool g_bDebugConsole = false;
+extern bool g_bBlockInput;
 
-/////////////////////////////////////////////////////////////////////////////
\ No newline at end of file
+namespace Hooks
+{
+#pragma region CHLClient
+	void __fastcall FrameStageNotify(CHLClient* rcx, ClientFrameStage_t curStage);
+
+	using FrameStageNotifyFn = void(__fastcall*)(CHLClient*, ClientFrameStage_t);
+	extern FrameStageNotifyFn originalFrameStageNotify;
+#pragma endregion
+
+#pragma region Squirrel
+	void* SQVM_Print(void* sqvm, char* fmt, ...);
+	__int64 SQVM_LoadRson(const char* rson_name);
+	bool SQVM_LoadScript(void* sqvm, const char* script_path, const char* script_name, int flag);
+
+	using SQVM_LoadRsonFn = __int64(*)(const char*);
+	extern SQVM_LoadRsonFn originalSQVM_LoadRson;
+
+	using SQVM_LoadScriptFn = bool(*)(void*, const char*, const char*, int);
+	extern SQVM_LoadScriptFn originalSQVM_LoadScript;
+#pragma endregion
+
+#pragma region CVEngineServer
+	bool IsPersistenceDataAvailable(__int64 thisptr, int client);
+
+	using IsPersistenceDataAvailableFn = bool(*)(__int64, int);
+	extern IsPersistenceDataAvailableFn originalIsPersistenceDataAvailable;
+#pragma endregion
+
+#pragma region NetChannel
+	bool NET_ReceiveDatagram(int sock, void* inpacket, bool raw);
+	unsigned int NET_SendDatagram(SOCKET s, const char* buf, int len, int flags);
+
+	using NET_ReceiveDatagramFn = bool(*)(int, void*, bool);
+	extern NET_ReceiveDatagramFn originalNET_ReceiveDatagram;
+
+	using NET_SendDatagramFn = unsigned int(*)(SOCKET, const char*, int, int);
+	extern NET_SendDatagramFn originalNET_SendDatagram;
+#pragma endregion
+
+#pragma region ConVar
+	bool ConVar_IsFlagSet(int** cvar, int flag);
+	bool ConCommand_IsFlagSet(int* cmd, int flag);
+#pragma endregion
+
+#pragma region WinAPI
+	BOOL WINAPI GetCursorPos(LPPOINT lpPoint);
+	BOOL WINAPI SetCursorPos(int X, int Y);
+	BOOL WINAPI ClipCursor(const RECT* lpRect);
+	BOOL WINAPI ShowCursor(BOOL bShow);
+
+	using GetCursorPosFn = BOOL(WINAPI*)(LPPOINT);
+	extern GetCursorPosFn originalGetCursorPos;
+
+	using SetCursorPosFn = BOOL(WINAPI*)(int, int);
+	extern SetCursorPosFn originalSetCursorPos;
+
+	using ClipCursorFn = BOOL(WINAPI*)(const RECT*);
+	extern ClipCursorFn originalClipCursor;
+
+	using ShowCursorFn = BOOL(WINAPI*)(BOOL);
+	extern ShowCursorFn originalShowCursor;
+#pragma endregion
+
+#pragma region Other
+	int MSG_EngineError(char* fmt, va_list args);
+
+	using MSG_EngineErrorFn = int(*)(char*, va_list);
+	extern MSG_EngineErrorFn originalMSG_EngineError;
+#pragma endregion
+
+	void InstallHooks();
+	void RemoveHooks();
+	void ToggleNetHooks();
+	void ToggleDevCommands();
+}
\ No newline at end of file
diff --git a/r5dev/include/input.h b/r5dev/include/input.h
index d686f3c7..7b9637ef 100644
--- a/r5dev/include/input.h
+++ b/r5dev/include/input.h
@@ -1,11 +1 @@
-#pragma once
-
-/////////////////////////////////////////////////////////////////////////////
-// Internals
-void InstallIPHooks();
-void RemoveIPHooks();
-
-/////////////////////////////////////////////////////////////////////////////
-// Globals
-extern BOOL g_bBlockInput;
-/////////////////////////////////////////////////////////////////////////////
+#pragma once
\ No newline at end of file
diff --git a/r5dev/include/patterns.h b/r5dev/include/patterns.h
index 567abe9b..e262cfd7 100644
--- a/r5dev/include/patterns.h
+++ b/r5dev/include/patterns.h
@@ -7,50 +7,50 @@ namespace
 
 #pragma region Console
 	/*0x140202090*/
-	FUNC_AT_ADDRESS(org_CommandExecute, void(*)(void*, const char*), r5_patterns.PatternSearch("48 89 5C 24 ? 57 48 83 EC 20 48 8D 0D ? ? ? ? 41 8B D8").GetPtr());
+	FUNC_AT_ADDRESS(addr_CommandExecute, void(*)(void*, const char*), r5_patterns.PatternSearch("48 89 5C 24 ? 57 48 83 EC 20 48 8D 0D ? ? ? ? 41 8B D8").GetPtr());
 
 	/*0x14046FE90*/
-	FUNC_AT_ADDRESS(org_ConVar_IsFlagSet, bool(*)(int**, int), r5_patterns.PatternSearch("48 8B 41 48 85 50 38").GetPtr());
+	FUNC_AT_ADDRESS(addr_ConVar_IsFlagSet, bool(*)(int**, int), r5_patterns.PatternSearch("48 8B 41 48 85 50 38").GetPtr());
 
 	/*0x14046F490*/
-	FUNC_AT_ADDRESS(org_ConCommand_IsFlagSet, bool(*)(int*, int), r5_patterns.PatternSearch("85 51 38 0F 95 C0 C3").GetPtr());
+	FUNC_AT_ADDRESS(addr_ConCommand_IsFlagSet, bool(*)(int*, int), r5_patterns.PatternSearch("85 51 38 0F 95 C0 C3").GetPtr());
 #pragma endregion
 
 #pragma region Squirrel
 	/*0x141057FD0*/
-	FUNC_AT_ADDRESS(org_SQVM_Print, void*, r5_patterns.PatternSearch("83 F8 01 48 8D 3D ? ? ? ?").OffsetSelf(0x3).FollowNearCallSelf(0x3, 0x7).GetPtr());
+	FUNC_AT_ADDRESS(addr_SQVM_Print, void*, r5_patterns.PatternSearch("83 F8 01 48 8D 3D ? ? ? ?").OffsetSelf(0x3).FollowNearCallSelf(0x3, 0x7).GetPtr());
 
 	//DWORD64 p_SQVM_LoadScript = FindPattern("r5apex.exe", (const unsigned char*)"\x48\x89\x5C\x24\x10\x48\x89\x74\x24\x18\x48\x89\x7C\x24\x20\x48\x89\x4C\x24\x08\x55\x41\x54\x41\x55\x41\x56\x41\x57\x48\x8D\x6C", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"); // For S0 and S1
 
 	/*0x141055630*/
 	// For anything S2 and above (current S8
-	FUNC_AT_ADDRESS(org_SQVM_LoadScript, bool(*)(void*, const char*, const char*, int), r5_patterns.PatternSearch("48 8B C4 48 89 48 08 55 41 56 48 8D 68").GetPtr());
+	FUNC_AT_ADDRESS(addr_SQVM_LoadScript, bool(*)(void*, const char*, const char*, int), r5_patterns.PatternSearch("48 8B C4 48 89 48 08 55 41 56 48 8D 68").GetPtr());
 
 	/*0x140C957E0*/
-	FUNC_AT_ADDRESS(org_SQVM_LoadRson, int(*)(const char*), r5_patterns.PatternSearch("4C 8B DC 49 89 5B 08 57 48 81 EC A0 00 00 00 33").GetPtr());
+	FUNC_AT_ADDRESS(addr_SQVM_LoadRson, int(*)(const char*), r5_patterns.PatternSearch("4C 8B DC 49 89 5B 08 57 48 81 EC A0 00 00 00 33").GetPtr());
 #pragma endregion
 
 #pragma region NetChannel
 	/*0x1402655F0*/
-	FUNC_AT_ADDRESS(org_NET_ReceiveDatagram, bool(*)(int, void*, bool), r5_patterns.PatternSearch("48 89 74 24 18 48 89 7C 24 20 55 41 54 41 55 41 56 41 57 48 8D AC 24 50 EB").GetPtr());
+	FUNC_AT_ADDRESS(addr_NET_ReceiveDatagram, bool(*)(int, void*, bool), r5_patterns.PatternSearch("48 89 74 24 18 48 89 7C 24 20 55 41 54 41 55 41 56 41 57 48 8D AC 24 50 EB").GetPtr());
 
 	/*0x1402662D0*/
-	FUNC_AT_ADDRESS(org_NET_SendDatagram, int(*)(SOCKET, const char*, int, int), r5_patterns.PatternSearch("48 89 5C 24 08 48 89 6C 24 10 48 89 74 24 18 57 41 56 41 57 48 81 EC ? 05 ? ?").GetPtr());
+	FUNC_AT_ADDRESS(addr_NET_SendDatagram, int(*)(SOCKET, const char*, int, int), r5_patterns.PatternSearch("48 89 5C 24 08 48 89 6C 24 10 48 89 74 24 18 57 41 56 41 57 48 81 EC ? 05 ? ?").GetPtr());
 #pragma endregion
 
 #pragma region CHLClient
 	/*0x1405C0740*/
-	FUNC_AT_ADDRESS(org_CHLClient_FrameStageNotify, void(*)(void* rcx, int curStage), r5_patterns.PatternSearch("48 83 EC 28 89 15 ?? ?? ?? ??").GetPtr());
+	FUNC_AT_ADDRESS(addr_CHLClient_FrameStageNotify, void(*)(void* rcx, int curStage), r5_patterns.PatternSearch("48 83 EC 28 89 15 ?? ?? ?? ??").GetPtr());
 #pragma endregion
 
 #pragma region CVEngineServer
 	/*0x140315CF0*/
-	FUNC_AT_ADDRESS(org_CVEngineServer_IsPersistenceDataAvailable, bool(*)(__int64, int), r5_patterns.PatternSearch("3B 15 ?? ?? ?? ?? 7D 33").GetPtr());
+	FUNC_AT_ADDRESS(addr_CVEngineServer_IsPersistenceDataAvailable, bool(*)(__int64, int), r5_patterns.PatternSearch("3B 15 ?? ?? ?? ?? 7D 33").GetPtr());
 #pragma endregion
 
 #pragma region Utility
 	/*0x140295600*/
-	FUNC_AT_ADDRESS(org_MSG_EngineError, int(*)(char*, va_list), r5_patterns.PatternSearch("48 89 5C 24 08 48 89 74 24 10 57 48 81 EC 30 08 00 00 48 8B DA").GetPtr());
+	FUNC_AT_ADDRESS(addr_MSG_EngineError, int(*)(char*, va_list), r5_patterns.PatternSearch("48 89 5C 24 08 48 89 74 24 10 57 48 81 EC 30 08 00 00 48 8B DA").GetPtr());
 #pragma endregion
 	// Un-used atm.
 	// DWORD64 p_KeyValues_FindKey = /*1404744E0*/ reinterpret_cast<DWORD64>(PatternScan("r5apex.exe", "40 56 57 41 57 48 81 EC ?? ?? ?? ?? 45"));
@@ -58,17 +58,17 @@ namespace
 	void PrintHAddress() // Test the sigscan results
 	{
 		std::cout << "+--------------------------------------------------------+" << std::endl;
-		PRINT_ADDRESS("CommandExecute", org_CommandExecute);
-		PRINT_ADDRESS("ConVar_IsFlagSet", org_ConVar_IsFlagSet);
-		PRINT_ADDRESS("ConCommand_IsFlagSet", org_ConCommand_IsFlagSet);
-		PRINT_ADDRESS("SQVM_Print", org_SQVM_Print);
-		PRINT_ADDRESS("SQVM_LoadScript", org_SQVM_LoadScript);
-		PRINT_ADDRESS("SQVM_LoadRson", org_SQVM_LoadRson);
-		PRINT_ADDRESS("NET_ReceiveDatagram", org_NET_ReceiveDatagram);
-		PRINT_ADDRESS("NET_SendDatagram ", org_NET_SendDatagram);
-		PRINT_ADDRESS("CHLClient::FrameStageNotify", org_CHLClient_FrameStageNotify);
-		PRINT_ADDRESS("CVEngineServer::IsPersistenceDataAvailable", org_CVEngineServer_IsPersistenceDataAvailable);
-		PRINT_ADDRESS("MSG_EngineError", org_MSG_EngineError);
+		PRINT_ADDRESS("CommandExecute", addr_CommandExecute);
+		PRINT_ADDRESS("ConVar_IsFlagSet", addr_ConVar_IsFlagSet);
+		PRINT_ADDRESS("ConCommand_IsFlagSet", addr_ConCommand_IsFlagSet);
+		PRINT_ADDRESS("SQVM_Print", addr_SQVM_Print);
+		PRINT_ADDRESS("SQVM_LoadScript", addr_SQVM_LoadScript);
+		PRINT_ADDRESS("SQVM_LoadRson", addr_SQVM_LoadRson);
+		PRINT_ADDRESS("NET_ReceiveDatagram", addr_NET_ReceiveDatagram);
+		PRINT_ADDRESS("NET_SendDatagram ", addr_NET_SendDatagram);
+		PRINT_ADDRESS("CHLClient::FrameStageNotify", addr_CHLClient_FrameStageNotify);
+		PRINT_ADDRESS("CVEngineServer::IsPersistenceDataAvailable", addr_CVEngineServer_IsPersistenceDataAvailable);
+		PRINT_ADDRESS("MSG_EngineError", addr_MSG_EngineError);
 		std::cout << "+--------------------------------------------------------+" << std::endl;
 		// TODO implement error handling when sigscan fails or result is 0
 	}
diff --git a/r5dev/include/pch.h b/r5dev/include/pch.h
index e4cb717f..37c8e86e 100644
--- a/r5dev/include/pch.h
+++ b/r5dev/include/pch.h
@@ -3,7 +3,7 @@
 
 #define WIN32_LEAN_AND_MEAN // Prevent winsock2 redefinition.
 #include <windows.h>
-#include <detours.h>
+#include <minhook.h>
 #include <thread>
 #include <fstream>
 #include <stdio.h>
@@ -19,8 +19,6 @@
 #include <Psapi.h>
 #include <vector>
 
-
-
 // Our headers
 
 #include "imgui.h"
@@ -33,6 +31,7 @@
 #include "json.hpp"
 
 #include "address.h"
+#include "enums.h"
 
 #define FUNC_AT_ADDRESS(name, funcbody, addr) \
    using _##name = funcbody; \
diff --git a/r5dev/r5dev.vcxproj b/r5dev/r5dev.vcxproj
index 1c771135..c87b1ab0 100644
--- a/r5dev/r5dev.vcxproj
+++ b/r5dev/r5dev.vcxproj
@@ -87,8 +87,8 @@
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
     <LinkIncremental>false</LinkIncremental>
-    <IncludePath>$(SolutionDir)external\detours\include;$(SolutionDir)external\imgui\include;$(SolutionDir)external\spdlog\include;$(SolutionDir)shared\include;$(SolutionDir)r5dev\include;$(IncludePath)</IncludePath>
-    <LibraryPath>$(SolutionDir)external\detours\libs;$(LibraryPath)</LibraryPath>
+    <IncludePath>$(SolutionDir)external\minhook\include;$(SolutionDir)external\imgui\include;$(SolutionDir)external\spdlog\include;$(SolutionDir)shared\include;$(SolutionDir)r5dev\include;$(IncludePath)</IncludePath>
+    <LibraryPath>$(SolutionDir)external\minhook\lib;$(LibraryPath)</LibraryPath>
   </PropertyGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
     <ClCompile>
@@ -165,6 +165,7 @@
       <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
       <EnableFiberSafeOptimizations>true</EnableFiberSafeOptimizations>
       <StringPooling>true</StringPooling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
     </ClCompile>
     <Link>
       <SubSystem>Windows</SubSystem>
@@ -173,16 +174,13 @@
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <EnableUAC>false</EnableUAC>
       <ModuleDefinitionFile>r5dev.def</ModuleDefinitionFile>
-      <AdditionalDependencies>detours.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>libMinHook.x64.lib;%(AdditionalDependencies)</AdditionalDependencies>
     </Link>
     <PostBuildEvent>
       <Command>del "$(TargetDir)\r5detours.dll" &amp;&amp; rename "$(TargetPath)" "r5detours.dll"</Command>
     </PostBuildEvent>
   </ItemDefinitionGroup>
   <ItemGroup>
-    <ClInclude Include="..\external\detours\include\detours.h" />
-    <ClInclude Include="..\external\detours\include\detver.h" />
-    <ClInclude Include="..\external\detours\include\syelog.h" />
     <ClInclude Include="..\external\imgui\include\imconfig.h" />
     <ClInclude Include="..\external\imgui\include\imgui.h" />
     <ClInclude Include="..\external\imgui\include\imgui_impl_dx11.h" />
@@ -191,6 +189,7 @@
     <ClInclude Include="..\external\imgui\include\imstb_rectpack.h" />
     <ClInclude Include="..\external\imgui\include\imstb_textedit.h" />
     <ClInclude Include="..\external\imgui\include\imstb_truetype.h" />
+    <ClInclude Include="..\external\minhook\include\MinHook.h" />
     <ClInclude Include="..\external\spdlog\include\async.h" />
     <ClInclude Include="..\external\spdlog\include\async_logger-inl.h" />
     <ClInclude Include="..\external\spdlog\include\async_logger.h" />
@@ -345,10 +344,14 @@
       <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Use</PrecompiledHeader>
       <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch.h</PrecompiledHeaderFile>
     </ClCompile>
-    <ClCompile Include="src\hooks.cpp">
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Use</PrecompiledHeader>
-      <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch.h</PrecompiledHeaderFile>
-    </ClCompile>
+    <ClCompile Include="src\hooks\chlclient.cpp" />
+    <ClCompile Include="src\hooks\cvengineserver.cpp" />
+    <ClCompile Include="src\hooks\hooks.cpp" />
+    <ClCompile Include="src\hooks\iconvar.cpp" />
+    <ClCompile Include="src\hooks\msgbox.cpp" />
+    <ClCompile Include="src\hooks\net.cpp" />
+    <ClCompile Include="src\hooks\sqvm.cpp" />
+    <ClCompile Include="src\hooks\winapi.cpp" />
     <ClCompile Include="src\id3dx.cpp">
       <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Use</PrecompiledHeader>
       <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">pch.h</PrecompiledHeaderFile>
diff --git a/r5dev/r5dev.vcxproj.filters b/r5dev/r5dev.vcxproj.filters
index 89f3a4a9..34b18dc7 100644
--- a/r5dev/r5dev.vcxproj.filters
+++ b/r5dev/r5dev.vcxproj.filters
@@ -1,9 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup>
-    <Filter Include="Header Files">
-      <UniqueIdentifier>{a80939e5-3b3c-4873-885e-834e95d68d34}</UniqueIdentifier>
-    </Filter>
     <Filter Include="core">
       <UniqueIdentifier>{927ea852-3616-4fc4-8b32-781f65853a6b}</UniqueIdentifier>
     </Filter>
@@ -16,25 +13,15 @@
     <Filter Include="shared\include">
       <UniqueIdentifier>{633d6e7a-c709-4d64-a134-b383d43c8c8e}</UniqueIdentifier>
     </Filter>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
     <Filter Include="shared\libraries">
       <UniqueIdentifier>{7cef4f92-94d9-43af-bea5-c6963d68fff2}</UniqueIdentifier>
     </Filter>
-    <Filter Include="shared\libraries\detours">
-      <UniqueIdentifier>{584562a8-0382-488c-909c-67bbb1d1af3c}</UniqueIdentifier>
-    </Filter>
     <Filter Include="shared\libraries\imgui">
       <UniqueIdentifier>{c72b9789-72e9-4657-8a42-8712aaf8690e}</UniqueIdentifier>
     </Filter>
     <Filter Include="shared\libraries\spdlog">
       <UniqueIdentifier>{757af774-e575-4623-8582-71efb0ae53a4}</UniqueIdentifier>
     </Filter>
-    <Filter Include="shared\libraries\detours\include">
-      <UniqueIdentifier>{3fa7f9a9-dc07-4d42-9172-0944829c010f}</UniqueIdentifier>
-    </Filter>
     <Filter Include="shared\libraries\imgui\include">
       <UniqueIdentifier>{c18fb898-adc3-4aa8-902c-4777bbc76e5b}</UniqueIdentifier>
     </Filter>
@@ -59,32 +46,62 @@
     <Filter Include="core\resource">
       <UniqueIdentifier>{30005d10-4213-441c-b18b-4dd47fcb8812}</UniqueIdentifier>
     </Filter>
+    <Filter Include="shared\libraries\minhook">
+      <UniqueIdentifier>{e901ef66-ddeb-4aff-9d7e-786d74a791e9}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="shared\libraries\minhook\include">
+      <UniqueIdentifier>{da82c6eb-abba-4b52-84bf-9f3758a169bf}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="hooks">
+      <UniqueIdentifier>{6a6d7e33-2ce0-4b53-bcf6-41dc6dacdc5f}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="hooks\src">
+      <UniqueIdentifier>{e449786f-692c-4d6c-a292-b0720bf9e2a9}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="hooks\src\winapi">
+      <UniqueIdentifier>{46b49d69-ea42-467c-86d8-00611f2718ff}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="hooks\src\other">
+      <UniqueIdentifier>{2ec9179b-7320-47da-b170-f021d0279310}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="hooks\src\squirrel">
+      <UniqueIdentifier>{83391c47-4a5b-4231-a9ef-29e119c5bb69}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="hooks\src\netchannel">
+      <UniqueIdentifier>{c27e3539-0070-40fa-b262-0ecd39f47919}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="hooks\src\iconvar">
+      <UniqueIdentifier>{afb847fc-853f-4e6f-bde6-91bf345369b4}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="hooks\src\cvengineserver">
+      <UniqueIdentifier>{9f8f15a7-6e69-4a79-b644-a92ad815c600}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="hooks\src\chlclient">
+      <UniqueIdentifier>{25c5fe7f-23c0-4d44-b92d-ea4b127eec05}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="hooks\include">
+      <UniqueIdentifier>{0420f99f-468e-4ba5-abe3-960cc332b636}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="gui">
+      <UniqueIdentifier>{a40dcf17-855b-4965-b58d-6c7d24edc627}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="gui\src">
+      <UniqueIdentifier>{03d79a58-4706-4ee0-b0ea-6251a2fafada}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="gui\include">
+      <UniqueIdentifier>{89bf5311-5686-4077-9b79-c6306dc1bd91}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="r5-sdk">
+      <UniqueIdentifier>{3a4ca756-24d2-47e8-af7f-0e8a75933c4b}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="r5-sdk\src">
+      <UniqueIdentifier>{58dbc5f6-cf3c-4d71-80c8-caefffb39beb}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="r5-sdk\include">
+      <UniqueIdentifier>{0136e8e8-91ef-45c1-8661-476b5c20fc48}</UniqueIdentifier>
+    </Filter>
   </ItemGroup>
   <ItemGroup>
-    <ClCompile Include="src\console.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="src\hooks.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="src\opcptc.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="src\id3dx.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="src\overlay.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="src\input.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="src\serverlisting.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="src\gameclasses.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
     <ClCompile Include="src\dllmain.cpp">
       <Filter>core</Filter>
     </ClCompile>
@@ -115,35 +132,53 @@
     <ClCompile Include="..\shared\utility.cpp">
       <Filter>shared</Filter>
     </ClCompile>
+    <ClCompile Include="src\hooks\chlclient.cpp">
+      <Filter>hooks\src\chlclient</Filter>
+    </ClCompile>
+    <ClCompile Include="src\hooks\sqvm.cpp">
+      <Filter>hooks\src\squirrel</Filter>
+    </ClCompile>
+    <ClCompile Include="src\hooks\cvengineserver.cpp">
+      <Filter>hooks\src\cvengineserver</Filter>
+    </ClCompile>
+    <ClCompile Include="src\hooks\msgbox.cpp">
+      <Filter>hooks\src\other</Filter>
+    </ClCompile>
+    <ClCompile Include="src\hooks\net.cpp">
+      <Filter>hooks\src\netchannel</Filter>
+    </ClCompile>
+    <ClCompile Include="src\hooks\iconvar.cpp">
+      <Filter>hooks\src\iconvar</Filter>
+    </ClCompile>
+    <ClCompile Include="src\hooks\winapi.cpp">
+      <Filter>hooks\src\winapi</Filter>
+    </ClCompile>
+    <ClCompile Include="src\hooks\hooks.cpp">
+      <Filter>hooks\src</Filter>
+    </ClCompile>
+    <ClCompile Include="src\overlay.cpp">
+      <Filter>gui\src</Filter>
+    </ClCompile>
+    <ClCompile Include="src\serverlisting.cpp">
+      <Filter>gui\src</Filter>
+    </ClCompile>
+    <ClCompile Include="src\id3dx.cpp">
+      <Filter>gui\src</Filter>
+    </ClCompile>
+    <ClCompile Include="src\gameclasses.cpp">
+      <Filter>r5-sdk\src</Filter>
+    </ClCompile>
+    <ClCompile Include="src\console.cpp">
+      <Filter>core</Filter>
+    </ClCompile>
+    <ClCompile Include="src\input.cpp">
+      <Filter>core</Filter>
+    </ClCompile>
+    <ClCompile Include="src\opcptc.cpp">
+      <Filter>r5-sdk\src</Filter>
+    </ClCompile>
   </ItemGroup>
   <ItemGroup>
-    <ClInclude Include="include\console.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="include\hooks.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="include\opcptc.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="include\patterns.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="include\r5dev.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="include\structs.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\external\detours\include\detver.h">
-      <Filter>shared\libraries\detours\include</Filter>
-    </ClInclude>
-    <ClInclude Include="..\external\detours\include\syelog.h">
-      <Filter>shared\libraries\detours\include</Filter>
-    </ClInclude>
-    <ClInclude Include="..\external\detours\include\detours.h">
-      <Filter>shared\libraries\detours\include</Filter>
-    </ClInclude>
     <ClInclude Include="..\external\imgui\include\imgui_impl_win32.h">
       <Filter>shared\libraries\imgui\include</Filter>
     </ClInclude>
@@ -168,18 +203,6 @@
     <ClInclude Include="..\external\imgui\include\imgui_impl_dx11.h">
       <Filter>shared\libraries\imgui\include</Filter>
     </ClInclude>
-    <ClInclude Include="include\id3dx.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="include\overlay.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="include\enums.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="include\input.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
     <ClInclude Include="..\external\spdlog\include\async_logger-inl.h">
       <Filter>shared\libraries\spdlog\include</Filter>
     </ClInclude>
@@ -462,12 +485,6 @@
     <ClInclude Include="..\external\spdlog\include\sinks\qt_sinks.h">
       <Filter>shared\libraries\spdlog\include\sinks</Filter>
     </ClInclude>
-    <ClInclude Include="include\gameclasses.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="include\serverlisting.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
     <ClInclude Include="..\shared\include\address.h">
       <Filter>shared\include</Filter>
     </ClInclude>
@@ -483,6 +500,45 @@
     <ClInclude Include="include\pch.h">
       <Filter>core\include</Filter>
     </ClInclude>
+    <ClInclude Include="..\external\minhook\include\MinHook.h">
+      <Filter>shared\libraries\minhook\include</Filter>
+    </ClInclude>
+    <ClInclude Include="include\hooks.h">
+      <Filter>hooks\include</Filter>
+    </ClInclude>
+    <ClInclude Include="include\id3dx.h">
+      <Filter>gui\include</Filter>
+    </ClInclude>
+    <ClInclude Include="include\overlay.h">
+      <Filter>gui\include</Filter>
+    </ClInclude>
+    <ClInclude Include="include\serverlisting.h">
+      <Filter>gui\include</Filter>
+    </ClInclude>
+    <ClInclude Include="include\gameclasses.h">
+      <Filter>r5-sdk\include</Filter>
+    </ClInclude>
+    <ClInclude Include="include\r5dev.h">
+      <Filter>core\include</Filter>
+    </ClInclude>
+    <ClInclude Include="include\console.h">
+      <Filter>core</Filter>
+    </ClInclude>
+    <ClInclude Include="include\patterns.h">
+      <Filter>r5-sdk\include</Filter>
+    </ClInclude>
+    <ClInclude Include="include\structs.h">
+      <Filter>r5-sdk\include</Filter>
+    </ClInclude>
+    <ClInclude Include="include\opcptc.h">
+      <Filter>r5-sdk\include</Filter>
+    </ClInclude>
+    <ClInclude Include="include\enums.h">
+      <Filter>r5-sdk\include</Filter>
+    </ClInclude>
+    <ClInclude Include="include\input.h">
+      <Filter>core\include</Filter>
+    </ClInclude>
   </ItemGroup>
   <ItemGroup>
     <None Include="r5dev.def">
diff --git a/r5dev/src/console.cpp b/r5dev/src/console.cpp
index c5ab1a52..7efe42c6 100644
--- a/r5dev/src/console.cpp
+++ b/r5dev/src/console.cpp
@@ -54,62 +54,13 @@ void SetupConsole()
 	}
 }
 
-//#############################################################################
-// CONSOLE HOOKS
-//#############################################################################
-
-bool HConVar_IsFlagSet(int** cvar, int flag)
-{
-	int real_flags = *(*(cvar + (72 / (sizeof(void*)))) + (56 / sizeof(int)));
-	if (g_bDebugConsole)
-	{
-		printf("--------------------------------------------------\n");
-		printf(" Flaged: %08X\n", real_flags);
-	}
-	// Mask off FCVAR_CHEATS and FCVAR_DEVELOPMENTONLY
-	real_flags &= 0xFFFFBFFD;
-	if (g_bDebugConsole)
-	{
-		printf(" Masked: %08X\n", real_flags);
-		printf(" Verify: %08X\n", flag);
-		printf("--------------------------------------------------\n");
-	}
-	if (flag & 0x80000) { return true; }
-
-	if (!g_bReturnAllFalse) { return (real_flags & flag) != 0; }
-	else { return false; }
-}
-
-bool HConCommand_IsFlagSet(int* cmd, int flag)
-{
-	int real_flags = *((cmd + (56 / sizeof(int))));
-	if (g_bDebugConsole)
-	{
-		printf("--------------------------------------------------\n");
-		printf(" Flaged: %08X\n", real_flags);
-	}
-	// Mask off FCVAR_CHEATS and FCVAR_DEVELOPMENTONLY
-	real_flags &= 0xFFFFBFFD;
-	if (g_bDebugConsole)
-	{
-		printf(" Masked: %08X\n", real_flags);
-		printf(" Verify: %08X\n", flag);
-		printf("--------------------------------------------------\n");
-	}
-	if (flag & 0x80000) { return true; }
-
-	if (!g_bReturnAllFalse) { return (real_flags & flag) != 0; }
-	else { return false; }
-}
-
 //#############################################################################
 // WORKER THREAD
 //#############################################################################
 
 DWORD __stdcall ProcessConsoleWorker(LPVOID)
 {
-	// Loop forever
-	while (true)
+	while (true) // Loop forever
 	{
 		std::string sCommand;
 
@@ -120,8 +71,8 @@ DWORD __stdcall ProcessConsoleWorker(LPVOID)
 
 		///////////////////////////////////////////////////////////////////////
 		// Engine toggles
-		if (sCommand == "toggle net") { ToggleNetHooks(); continue; }
-		if (sCommand == "toggle dev") { ToggleDevCommands(); continue; }
+		if (sCommand == "toggle net") { Hooks::ToggleNetHooks(); continue; }
+		if (sCommand == "toggle dev") { Hooks::ToggleDevCommands(); continue; }
 		if (sCommand == "toggle fal") { g_bReturnAllFalse = !g_bReturnAllFalse; continue; }
 		///////////////////////////////////////////////////////////////////////
 		// Debug toggles
@@ -130,12 +81,12 @@ DWORD __stdcall ProcessConsoleWorker(LPVOID)
 		if (sCommand == "console test") { g_bDebugConsole = !g_bDebugConsole; continue; }
 		///////////////////////////////////////////////////////////////////////
 		// Exec toggles
-		if (sCommand == "1") { ToggleDevCommands(); org_CommandExecute(NULL, "exec autoexec_dev"); }
+		if (sCommand == "1") { Hooks::ToggleDevCommands(); addr_CommandExecute(NULL, "exec autoexec_dev"); }
 		if (sCommand == "2") { g_bDebugLoading = !g_bDebugLoading; continue; }
 
 		///////////////////////////////////////////////////////////////////////
 		// Execute the command in the r5 SQVM
-		org_CommandExecute(NULL, sCommand.c_str());
+		addr_CommandExecute(NULL, sCommand.c_str());
 		sCommand.clear();
 
 		///////////////////////////////////////////////////////////////////////
@@ -144,66 +95,4 @@ DWORD __stdcall ProcessConsoleWorker(LPVOID)
 	}
 
 	return 0;
-}
-
-//#############################################################################
-// MANAGEMENT
-//#############################################################################
-
-void RemoveCMHooks()
-{
-	///////////////////////////////////////////////////////////////////////////
-	// Begin the detour transaction, to unhook the the process
-	DetourTransactionBegin();
-	DetourUpdateThread(GetCurrentThread());
-
-	///////////////////////////////////////////////////////////////////////////
-	// Unhook Console functions
-	DetourDetach((LPVOID*)&org_ConVar_IsFlagSet, &HConVar_IsFlagSet);
-	DetourDetach((LPVOID*)&org_ConCommand_IsFlagSet, &HConCommand_IsFlagSet);
-
-	///////////////////////////////////////////////////////////////////////////
-	// Commit the transaction
-	DetourTransactionCommit();
-}
-
-//#############################################################################
-// TOGGLES
-//#############################################################################
-
-void ToggleDevCommands()
-{
-	static bool g_dev = false;
-
-	DetourTransactionBegin();
-	DetourUpdateThread(GetCurrentThread());
-
-	if (!g_dev)
-	{
-		DetourAttach((LPVOID*)&org_ConVar_IsFlagSet, &HConVar_IsFlagSet);
-		DetourAttach((LPVOID*)&org_ConCommand_IsFlagSet, &HConCommand_IsFlagSet);
-		printf("\n");
-		printf("+--------------------------------------------------------+\n");
-		printf("|>>>>>>>>>>>>>| DEVONLY COMMANDS ACTIVATED |<<<<<<<<<<<<<|\n");
-		printf("+--------------------------------------------------------+\n");
-		printf("\n");
-
-	}
-	else
-	{
-		DetourDetach((LPVOID*)&org_ConVar_IsFlagSet, &HConVar_IsFlagSet);
-		DetourDetach((LPVOID*)&org_ConCommand_IsFlagSet, &HConCommand_IsFlagSet);
-		printf("\n");
-		printf("+--------------------------------------------------------+\n");
-		printf("|>>>>>>>>>>>>| DEVONLY COMMANDS DEACTIVATED |<<<<<<<<<<<<|\n");
-		printf("+--------------------------------------------------------+\n");
-		printf("\n");
-	}
-
-	if (DetourTransactionCommit() != NO_ERROR)
-	{
-		TerminateProcess(GetCurrentProcess(), 0xBAD0C0DE);
-	}
-
-	g_dev = !g_dev;
-}
+}
\ No newline at end of file
diff --git a/r5dev/src/dllmain.cpp b/r5dev/src/dllmain.cpp
index 4c2f5c93..c996b69b 100644
--- a/r5dev/src/dllmain.cpp
+++ b/r5dev/src/dllmain.cpp
@@ -5,7 +5,6 @@
 #include "hooks.h"
 #include "opcptc.h"
 #include "console.h"
-#include "gameclasses.h"
 
 //#############################################################################
 // INITIALIZATION
@@ -14,9 +13,7 @@
 void InitializeR5Dev()
 {
     SetupConsole();
-    InstallENHooks();
-    InstallIPHooks();
-    InstallDXHooks();
+    Hooks::InstallHooks();
     InstallOpcodes();
     SetupDXSwapChain();
     printf("+-----------------------------------------------------------------------------+\n");
@@ -27,10 +24,8 @@ void InitializeR5Dev()
 
 void TerminateR5Dev()
 {
-    RemoveCMHooks();
-    RemoveENHooks();
-    RemoveIPHooks();
     RemoveDXHooks();
+    Hooks::RemoveHooks();
     FreeConsole();
 }
 
@@ -38,7 +33,7 @@ void TerminateR5Dev()
 // ENTRYPOINT
 //#############################################################################
 
-BOOL APIENTRY DllMain(HMODULE hModule, DWORD  dwReason, LPVOID lpReserved)
+BOOL APIENTRY DllMain(HMODULE hModule, DWORD dwReason, LPVOID lpReserved)
 {
 
     switch (dwReason)
diff --git a/r5dev/src/hooks.cpp b/r5dev/src/hooks.cpp
deleted file mode 100644
index d1bc3689..00000000
--- a/r5dev/src/hooks.cpp
+++ /dev/null
@@ -1,289 +0,0 @@
-#include "pch.h"
-#include "patterns.h"
-#include "structs.h"
-#include "overlay.h"
-#include "hooks.h"
-#include "gameclasses.h"
-
-//#################################################################################
-// NETCHANNEL HOOKS
-//#################################################################################
-
-bool HNET_ReceiveDatagram(int sock, void* inpacket, bool raw)
-{
-	bool result = org_NET_ReceiveDatagram(sock, inpacket, raw);
-	if (result)
-	{
-		int i = NULL;
-		netpacket_t* pkt = (netpacket_t*)inpacket;
-
-		///////////////////////////////////////////////////////////////////////////
-		// Log received packet data
-		HexDump("[+] NET_ReceiveDatagram", 0, &pkt->data[i], pkt->wiresize);
-	}
-
-	return result;
-}
-
-unsigned int HNET_SendDatagram(SOCKET s, const char* buf, int len, int flags)
-{
-	unsigned int result = org_NET_SendDatagram(s, buf, len, flags);
-	if (result)
-	{
-		///////////////////////////////////////////////////////////////////////////
-		// Log transmitted packet data
-		HexDump("[+] NET_SendDatagram",  0, buf, len);
-	}
-
-	return result;
-}
-
-//#################################################################################
-// CHLCLIENT HOOKS
-//#################################################################################
-
-void __fastcall HCHLClient__FrameStageNotify(CHLClient* rcx, ClientFrameStage_t curStage) /* __fastcall so we can make sure first argument will be RCX and second RDX. */
-{
-	switch (curStage)
-	{
-	case FRAME_START: // FrameStageNotify gets called every frame by CEngine::Frame with the stage being FRAME_START. We can use this to check/set global variables.
-	{
-		if (!GameGlobals::IsInitialized)
-			GameGlobals::InitGameGlobals();
-
-		break;
-	}
-	default:
-		break;
-	}
-
-	org_CHLClient_FrameStageNotify(rcx, curStage);
-}
-
-//#################################################################################
-// SQUIRRELVM HOOKS
-//#################################################################################
-
-void* HSQVM_Print(void* sqvm, char* fmt, ...)
-{
-	char buf[1024];
-	va_list args;
-	va_start(args, fmt);
-	vprintf(fmt, args);
-	vsnprintf(buf, IM_ARRAYSIZE(buf), fmt, args);
-	buf[IM_ARRAYSIZE(buf) - 1] = 0;
-	va_end(args);
-	Items.push_back(Strdup(buf));
-	return NULL;
-}
-
-__int64 HSQVM_LoadRson(const char* rson_name)
-{
-	char filepath[MAX_PATH] = { 0 };
-	sprintf_s(filepath, MAX_PATH, "platform\\%s", rson_name);
-
-	///////////////////////////////////////////////////////////////////////////////
-	// Flip forward slashes in filepath to windows-style backslash
-	for (int i = 0; i < strlen(filepath); i++)
-	{
-		if (filepath[i] == '/')
-		{
-			filepath[i] = '\\';
-		}
-	}
-
-	///////////////////////////////////////////////////////////////////////////////
-	// Returns the new path if the rson exists on the disk
-	if (FileExists(filepath) && org_SQVM_LoadRson(rson_name))
-	{
-		printf("\n");
-		printf("##################################################\n");
-		printf("] '%s'\n", filepath);
-		printf("##################################################\n");
-		printf("\n");
-		return org_SQVM_LoadRson(filepath);
-	}
-
-	printf("\n");
-	printf("##################################################\n");
-	printf("] '%s'\n", rson_name);
-	printf("##################################################\n");
-	printf("\n");
-	return org_SQVM_LoadRson(rson_name);
-}
-
-bool HSQVM_LoadScript(void* sqvm, const char* script_path, const char* script_name, int flag)
-{
-	char filepath[MAX_PATH] = { 0 };
-	sprintf_s(filepath, MAX_PATH, "platform\\%s", script_path);
-
-	///////////////////////////////////////////////////////////////////////////////
-	// Flip forward slashes in filepath to windows-style backslash
-	for (int i = 0; i < strlen(filepath); i++)
-	{
-		if (filepath[i] == '/')
-		{
-			filepath[i] = '\\';
-		}
-	}
-	if (g_bDebugLoading)
-	{
-		printf(" [+] Loading SQVM Script '%s' ...\n", filepath);
-	}
-	///////////////////////////////////////////////////////////////////////////////
-	// Returns true if the script exists on the disk
-	if (FileExists(filepath) && org_SQVM_LoadScript(sqvm, filepath, script_name, flag))
-	{
-		return true;
-	}
-	if (g_bDebugLoading)
-	{
-		printf(" [!] FAILED. Try SP / VPK for '%s'\n", filepath);
-	}
-	return org_SQVM_LoadScript(sqvm, script_path, script_name, flag);
-}
-
-//#################################################################################
-// UTILITY HOOKS
-//#################################################################################
-
-int HMSG_EngineError(char* fmt, va_list args)
-{
-	printf("\nENGINE ERROR #####################################\n");
-	vprintf(fmt, args);
-	return org_MSG_EngineError(fmt, args);
-}
-
-// TODO: turn this into a playerstruct constructor if it ever becomes necessary
-bool HCVEngineServer_IsPersistenceDataAvailable(__int64 thisptr, int client)
-{
-	static bool isPersistenceVarSet[256];
-
-	// TODO: Maybe not hardcode
-	std::uintptr_t playerStructBase = 0x16073B200;
-	std::uintptr_t playerStructSize = 0x4A4C0;
-	std::uintptr_t persistenceVar = 0x5BC;
-
-	std::uintptr_t targetPlayerStruct = playerStructBase + client * playerStructSize;
-
-	*(char*)(targetPlayerStruct + persistenceVar) = (char)0x5;
-
-	if (!isPersistenceVarSet[client])
-	{
-		printf("\n");
-		printf("##################################################\n");
-		printf("] SETTING PERSISTENCE VAR FOR CLIENT #%d\n", client);
-		printf("##################################################\n");
-		printf("\n");
-		isPersistenceVarSet[client] = true;
-	}
-
-	return org_CVEngineServer_IsPersistenceDataAvailable(thisptr, client);
-}
-
-//#################################################################################
-// MANAGEMENT
-//#################################################################################
-
-void InstallENHooks()
-{
-	///////////////////////////////////////////////////////////////////////////////
-	// Begin the detour transaction
-	DetourTransactionBegin();
-	DetourUpdateThread(GetCurrentThread());
-
-	///////////////////////////////////////////////////////////////////////////////
-	// Hook Squirrel functions
-	DetourAttach((LPVOID*)&org_SQVM_Print, &HSQVM_Print);
-	DetourAttach((LPVOID*)&org_SQVM_LoadRson, &HSQVM_LoadRson);
-	DetourAttach((LPVOID*)&org_SQVM_LoadScript, &HSQVM_LoadScript);
-
-	///////////////////////////////////////////////////////////////////////////////
-	// Hook Game Functions
-	DetourAttach((LPVOID*)&org_CHLClient_FrameStageNotify, &HCHLClient__FrameStageNotify);
-
-	///////////////////////////////////////////////////////////////////////////////
-	// Hook Utility functions
-	DetourAttach((LPVOID*)&org_MSG_EngineError, &HMSG_EngineError);
-	DetourAttach((LPVOID*)&org_CVEngineServer_IsPersistenceDataAvailable, &HCVEngineServer_IsPersistenceDataAvailable);
-
-	///////////////////////////////////////////////////////////////////////////////
-	// Commit the transaction
-	if (DetourTransactionCommit() != NO_ERROR)
-	{
-		// Failed to hook into the process, terminate
-		TerminateProcess(GetCurrentProcess(), 0xBAD0C0DE);
-	}
-}
-
-void RemoveENHooks()
-{
-	///////////////////////////////////////////////////////////////////////////////
-	// Begin the detour transaction, to unhook the the process
-	DetourTransactionBegin();
-	DetourUpdateThread(GetCurrentThread());
-
-	///////////////////////////////////////////////////////////////////////////////
-	// Unhook Squirrel functions
-	DetourDetach((LPVOID*)&org_SQVM_Print, &HSQVM_Print);
-	DetourDetach((LPVOID*)&org_SQVM_LoadRson, &HSQVM_LoadRson);
-	DetourDetach((LPVOID*)&org_SQVM_LoadScript, &HSQVM_LoadScript);
-
-	///////////////////////////////////////////////////////////////////////////////
-	// Unhook Game Functions
-	DetourDetach((LPVOID*)&org_CHLClient_FrameStageNotify, &HCHLClient__FrameStageNotify);
-
-	///////////////////////////////////////////////////////////////////////////////
-	// Unhook Netchan functions
-	DetourDetach((LPVOID*)&org_NET_SendDatagram, &HNET_SendDatagram);
-	DetourDetach((LPVOID*)&org_NET_ReceiveDatagram, &HNET_ReceiveDatagram);
-
-	///////////////////////////////////////////////////////////////////////////////
-	// Unhook Utility functions
-	DetourDetach((LPVOID*)&org_MSG_EngineError, &HMSG_EngineError);
-	DetourDetach((LPVOID*)&org_CVEngineServer_IsPersistenceDataAvailable, &HCVEngineServer_IsPersistenceDataAvailable);
-
-	///////////////////////////////////////////////////////////////////////////////
-	// Commit the transaction
-	DetourTransactionCommit();
-}
-
-//#################################################################################
-// TOGGLES
-//#################################################################################
-
-void ToggleNetHooks()
-{
-	static bool g_net = false;
-
-	DetourTransactionBegin();
-	DetourUpdateThread(GetCurrentThread());
-
-	if (!g_net)
-	{
-		DetourAttach((LPVOID*)&org_NET_SendDatagram, &HNET_SendDatagram);
-		DetourAttach((LPVOID*)&org_NET_ReceiveDatagram, &HNET_ReceiveDatagram);
-		printf("\n");
-		printf("+--------------------------------------------------------+\n");
-		printf("|>>>>>>>>>>>>>| NETCHANNEL TRACE ACTIVATED |<<<<<<<<<<<<<|\n");
-		printf("+--------------------------------------------------------+\n");
-		printf("\n");
-	}
-	else
-	{
-		DetourDetach((LPVOID*)&org_NET_SendDatagram, &HNET_SendDatagram);
-		DetourDetach((LPVOID*)&org_NET_ReceiveDatagram, &HNET_ReceiveDatagram);
-		printf("\n");
-		printf("+--------------------------------------------------------+\n");
-		printf("|>>>>>>>>>>>>| NETCHANNEL TRACE DEACTIVATED |<<<<<<<<<<<<|\n");
-		printf("+--------------------------------------------------------+\n");
-		printf("\n");
-	}
-
-	if (DetourTransactionCommit() != NO_ERROR)
-	{
-		TerminateProcess(GetCurrentProcess(), 0xBAD0C0DE);
-	}
-
-	g_net = !g_net;
-}
diff --git a/r5dev/src/hooks/chlclient.cpp b/r5dev/src/hooks/chlclient.cpp
new file mode 100644
index 00000000..4ae9839b
--- /dev/null
+++ b/r5dev/src/hooks/chlclient.cpp
@@ -0,0 +1,25 @@
+#include "pch.h"
+#include "hooks.h"
+
+namespace Hooks
+{
+	FrameStageNotifyFn originalFrameStageNotify = nullptr;
+}
+
+void __fastcall Hooks::FrameStageNotify(CHLClient* rcx, ClientFrameStage_t curStage)
+{
+	switch (curStage)
+	{
+	case FRAME_START: // FrameStageNotify gets called every frame by CEngine::Frame with the stage being FRAME_START. We can use this to check/set global variables.
+	{
+		if (!GameGlobals::IsInitialized)
+			GameGlobals::InitGameGlobals();
+
+		break;
+	}
+	default:
+		break;
+	}
+
+	originalFrameStageNotify(rcx, curStage);
+}
\ No newline at end of file
diff --git a/r5dev/src/hooks/cvengineserver.cpp b/r5dev/src/hooks/cvengineserver.cpp
new file mode 100644
index 00000000..0c7cad18
--- /dev/null
+++ b/r5dev/src/hooks/cvengineserver.cpp
@@ -0,0 +1,34 @@
+#include "pch.h"
+#include "hooks.h"
+
+namespace Hooks
+{
+	IsPersistenceDataAvailableFn originalIsPersistenceDataAvailable = nullptr;
+}
+
+// TODO: turn this into a playerstruct constructor if it ever becomes necessary
+bool Hooks::IsPersistenceDataAvailable(__int64 thisptr, int client)
+{
+	static bool isPersistenceVarSet[256];
+
+	// TODO: Maybe not hardcode
+	std::uintptr_t playerStructBase = 0x16073B200;
+	std::uintptr_t playerStructSize = 0x4A4C0;
+	std::uintptr_t persistenceVar = 0x5BC;
+
+	std::uintptr_t targetPlayerStruct = playerStructBase + client * playerStructSize;
+
+	*(char*)(targetPlayerStruct + persistenceVar) = (char)0x5;
+
+	if (!isPersistenceVarSet[client])
+	{
+		printf("\n");
+		printf("##################################################\n");
+		printf("] SETTING PERSISTENCE VAR FOR CLIENT #%d\n", client);
+		printf("##################################################\n");
+		printf("\n");
+		isPersistenceVarSet[client] = true;
+	}
+
+	return originalIsPersistenceDataAvailable(thisptr, client);
+}
\ No newline at end of file
diff --git a/r5dev/src/hooks/hooks.cpp b/r5dev/src/hooks/hooks.cpp
new file mode 100644
index 00000000..054083b8
--- /dev/null
+++ b/r5dev/src/hooks/hooks.cpp
@@ -0,0 +1,173 @@
+#include "pch.h"
+#include "hooks.h"
+
+bool g_bBlockInput = false;
+
+void Hooks::InstallHooks()
+{
+	///////////////////////////////////////////////////////////////////////////////
+	// Initialize Minhook
+	MH_Initialize();
+
+	///////////////////////////////////////////////////////////////////////////////
+	// Hook Squirrel functions
+	MH_CreateHook(addr_SQVM_Print, &Hooks::SQVM_Print, NULL);
+	MH_CreateHook(addr_SQVM_LoadRson, &Hooks::SQVM_LoadRson, reinterpret_cast<void**>(&originalSQVM_LoadRson));
+	MH_CreateHook(addr_SQVM_LoadScript, &Hooks::SQVM_LoadScript, reinterpret_cast<void**>(&originalSQVM_LoadScript));
+
+	///////////////////////////////////////////////////////////////////////////////
+	// Hook Game Functions
+	MH_CreateHook(addr_CHLClient_FrameStageNotify, &Hooks::FrameStageNotify, reinterpret_cast<void**>(&originalFrameStageNotify));
+	MH_CreateHook(addr_CVEngineServer_IsPersistenceDataAvailable, &Hooks::IsPersistenceDataAvailable, reinterpret_cast<void**>(&originalIsPersistenceDataAvailable));
+
+	///////////////////////////////////////////////////////////////////////////////
+	// Hook Netchan functions
+	MH_CreateHook(addr_NET_ReceiveDatagram, &Hooks::NET_ReceiveDatagram, reinterpret_cast<void**>(&originalNET_ReceiveDatagram));
+	MH_CreateHook(addr_NET_SendDatagram, &Hooks::NET_SendDatagram, reinterpret_cast<void**>(&originalNET_SendDatagram));
+
+	///////////////////////////////////////////////////////////////////////////////
+	// Hook ConVar | ConCommand functions.
+	MH_CreateHook(addr_ConVar_IsFlagSet, &Hooks::ConVar_IsFlagSet, NULL);
+	MH_CreateHook(addr_ConCommand_IsFlagSet, &Hooks::ConCommand_IsFlagSet, NULL);
+
+	///////////////////////////////////////////////////////////////////////////////
+	// Hook WinAPI
+	HMODULE user32dll = GetModuleHandleA("user32.dll");
+	void* SetCursorPosPtr = GetProcAddress(user32dll, "SetCursorPos");
+	void* ClipCursorPtr = GetProcAddress(user32dll, "ClipCursor");
+	void* GetCursorPosPtr = GetProcAddress(user32dll, "GetCursorPos");
+	void* ShowCursorPtr = GetProcAddress(user32dll, "ShowCursor");
+
+	MH_CreateHook(SetCursorPosPtr, &Hooks::SetCursorPos, reinterpret_cast<void**>(&originalSetCursorPos));
+	MH_CreateHook(ClipCursorPtr, &Hooks::ClipCursor, reinterpret_cast<void**>(&originalClipCursor));
+	MH_CreateHook(GetCursorPosPtr, &Hooks::GetCursorPos, reinterpret_cast<void**>(&originalGetCursorPos));
+	MH_CreateHook(ShowCursorPtr, &Hooks::ShowCursor, reinterpret_cast<void**>(&originalShowCursor));
+
+	///////////////////////////////////////////////////////////////////////////////
+	// Hook Utility functions
+	MH_CreateHook(addr_MSG_EngineError, &Hooks::MSG_EngineError, reinterpret_cast<void**>(&originalMSG_EngineError));
+
+	///////////////////////////////////////////////////////////////////////////////
+	// Enable Squirrel hooks
+	MH_EnableHook(addr_SQVM_Print);
+	MH_EnableHook(addr_SQVM_LoadRson);
+	MH_EnableHook(addr_SQVM_LoadScript);
+
+	///////////////////////////////////////////////////////////////////////////////
+	// Enable Game hooks
+	MH_EnableHook(addr_CHLClient_FrameStageNotify);
+	MH_EnableHook(addr_CVEngineServer_IsPersistenceDataAvailable);
+
+	///////////////////////////////////////////////////////////////////////////////
+	// Enable WinAPI hooks
+	MH_EnableHook(SetCursorPosPtr);
+	MH_EnableHook(ClipCursorPtr);
+	MH_EnableHook(GetCursorPosPtr);
+	MH_EnableHook(ShowCursorPtr);
+
+	///////////////////////////////////////////////////////////////////////////////
+    // Enabled Utility hooks
+	MH_EnableHook(addr_MSG_EngineError);
+}
+
+void Hooks::RemoveHooks()
+{
+	///////////////////////////////////////////////////////////////////////////////
+	// Unhook Squirrel functions
+	MH_RemoveHook(addr_SQVM_Print);
+	MH_RemoveHook(addr_SQVM_LoadRson);
+	MH_RemoveHook(addr_SQVM_LoadScript);
+
+	///////////////////////////////////////////////////////////////////////////////
+	// Unhook Game Functions
+	MH_RemoveHook(addr_CHLClient_FrameStageNotify);
+	MH_RemoveHook(addr_CVEngineServer_IsPersistenceDataAvailable);
+
+	///////////////////////////////////////////////////////////////////////////////
+	// Unhook Netchan functions
+	MH_RemoveHook(addr_NET_ReceiveDatagram);
+	MH_RemoveHook(addr_NET_SendDatagram);
+
+	///////////////////////////////////////////////////////////////////////////////
+	// Unhook ConVar | ConCommand functions.
+	MH_RemoveHook(addr_ConVar_IsFlagSet);
+	MH_RemoveHook(addr_ConCommand_IsFlagSet);
+
+	///////////////////////////////////////////////////////////////////////////////
+	// Unhook WinAPI
+	HMODULE user32dll = GetModuleHandleA("user32.dll");
+	void* SetCursorPosPtr = GetProcAddress(user32dll, "SetCursorPos");
+	void* ClipCursorPtr = GetProcAddress(user32dll, "ClipCursor");
+	void* GetCursorPosPtr = GetProcAddress(user32dll, "GetCursorPos");
+	void* ShowCursorPtr = GetProcAddress(user32dll, "ShowCursor");
+
+	MH_RemoveHook(SetCursorPosPtr);
+	MH_RemoveHook(ClipCursorPtr);
+	MH_RemoveHook(GetCursorPosPtr);
+	MH_RemoveHook(ShowCursorPtr);
+
+	///////////////////////////////////////////////////////////////////////////////
+	// Unhook Utility functions
+	MH_RemoveHook(addr_MSG_EngineError);
+
+	///////////////////////////////////////////////////////////////////////////////
+	// Reset Minhook
+	MH_Uninitialize();
+}
+
+void Hooks::ToggleNetHooks()
+{
+	static bool g_net = false;
+
+	if (!g_net)
+	{
+		MH_EnableHook(addr_NET_ReceiveDatagram);
+		MH_EnableHook(addr_NET_SendDatagram);
+		printf("\n");
+		printf("+--------------------------------------------------------+\n");
+		printf("|>>>>>>>>>>>>>| NETCHANNEL TRACE ACTIVATED |<<<<<<<<<<<<<|\n");
+		printf("+--------------------------------------------------------+\n");
+		printf("\n");
+	}
+	else
+	{
+		MH_DisableHook(addr_NET_ReceiveDatagram);
+		MH_DisableHook(addr_NET_SendDatagram);
+		printf("\n");
+		printf("+--------------------------------------------------------+\n");
+		printf("|>>>>>>>>>>>>| NETCHANNEL TRACE DEACTIVATED |<<<<<<<<<<<<|\n");
+		printf("+--------------------------------------------------------+\n");
+		printf("\n");
+	}
+
+	g_net = !g_net;
+}
+
+void Hooks::ToggleDevCommands()
+{
+	static bool g_dev = false;
+
+	if (!g_dev)
+	{
+		MH_EnableHook(addr_ConVar_IsFlagSet);
+		MH_EnableHook(addr_ConCommand_IsFlagSet);
+		printf("\n");
+		printf("+--------------------------------------------------------+\n");
+		printf("|>>>>>>>>>>>>>| DEVONLY COMMANDS ACTIVATED |<<<<<<<<<<<<<|\n");
+		printf("+--------------------------------------------------------+\n");
+		printf("\n");
+
+	}
+	else
+	{
+		MH_DisableHook(addr_ConVar_IsFlagSet);
+		MH_DisableHook(addr_ConCommand_IsFlagSet);
+		printf("\n");
+		printf("+--------------------------------------------------------+\n");
+		printf("|>>>>>>>>>>>>| DEVONLY COMMANDS DEACTIVATED |<<<<<<<<<<<<|\n");
+		printf("+--------------------------------------------------------+\n");
+		printf("\n");
+	}
+
+	g_dev = !g_dev;
+}
diff --git a/r5dev/src/hooks/iconvar.cpp b/r5dev/src/hooks/iconvar.cpp
new file mode 100644
index 00000000..ab5f4a61
--- /dev/null
+++ b/r5dev/src/hooks/iconvar.cpp
@@ -0,0 +1,58 @@
+#include "pch.h"
+#include "hooks.h"
+
+bool Hooks::ConVar_IsFlagSet(int** cvar, int flag)
+{
+	int real_flags = *(*(cvar + (72 / (sizeof(void*)))) + (56 / sizeof(int)));
+	if (g_bDebugConsole)
+	{
+		printf("--------------------------------------------------\n");
+		printf(" Flaged: %08X\n", real_flags);
+	}
+	// Mask off FCVAR_CHEATS and FCVAR_DEVELOPMENTONLY
+	real_flags &= 0xFFFFBFFD;
+	if (g_bDebugConsole)
+	{
+		printf(" Masked: %08X\n", real_flags);
+		printf(" Verify: %08X\n", flag);
+		printf("--------------------------------------------------\n");
+	}
+	if (flag & 0x80000) { return true; }
+
+	if (!g_bReturnAllFalse)
+	{
+		return (real_flags & flag) != 0;
+	}
+	else
+	{
+		return false;
+	}
+}
+
+bool Hooks::ConCommand_IsFlagSet(int* cmd, int flag)
+{
+	int real_flags = *((cmd + (56 / sizeof(int))));
+	if (g_bDebugConsole)
+	{
+		printf("--------------------------------------------------\n");
+		printf(" Flaged: %08X\n", real_flags);
+	}
+	// Mask off FCVAR_CHEATS and FCVAR_DEVELOPMENTONLY
+	real_flags &= 0xFFFFBFFD;
+	if (g_bDebugConsole)
+	{
+		printf(" Masked: %08X\n", real_flags);
+		printf(" Verify: %08X\n", flag);
+		printf("--------------------------------------------------\n");
+	}
+	if (flag & 0x80000) { return true; }
+
+	if (!g_bReturnAllFalse)
+	{
+		return(real_flags & flag) != 0;
+	}
+	else
+	{
+		return false;
+	}
+}
\ No newline at end of file
diff --git a/r5dev/src/hooks/msgbox.cpp b/r5dev/src/hooks/msgbox.cpp
new file mode 100644
index 00000000..4592d1f1
--- /dev/null
+++ b/r5dev/src/hooks/msgbox.cpp
@@ -0,0 +1,15 @@
+#include "pch.h"
+#include "hooks.h"
+
+namespace Hooks
+{
+	MSG_EngineErrorFn originalMSG_EngineError = nullptr;
+}
+
+int Hooks::MSG_EngineError(char* fmt, va_list args)
+{
+	printf("\nENGINE ERROR #####################################\n");
+	vprintf(fmt, args);
+
+	return originalMSG_EngineError(fmt, args);
+}
\ No newline at end of file
diff --git a/r5dev/src/hooks/net.cpp b/r5dev/src/hooks/net.cpp
new file mode 100644
index 00000000..59eb65f0
--- /dev/null
+++ b/r5dev/src/hooks/net.cpp
@@ -0,0 +1,37 @@
+#include "pch.h"
+#include "hooks.h"
+
+namespace Hooks
+{
+	NET_ReceiveDatagramFn originalNET_ReceiveDatagram = nullptr;
+	NET_SendDatagramFn originalNET_SendDatagram = nullptr;
+}
+
+bool Hooks::NET_ReceiveDatagram(int sock, void* inpacket, bool raw)
+{
+	bool result = originalNET_ReceiveDatagram(sock, inpacket, raw);
+	if (result)
+	{
+		int i = NULL;
+		netpacket_t* pkt = (netpacket_t*)inpacket;
+
+		///////////////////////////////////////////////////////////////////////////
+		// Log received packet data
+		HexDump("[+] NET_ReceiveDatagram", 0, &pkt->data[i], pkt->wiresize);
+	}
+
+	return result;
+}
+
+unsigned int Hooks::NET_SendDatagram(SOCKET s, const char* buf, int len, int flags)
+{
+	unsigned int result = originalNET_SendDatagram(s, buf, len, flags);
+	if (result)
+	{
+		///////////////////////////////////////////////////////////////////////////
+		// Log transmitted packet data
+		HexDump("[+] NET_SendDatagram", 0, buf, len);
+	}
+
+	return result;
+}
\ No newline at end of file
diff --git a/r5dev/src/hooks/sqvm.cpp b/r5dev/src/hooks/sqvm.cpp
new file mode 100644
index 00000000..5285507c
--- /dev/null
+++ b/r5dev/src/hooks/sqvm.cpp
@@ -0,0 +1,90 @@
+#include "pch.h"
+#include "hooks.h"
+
+namespace Hooks
+{
+	SQVM_LoadRsonFn originalSQVM_LoadRson = nullptr;
+	SQVM_LoadScriptFn originalSQVM_LoadScript = nullptr;
+}
+
+void* Hooks::SQVM_Print(void* sqvm, char* fmt, ...)
+{
+	char buf[1024];
+	va_list args;
+	va_start(args, fmt);
+	vprintf(fmt, args);
+	vsnprintf(buf, IM_ARRAYSIZE(buf), fmt, args);
+	buf[IM_ARRAYSIZE(buf) - 1] = 0;
+	va_end(args);
+	Items.push_back(Strdup(buf));
+	return NULL;
+}
+
+__int64 Hooks::SQVM_LoadRson(const char* rson_name)
+{
+	char filepath[MAX_PATH] = { 0 };
+	sprintf_s(filepath, MAX_PATH, "platform\\%s", rson_name);
+
+	///////////////////////////////////////////////////////////////////////////////
+	// Flip forward slashes in filepath to windows-style backslash
+	for (int i = 0; i < strlen(filepath); i++)
+	{
+		if (filepath[i] == '/')
+		{
+			filepath[i] = '\\';
+		}
+	}
+
+	///////////////////////////////////////////////////////////////////////////////
+	// Returns the new path if the rson exists on the disk
+	if (FileExists(filepath) && originalSQVM_LoadRson(rson_name))
+	{
+		printf("\n");
+		printf("##################################################\n");
+		printf("] '%s'\n", filepath);
+		printf("##################################################\n");
+		printf("\n");
+
+		return originalSQVM_LoadRson(filepath);
+	}
+
+	printf("\n");
+	printf("##################################################\n");
+	printf("] '%s'\n", rson_name);
+	printf("##################################################\n");
+	printf("\n");
+
+	return originalSQVM_LoadRson(rson_name);
+}
+
+bool Hooks::SQVM_LoadScript(void* sqvm, const char* script_path, const char* script_name, int flag)
+{
+	char filepath[MAX_PATH] = { 0 };
+	sprintf_s(filepath, MAX_PATH, "platform\\%s", script_path);
+
+	///////////////////////////////////////////////////////////////////////////////
+	// Flip forward slashes in filepath to windows-style backslash
+	for (int i = 0; i < strlen(filepath); i++)
+	{
+		if (filepath[i] == '/')
+		{
+			filepath[i] = '\\';
+		}
+	}
+	if (g_bDebugLoading)
+	{
+		printf(" [+] Loading SQVM Script '%s' ...\n", filepath);
+	}
+	///////////////////////////////////////////////////////////////////////////////
+	// Returns true if the script exists on the disk
+	if (FileExists(filepath) && originalSQVM_LoadScript(sqvm, filepath, script_name, flag))
+	{
+		return true;
+	}
+	if (g_bDebugLoading)
+	{
+		printf(" [!] FAILED. Try SP / VPK for '%s'\n", filepath);
+	}
+
+	return originalSQVM_LoadScript(sqvm, script_path, script_name, flag);
+}
\ No newline at end of file
diff --git a/r5dev/src/hooks/winapi.cpp b/r5dev/src/hooks/winapi.cpp
new file mode 100644
index 00000000..a9a96905
--- /dev/null
+++ b/r5dev/src/hooks/winapi.cpp
@@ -0,0 +1,59 @@
+#include "pch.h"
+#include "hooks.h"
+
+namespace Hooks
+{
+	namespace
+	{
+		static POINT g_pLastCursorPos{ 0 };
+	}
+
+	GetCursorPosFn originalGetCursorPos = nullptr;
+	SetCursorPosFn originalSetCursorPos = nullptr;
+	ClipCursorFn originalClipCursor = nullptr;
+	ShowCursorFn originalShowCursor = nullptr;
+}
+
+BOOL WINAPI Hooks::GetCursorPos(LPPOINT lpPoint)
+{
+	if (g_bBlockInput)
+	{
+		assert(lpPoint != nullptr);
+		*lpPoint = g_pLastCursorPos;
+	}
+
+	return originalGetCursorPos(lpPoint);
+}
+
+BOOL WINAPI Hooks::SetCursorPos(int X, int Y)
+{
+	g_pLastCursorPos.x = X;
+	g_pLastCursorPos.y = Y;
+
+	if (g_bBlockInput)
+	{
+		return TRUE;
+	}
+
+	return originalSetCursorPos(X, Y);
+}
+
+BOOL WINAPI Hooks::ClipCursor(const RECT* lpRect)
+{
+	if (g_bBlockInput)
+	{
+		lpRect = nullptr;
+	}
+
+	return originalClipCursor(lpRect);
+}
+
+BOOL WINAPI Hooks::ShowCursor(BOOL bShow)
+{
+	if (g_bBlockInput)
+	{
+		bShow = TRUE;
+	}
+
+	return originalShowCursor(bShow);
+}
\ No newline at end of file
diff --git a/r5dev/src/id3dx.cpp b/r5dev/src/id3dx.cpp
index 8b672a56..013f4c06 100644
--- a/r5dev/src/id3dx.cpp
+++ b/r5dev/src/id3dx.cpp
@@ -1,9 +1,7 @@
 #include "pch.h"
 #include "id3dx.h"
-#include "input.h"
-#include "enums.h"
+#include "hooks.h"
 #include "console.h"
-#include "detours.h"
 #include "overlay.h"
 #include "patterns.h"
 #include "gameclasses.h"
@@ -269,7 +267,7 @@ void DrawImGui()
 		GameGlobals::InputSystem->EnableInput(false); // Disable input.
 		DrawConsole();
 	}
-	if(g_bShowBrowser)
+	if (g_bShowBrowser)
 	{
 		GameGlobals::InputSystem->EnableInput(false); // Disable input.
 		DrawBrowser();
@@ -354,6 +352,8 @@ HRESULT GetDeviceAndCtxFromSwapchain(IDXGISwapChain* pSwapChain, ID3D11Device**
 	return ret;
 }
 
+IDXGIResizeBuffers originalResizeBuffers = nullptr;
+
 HRESULT __stdcall GetResizeBuffers(IDXGISwapChain* pSwapChain, UINT nBufferCount, UINT nWidth, UINT nHeight, DXGI_FORMAT dxFormat, UINT nSwapChainFlags)
 {
 	g_bShowConsole    = false;
@@ -369,16 +369,18 @@ HRESULT __stdcall GetResizeBuffers(IDXGISwapChain* pSwapChain, UINT nBufferCount
 
 	ImGui_ImplDX11_CreateDeviceObjects();
 	///////////////////////////////////////////////////////////////////////////////
-	return g_oResizeBuffers(pSwapChain, nBufferCount, nWidth, nHeight, dxFormat, nSwapChainFlags);
+	return originalResizeBuffers(pSwapChain, nBufferCount, nWidth, nHeight, dxFormat, nSwapChainFlags);
 }
 
+IDXGISwapChainPresent originalPresent = nullptr;
+
 HRESULT __stdcall Present(IDXGISwapChain* pSwapChain, UINT nSyncInterval, UINT nFlags)
 {
 	if (!g_bInitialized)
 	{
 		if (FAILED(GetDeviceAndCtxFromSwapchain(pSwapChain, &g_pDevice, &g_pDeviceContext)))
 		{
-			return g_fnIDXGISwapChainPresent(pSwapChain, nSyncInterval, nFlags);
+			return originalPresent(pSwapChain, nSyncInterval, nFlags);
 			std::cout << "+--------------------------------------------------------+" << std::endl;
 			std::cout << "| >>>>>>>>>>| GET DVS AND CTX FROM SCP FAILED |<<<<<<<<< |" << std::endl;
 			std::cout << "+--------------------------------------------------------+" << std::endl;
@@ -399,7 +401,7 @@ HRESULT __stdcall Present(IDXGISwapChain* pSwapChain, UINT nSyncInterval, UINT n
 	DrawImGui();
 	g_bInitialized      = true;
 	///////////////////////////////////////////////////////////////////////////////
-	return g_fnIDXGISwapChainPresent(pSwapChain, nSyncInterval, nFlags);
+	return originalPresent(pSwapChain, nSyncInterval, nFlags);
 }
 
 //#################################################################################
@@ -408,42 +410,45 @@ HRESULT __stdcall Present(IDXGISwapChain* pSwapChain, UINT nSyncInterval, UINT n
 
 void InstallDXHooks()
 {
-	g_oPostMessageA = (IPostMessageA)DetourFindFunction("user32.dll", "PostMessageA");
-	g_oPostMessageW = (IPostMessageW)DetourFindFunction("user32.dll", "PostMessageW");
-	///////////////////////////////////////////////////////////////////////////////
-	// Begin the detour transaction
-	DetourTransactionBegin();
-	DetourUpdateThread(GetCurrentThread());
+	HMODULE user32dll = GetModuleHandleA("user32.dll");
+
+	IPostMessageA PostMessageA = (IPostMessageA)GetProcAddress(user32dll, "PostMessageA");
+	IPostMessageW PostMessageW = (IPostMessageW)GetProcAddress(user32dll, "PostMessageW");
+
 	///////////////////////////////////////////////////////////////////////////////
 	// Hook PostMessage
-	DetourAttach(&(LPVOID&)g_oPostMessageA, (PBYTE)HPostMessageA);
-	DetourAttach(&(LPVOID&)g_oPostMessageW, (PBYTE)HPostMessageW);
+	MH_CreateHook(PostMessageA, &HPostMessageA, reinterpret_cast<void**>(&g_oPostMessageA));
+	MH_CreateHook(PostMessageW, &HPostMessageW, reinterpret_cast<void**>(&g_oPostMessageW));
+
 	///////////////////////////////////////////////////////////////////////////////
 	// Hook SwapChain
-	DetourAttach(&(LPVOID&)g_fnIDXGISwapChainPresent, (PBYTE)Present);
-	DetourAttach(&(LPVOID&)g_oResizeBuffers, (PBYTE)GetResizeBuffers);
+	MH_CreateHook(g_fnIDXGISwapChainPresent, &Present, reinterpret_cast<void**>(&originalPresent));
+	MH_CreateHook(g_oResizeBuffers, &GetResizeBuffers, reinterpret_cast<void**>(&originalResizeBuffers));
+	 
 	///////////////////////////////////////////////////////////////////////////////
-	// Commit the transaction
-	DetourTransactionCommit();
+	// Enable hooks
+	MH_EnableHook(PostMessageA);
+	MH_EnableHook(PostMessageW);
+	MH_EnableHook(g_fnIDXGISwapChainPresent);
+	MH_EnableHook(g_oResizeBuffers);
 }
 
 void RemoveDXHooks()
 {
-	///////////////////////////////////////////////////////////////////////////////
-	// Begin the detour transaction
-	DetourTransactionBegin();
-	DetourUpdateThread(GetCurrentThread());
+	HMODULE user32dll = GetModuleHandleA("user32.dll");
+
+	IPostMessageA PostMessageA = (IPostMessageA)GetProcAddress(user32dll, "PostMessageA");
+	IPostMessageW PostMessageW = (IPostMessageW)GetProcAddress(user32dll, "PostMessageW");
+
 	///////////////////////////////////////////////////////////////////////////////
 	// Unhook PostMessage
-	DetourDetach(&(LPVOID&)g_oPostMessageA, (PBYTE)HPostMessageA);
-	DetourDetach(&(LPVOID&)g_oPostMessageW, (PBYTE)HPostMessageW);
+	MH_RemoveHook(PostMessageA);
+	MH_RemoveHook(PostMessageW);
+
 	///////////////////////////////////////////////////////////////////////////////
 	// Unhook SwapChain
-	DetourDetach(&(LPVOID&)g_fnIDXGISwapChainPresent, (PBYTE)Present);
-	DetourDetach(&(LPVOID&)g_oResizeBuffers, (PBYTE)GetResizeBuffers);
-	///////////////////////////////////////////////////////////////////////////////
-	// Commit the transaction
-	DetourTransactionCommit();
+	MH_RemoveHook(g_fnIDXGISwapChainPresent);
+	MH_RemoveHook(g_oResizeBuffers);
 
 	///////////////////////////////////////////////////////////////////////////////
 	// Shutdown ImGui
diff --git a/r5dev/src/input.cpp b/r5dev/src/input.cpp
index d1403e21..e85ccc19 100644
--- a/r5dev/src/input.cpp
+++ b/r5dev/src/input.cpp
@@ -1,119 +1,2 @@
 #include "pch.h"
-#include "input.h"
-
-/*-----------------------------------------------------------------------------
- * _input.cpp
- *-----------------------------------------------------------------------------*/
-
-///////////////////////////////////////////////////////////////////////////////
-typedef BOOL(WINAPI* IGetCursorPos)(LPPOINT lpPoint);
-typedef BOOL(WINAPI* ISetCursorPos)(int nX, int nY);
-typedef BOOL(WINAPI* IClipCursor)(const RECT* lpRect);
-typedef BOOL(WINAPI* IShowCursor)(BOOL bShow);
-
-///////////////////////////////////////////////////////////////////////////////
-static IGetCursorPos            g_oGetCursorPos             = nullptr;
-static ISetCursorPos            g_oSetCursorPos             = nullptr;
-static IClipCursor              g_oClipCursor               = nullptr;
-static IShowCursor              g_oShowCursor               = nullptr;
-
-///////////////////////////////////////////////////////////////////////////////
-static POINT                    g_pLastCursorPos              { 0 };
-extern BOOL                     g_bBlockInput               = false;
-
-//#############################################################################
-// INITIALIZATION
-//#############################################################################
-
-void SetupIPHooks()
-{
-	g_oSetCursorPos = (ISetCursorPos)DetourFindFunction("user32.dll", "SetCursorPos");
-	g_oClipCursor   = (IClipCursor  )DetourFindFunction("user32.dll", "ClipCursor"  );
-	g_oGetCursorPos = (IGetCursorPos)DetourFindFunction("user32.dll", "GetCursorPos");
-	g_oShowCursor   = (IShowCursor  )DetourFindFunction("user32.dll", "ShowCursor"  );
-}
-
-//#############################################################################
-// INPUT HOOKS
-//#############################################################################
-
-BOOL WINAPI HGetCursorPos(LPPOINT lpPoint)
-{
-	if (g_bBlockInput)
-	{
-		assert(lpPoint != nullptr);
-		*lpPoint = g_pLastCursorPos;
-	}
-
-	return g_oGetCursorPos(lpPoint);
-}
-
-BOOL WINAPI HSetCursorPos(int X, int Y)
-{
-	g_pLastCursorPos.x = X;
-	g_pLastCursorPos.y = Y;
-
-	if (g_bBlockInput)
-	{
-		return TRUE;
-	}
-
-	return g_oSetCursorPos(X, Y);
-}
-
-BOOL WINAPI HClipCursor(const RECT* lpRect)
-{
-	if (g_bBlockInput)
-	{
-		lpRect = nullptr;
-	}
-
-	return g_oClipCursor(lpRect);
-}
-
-BOOL WINAPI HShowCursor(BOOL bShow)
-{
-	if (g_bBlockInput)
-	{
-		bShow = TRUE;
-	}
-
-	return g_oShowCursor(bShow);
-}
-
-//#############################################################################
-// MANAGEMENT
-//#############################################################################
-
-void InstallIPHooks()
-{
-	SetupIPHooks();
-	///////////////////////////////////////////////////////////////////////////
-	DetourTransactionBegin();
-	DetourUpdateThread(GetCurrentThread());
-
-	///////////////////////////////////////////////////////////////////////////
-	DetourAttach(&(LPVOID&)g_oGetCursorPos, (PBYTE)HGetCursorPos);
-	DetourAttach(&(LPVOID&)g_oSetCursorPos, (PBYTE)HSetCursorPos);
-	DetourAttach(&(LPVOID&)g_oClipCursor, (PBYTE)HClipCursor);
-	DetourAttach(&(LPVOID&)g_oShowCursor, (PBYTE)HShowCursor);
-
-	///////////////////////////////////////////////////////////////////////////
-	DetourTransactionCommit();
-}
-
-void RemoveIPHooks()
-{
-	///////////////////////////////////////////////////////////////////////////
-	DetourTransactionBegin();
-	DetourUpdateThread(GetCurrentThread());
-
-	///////////////////////////////////////////////////////////////////////////
-	DetourDetach(&(LPVOID&)g_oGetCursorPos, (PBYTE)HGetCursorPos);
-	DetourDetach(&(LPVOID&)g_oSetCursorPos, (PBYTE)HSetCursorPos);
-	DetourDetach(&(LPVOID&)g_oClipCursor, (PBYTE)HClipCursor);
-	DetourDetach(&(LPVOID&)g_oShowCursor, (PBYTE)HShowCursor);
-
-	///////////////////////////////////////////////////////////////////////////
-	DetourTransactionCommit();
-}
+#include "input.h"
\ No newline at end of file
diff --git a/r5dev/src/overlay.cpp b/r5dev/src/overlay.cpp
index cfce7624..898e63d6 100644
--- a/r5dev/src/overlay.cpp
+++ b/r5dev/src/overlay.cpp
@@ -67,7 +67,7 @@ void CGameConsole::Draw(const char* title)
     ///////////////////////////////////////////////////////////////////////
     if (ImGui::SmallButton("Developer mode"))
     {
-        ToggleDevCommands();
+        Hooks::ToggleDevCommands();
         AddLog("+--------------------------------------------------------+\n");
         AddLog("|>>>>>>>>>>>>>>| DEVONLY COMMANDS TOGGLED |<<<<<<<<<<<<<<|\n");
         AddLog("+--------------------------------------------------------+\n");
@@ -76,7 +76,7 @@ void CGameConsole::Draw(const char* title)
     ImGui::SameLine();
     if (ImGui::SmallButton("Netchannel Trace"))
     {
-        ToggleNetHooks();
+        Hooks::ToggleNetHooks();
         AddLog("+--------------------------------------------------------+\n");
         AddLog("|>>>>>>>>>>>>>>| NETCHANNEL TRACE TOGGLED |<<<<<<<<<<<<<<|\n");
         AddLog("+--------------------------------------------------------+\n");
@@ -266,7 +266,7 @@ void CGameConsole::ProcessCommand(const char* command_line)
 
 void CGameConsole::ExecCommand(const char* command_line)
 {
-    org_CommandExecute(NULL, command_line);
+    addr_CommandExecute(NULL, command_line);
 }
 
 ///////////////////////////////////////////////////////////////////////////
@@ -589,7 +589,7 @@ void CCompanion::HostServerSection()
 
             if (StartAsDedi)
             {
-                ToggleDevCommands();
+                Hooks::ToggleDevCommands();
             }
         }
         else
@@ -671,7 +671,7 @@ void CCompanion::ProcessCommand(const char* command_line)
 
 void CCompanion::ExecCommand(const char* command_line)
 {
-    org_CommandExecute(NULL, command_line);
+    addr_CommandExecute(NULL, command_line);
 }
 
 //#############################################################################

From a9e8557af6afbdf55e7ae169f23c513f1bf44927 Mon Sep 17 00:00:00 2001
From: IcePixelx <41352111+PixieCore@users.noreply.github.com>
Date: Wed, 28 Jul 2021 13:06:18 +0200
Subject: [PATCH 2/2] fix input disabling.

---
 r5dev/src/id3dx.cpp | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/r5dev/src/id3dx.cpp b/r5dev/src/id3dx.cpp
index 013f4c06..5a1d3245 100644
--- a/r5dev/src/id3dx.cpp
+++ b/r5dev/src/id3dx.cpp
@@ -267,12 +267,14 @@ void DrawImGui()
 		GameGlobals::InputSystem->EnableInput(false); // Disable input.
 		DrawConsole();
 	}
+
 	if (g_bShowBrowser)
 	{
 		GameGlobals::InputSystem->EnableInput(false); // Disable input.
 		DrawBrowser();
 	}
-	else
+
+	if (!g_bShowConsole && !g_bShowBrowser)
 	{
 		GameGlobals::InputSystem->EnableInput(true); // Enable input.
 	}