From 9e036e51744ca6916d0fcb86e9eae11a32a5f81d Mon Sep 17 00:00:00 2001 From: Edo Date: Fri, 12 May 2023 22:35:31 +0100 Subject: [PATCH] [Network]: Better patch (#1032) --- src/Components/Modules/Network.cpp | 38 +++++------------------------- src/Components/Modules/Network.hpp | 2 -- src/Game/Common.cpp | 1 + src/Game/Common.hpp | 3 +++ 4 files changed, 10 insertions(+), 34 deletions(-) diff --git a/src/Components/Modules/Network.cpp b/src/Components/Modules/Network.cpp index 99c57784..fe987d0d 100644 --- a/src/Components/Modules/Network.cpp +++ b/src/Components/Modules/Network.cpp @@ -319,33 +319,6 @@ namespace Components } } - int Network::Sys_StringToSockaddr_Hk(const char* s, sockaddr* sadr) - { - hostent* h; - ZeroMemory(sadr, sizeof(*sadr)); - - ((sockaddr_in*)sadr)->sin_family = AF_INET; - ((sockaddr_in*)sadr)->sin_port = 0; - - if (Game::I_isdigit(*s)) - { - // ReSharper disable once CppDeprecatedEntity - *(int*)&((sockaddr_in*)sadr)->sin_addr = static_cast(::inet_addr(s)); - } - else - { - // ReSharper disable once CppDeprecatedEntity - if ((h = ::gethostbyname(s)) == nullptr) - { - return false; - } - - *(int*)&((sockaddr_in*)sadr)->sin_addr = *(int*)h->h_addr_list[0]; - } - - return true; - } - Network::Network() { AssertSize(Game::netadr_t, 20); @@ -376,10 +349,6 @@ namespace Components // Handle client packets Utils::Hook(0x5AA703, CL_HandleCommandStub, HOOK_JUMP).install()->quick(); - // Use the version of Sys_StringToSockaddr made by 3arc - Utils::Hook(0x44E23C, Sys_StringToSockaddr_Hk, HOOK_CALL).install()->quick(); - Utils::Hook(0x64D480, Sys_StringToSockaddr_Hk, HOOK_CALL).install()->quick(); - // Disable unused OOB packets handlers just to be sure Utils::Hook::Set(0x5AA5B6, 0xEB); // CL_SteamServerAuth Utils::Hook::Set(0x5AA69F, 0xEB); // echo @@ -411,8 +380,13 @@ namespace Components // Do not run UPNP stuff at all Utils::Hook::Set(0x48A135, 0xC3); + Utils::Hook::Nop(0x48A135 + 1, 4); + Utils::Hook::Set(0x48A151, 0xC3); - Utils::Hook::Nop(0x684080, 5); // Don't spam the console + Utils::Hook::Nop(0x48A151 + 1, 4); + + // Don't spam the console + Utils::Hook(0x684080, Game::Com_DPrintf, HOOK_CALL).install()->quick(); // Disable the IWNet IP detection (default 'got ipdetect' flag to 1) Utils::Hook::Set(0x649D6F0, 1); diff --git a/src/Components/Modules/Network.hpp b/src/Components/Modules/Network.hpp index 838e9db8..d4382942 100644 --- a/src/Components/Modules/Network.hpp +++ b/src/Components/Modules/Network.hpp @@ -81,8 +81,6 @@ namespace Components static bool CL_HandleCommand(Game::netadr_t* address, const char* command, Game::msg_t* message); static void CL_HandleCommandStub(); - - static int Sys_StringToSockaddr_Hk(const char* s, sockaddr* sadr); }; } diff --git a/src/Game/Common.cpp b/src/Game/Common.cpp index 0b86c1ea..4f92c9d6 100644 --- a/src/Game/Common.cpp +++ b/src/Game/Common.cpp @@ -9,6 +9,7 @@ namespace Game Com_Error_t Com_Error = Com_Error_t(0x4B22D0); Com_Printf_t Com_Printf = Com_Printf_t(0x402500); + Com_DPrintf_t Com_DPrintf = Com_DPrintf_t(0x413490); Com_PrintError_t Com_PrintError = Com_PrintError_t(0x4F8C70); Com_PrintWarning_t Com_PrintWarning = Com_PrintWarning_t(0x4E0200); Com_PrintMessage_t Com_PrintMessage = Com_PrintMessage_t(0x4AA830); diff --git a/src/Game/Common.hpp b/src/Game/Common.hpp index f2d44ab2..22cc1449 100644 --- a/src/Game/Common.hpp +++ b/src/Game/Common.hpp @@ -20,6 +20,9 @@ namespace Game typedef void(*Com_Printf_t)(int channel, const char* fmt, ...); extern Com_Printf_t Com_Printf; + typedef void(*Com_DPrintf_t)(int channel, const char* fmt, ...); + extern Com_DPrintf_t Com_DPrintf; + typedef void(*Com_PrintError_t)(int channel, const char* fmt, ...); extern Com_PrintError_t Com_PrintError;