From 17fe4e26e88d8cde80ad7dd3f0b537b414b5ff54 Mon Sep 17 00:00:00 2001 From: Am4191LOL <206058986@qq.com> Date: Wed, 25 Feb 2026 16:49:32 +0800 Subject: [PATCH] feat(hook): Add IsLoadoutAllowed hook to allow all loadout configurations Add new hook function Hook_IsLoadoutAllowed to bypass loadout configuration restrictions Register this hook in CHook_Loader to make it effective --- .../Andromeda-CS2-Base/CS2/CHook_Loader.cpp | 2 ++ .../Andromeda-CS2-Base/CS2/Hook/Hook_IsLoadoutAllowed.cpp | 8 ++++++++ .../Andromeda-CS2-Base/CS2/Hook/Hook_IsLoadoutAllowed.hpp | 8 ++++++++ 3 files changed, 18 insertions(+) create mode 100644 Andromeda-CS2-Base/Andromeda-CS2-Base/CS2/Hook/Hook_IsLoadoutAllowed.cpp create mode 100644 Andromeda-CS2-Base/Andromeda-CS2-Base/CS2/Hook/Hook_IsLoadoutAllowed.hpp diff --git a/Andromeda-CS2-Base/Andromeda-CS2-Base/CS2/CHook_Loader.cpp b/Andromeda-CS2-Base/Andromeda-CS2-Base/CS2/CHook_Loader.cpp index 7be44e1..7622e2b 100644 --- a/Andromeda-CS2-Base/Andromeda-CS2-Base/CS2/CHook_Loader.cpp +++ b/Andromeda-CS2-Base/Andromeda-CS2-Base/CS2/CHook_Loader.cpp @@ -21,6 +21,7 @@ #include #include #include +#include static CHook_Loader g_CHook_Loader{}; @@ -72,6 +73,7 @@ auto CHook_Loader::InstallSecondHook() -> bool { { XorStr( "Hook::IsRelativeMouseMode" ) , XorStr( "48 89 6C 24 ? 48 89 74 24 ? 48 89 7C 24 ? 41 56 48 83 EC ? 0F B6 F2" ) , INPUTSYSTEM_DLL } , &Hook_IsRelativeMouseMode , reinterpret_cast( &IsRelativeMouseMode_o ) }, { { XorStr( "Hook::UpdateInPVS" ) , XorStr( "48 89 5C 24 ? 48 89 74 24 ? 57 48 83 EC ? 48 8B D9 8B F2 48 8B 89 ? ? ? ? 48 8B 01 FF 50 ? 33 FF 48 85 C0 74 ? 48 8B 80 ? ? ? ? EB ? 48 8B C7 39 B8 ? ? ? ? 0F 8F ? ? ? ? 0F B6 48 ? 80 F9" ) , CLIENT_DLL } , &Hook_UpdateInPVS , reinterpret_cast( &UpdateInPVS_o ) }, { { XorStr( "Hook::AntiTamper" ) , XorStr( "40 53 41 57 48 83 EC ? 48 89 74 24 ? 48 8B F1" ) , CLIENT_DLL } , &Hook_AntiTamper , reinterpret_cast( &AntiTamper_o ) }, + { {XorStr("Hook::IsLoadoutAllowed") , XorStr("48 89 5C 24 ? 48 89 6C 24 ? 48 89 74 24 ? 57 48 83 EC ? 48 8B E9 48 8B 0D ? ? ? ? ? ? ? FF 50") , CLIENT_DLL } ,&Hook_IsLoadoutAllowed , reinterpret_cast(&IsLoadoutAllowed_o) , true , true } }; return InstallHooks(); diff --git a/Andromeda-CS2-Base/Andromeda-CS2-Base/CS2/Hook/Hook_IsLoadoutAllowed.cpp b/Andromeda-CS2-Base/Andromeda-CS2-Base/CS2/Hook/Hook_IsLoadoutAllowed.cpp new file mode 100644 index 0000000..8fb054d --- /dev/null +++ b/Andromeda-CS2-Base/Andromeda-CS2-Base/CS2/Hook/Hook_IsLoadoutAllowed.cpp @@ -0,0 +1,8 @@ +#include "Hook_IsLoadoutAllowed.hpp" + + +auto Hook_IsLoadoutAllowed() -> bool +{ + return true; + return IsLoadoutAllowed_o(); +} diff --git a/Andromeda-CS2-Base/Andromeda-CS2-Base/CS2/Hook/Hook_IsLoadoutAllowed.hpp b/Andromeda-CS2-Base/Andromeda-CS2-Base/CS2/Hook/Hook_IsLoadoutAllowed.hpp new file mode 100644 index 0000000..1aa9c0f --- /dev/null +++ b/Andromeda-CS2-Base/Andromeda-CS2-Base/CS2/Hook/Hook_IsLoadoutAllowed.hpp @@ -0,0 +1,8 @@ +#pragma once + +#include + +auto Hook_IsLoadoutAllowed() -> bool; + +using IsLoadoutAllowed_t = decltype(&Hook_IsLoadoutAllowed); +inline IsLoadoutAllowed_t IsLoadoutAllowed_o = nullptr;