From 42aca6ec696353724ac2a092f3b224f0ecc56506 Mon Sep 17 00:00:00 2001 From: Yimura Date: Fri, 13 May 2022 18:26:15 +0200 Subject: [PATCH] feat(Protections): Added network group override protection --- BigBaseV2/src/hooking.cpp | 6 +++++- BigBaseV2/src/hooking.hpp | 4 ++++ BigBaseV2/src/hooks/network_group_override.cpp | 18 ++++++++++++++++++ BigBaseV2/src/pointers.cpp | 6 ++++++ BigBaseV2/src/pointers.hpp | 3 +-- 5 files changed, 34 insertions(+), 3 deletions(-) create mode 100644 BigBaseV2/src/hooks/network_group_override.cpp diff --git a/BigBaseV2/src/hooking.cpp b/BigBaseV2/src/hooking.cpp index 47a85164..86dc38c0 100644 --- a/BigBaseV2/src/hooking.cpp +++ b/BigBaseV2/src/hooking.cpp @@ -37,7 +37,11 @@ namespace big // Network Player Mgr Shutdown m_network_player_mgr_shutdown_hook("NPMS", g_pointers->m_network_player_mgr_shutdown, &hooks::network_player_mgr_shutdown), - m_net_array_handler_hook("net_array_handler", g_pointers->m_net_array_handler, &hooks::net_array_handler), + // Network Group Override + m_network_group_override("NGO", g_pointers->m_network_group_override, &hooks::network_group_override), + + // Net Array Handler + m_net_array_handler_hook("NAH", g_pointers->m_net_array_handler, &hooks::net_array_handler), // Increment Stat Event m_increment_stat_hook("ISE", g_pointers->m_increment_stat_event, &hooks::increment_stat_event), diff --git a/BigBaseV2/src/hooking.hpp b/BigBaseV2/src/hooking.hpp index 331b6ed3..46902d2e 100644 --- a/BigBaseV2/src/hooking.hpp +++ b/BigBaseV2/src/hooking.hpp @@ -42,6 +42,8 @@ namespace big static void network_player_mgr_shutdown(CNetworkPlayerMgr* _this); + static void network_group_override(std::int64_t a1, std::int64_t a2, std::int64_t a3); + static bool net_array_handler(__int64 netArrayHandlerBaseMgr, CNetGamePlayer* a2, rage::datBitBuffer* datbitbuffer, unsigned int bytes_to_read, __int16 a5); static void player_join(CNetworkObjectMgr* _this, CNetGamePlayer* net_player); @@ -101,6 +103,8 @@ namespace big detour_hook m_network_player_mgr_shutdown_hook; + detour_hook m_network_group_override; + detour_hook m_net_array_handler_hook; detour_hook m_player_has_joined_hook; diff --git a/BigBaseV2/src/hooks/network_group_override.cpp b/BigBaseV2/src/hooks/network_group_override.cpp new file mode 100644 index 00000000..a29bd3d3 --- /dev/null +++ b/BigBaseV2/src/hooks/network_group_override.cpp @@ -0,0 +1,18 @@ +#include "hooking.hpp" + +namespace big +{ + // thanks ellisdudes :P + void hooks::network_group_override(std::int64_t a1, std::int64_t a2, std::int64_t a3) + { + if (a2 == 0 && (a3 == 103 || a3 == 0)) + { + LOG(WARNING) << "Received SCRIPT_WORLD_STATE_EVENT crash from unknown attacker..."; + + return; + } + // original + + return g_hooking->m_network_group_override.get_original()(a1, a2, a3); + } +} \ No newline at end of file diff --git a/BigBaseV2/src/pointers.cpp b/BigBaseV2/src/pointers.cpp index 06a875a2..5933f4d1 100644 --- a/BigBaseV2/src/pointers.cpp +++ b/BigBaseV2/src/pointers.cpp @@ -248,6 +248,12 @@ namespace big { m_net_array_handler = ptr.sub(0x3C).as(); }); + + // Network Group Override + main_batch.add("NGO", "44 89 81 ? ? ? ? 89 91 ? ? ? ? C6 05", [this](memory::handle ptr) + { + m_network_group_override = ptr.as(); + }); main_batch.run(memory::module(nullptr)); diff --git a/BigBaseV2/src/pointers.hpp b/BigBaseV2/src/pointers.hpp index bca086d7..49bec22a 100644 --- a/BigBaseV2/src/pointers.hpp +++ b/BigBaseV2/src/pointers.hpp @@ -44,12 +44,11 @@ namespace big int* m_resolution_x; int* m_resolution_y; - std::uint16_t* m_some_anticheat_thing{}; - PVOID m_blame_explode; PVOID m_model_spawn_bypass; PVOID m_native_return; PVOID m_is_dlc_present; + PVOID m_network_group_override; PVOID m_error_screen{};