From 021e77caf9efe9749682342b1668c75e144d969c Mon Sep 17 00:00:00 2001 From: Yimura Date: Fri, 19 Feb 2021 15:42:39 +0100 Subject: [PATCH] feat(Pointers): Fixed pointers for RECEIVED EVENT and EVENT ACK --- BigBaseV2/src/function_types.hpp | 14 ++++++++++++-- BigBaseV2/src/gta/net_game_event.hpp | 4 ++-- BigBaseV2/src/hooking.cpp | 4 ++-- BigBaseV2/src/hooking.hpp | 11 ++++++++++- BigBaseV2/src/pointers.cpp | 15 ++++++++++----- BigBaseV2/src/pointers.hpp | 1 + 6 files changed, 37 insertions(+), 12 deletions(-) diff --git a/BigBaseV2/src/function_types.hpp b/BigBaseV2/src/function_types.hpp index e2854e76..5d0a588a 100644 --- a/BigBaseV2/src/function_types.hpp +++ b/BigBaseV2/src/function_types.hpp @@ -17,8 +17,18 @@ namespace big::functions using get_net_player = int(Player player); using increment_stat_event = bool(uint64_t net_event_struct, int64_t sender, int64_t a3); - using read_bitbuf_dword = bool(rage::datBitBuffer* buffer, uint32_t* read, int bits); - using received_event = bool(rage::netEventMgr* event_manager, CNetGamePlayer* source_player, CNetGamePlayer* target_player, uint16_t event_id, int event_index, int event_handled_bitset, rage::datBitBuffer* buffer); + using read_bitbuf_array = bool(rage::datBitBuffer* buffer, PVOID read, int bits, int ); + using read_bitbuf_dword = bool(rage::datBitBuffer* buffer, PVOID read, int bits); + using received_event = bool( + rage::netEventMgr* event_manager, + CNetGamePlayer* source_player, + CNetGamePlayer* target_player, + uint16_t event_id, + int event_index, + int event_handled_bitset, + int64_t bit_buffer_size, + int64_t bit_buffer + ); using send_event_ack = void(rage::netEventMgr* event_manager, CNetGamePlayer* source_player, CNetGamePlayer* target_player, int event_index, int event_handled_bitset); using script_event_handler = bool(void* events, CNetGamePlayer* sourcePlayer, CNetGamePlayer* targetPlayer); diff --git a/BigBaseV2/src/gta/net_game_event.hpp b/BigBaseV2/src/gta/net_game_event.hpp index b7d0e18d..14658657 100644 --- a/BigBaseV2/src/gta/net_game_event.hpp +++ b/BigBaseV2/src/gta/net_game_event.hpp @@ -123,10 +123,10 @@ namespace rage return false; } - /*inline bool ReadArray(PVOID array, int size) + inline bool ReadArray(PVOID array, int size) { return big::g_pointers->m_read_bitbuf_array(this, array, size, 0); - }*/ + } public: void* m_data; //0x0000 diff --git a/BigBaseV2/src/hooking.cpp b/BigBaseV2/src/hooking.cpp index a0b8a3c2..b290e8fb 100644 --- a/BigBaseV2/src/hooking.cpp +++ b/BigBaseV2/src/hooking.cpp @@ -75,7 +75,7 @@ namespace big m_get_label_text_hook.enable(); m_error_screen_hook.enable(); m_increment_stat_hook.enable(); - //m_received_event_hook.enable(); + m_received_event_hook.enable(); m_script_event_hook.enable(); m_send_net_info_to_lobby_hook.enable(); @@ -98,7 +98,7 @@ namespace big m_get_label_text_hook.disable(); m_error_screen_hook.disable(); m_increment_stat_hook.disable(); - //m_received_event_hook.disable(); + m_received_event_hook.disable(); m_script_event_hook.disable(); m_send_net_info_to_lobby_hook.disable(); } diff --git a/BigBaseV2/src/hooking.hpp b/BigBaseV2/src/hooking.hpp index b05f072d..b81e6de9 100644 --- a/BigBaseV2/src/hooking.hpp +++ b/BigBaseV2/src/hooking.hpp @@ -28,7 +28,16 @@ namespace big static bool increment_stat_event(uint64_t net_event_struct, CNetGamePlayer* sender, int64_t a3); static bool script_event_handler(std::int64_t NetEventStruct, CNetGamePlayer* net_game_player); static bool send_net_info_to_lobby(rage::netPlayerData* local_player, int64_t a2, int64_t a3, DWORD* a4); - static bool received_event(rage::netEventMgr* event_manager, CNetGamePlayer* source_player, CNetGamePlayer* target_player, uint16_t event_id, int event_index, int event_handled_bitset, rage::datBitBuffer* buffer); + static bool received_event( + rage::netEventMgr* event_manager, + CNetGamePlayer* source_player, + CNetGamePlayer* target_player, + uint16_t event_id, + int event_index, + int event_handled_bitset, + int64_t bit_buffer_size, + int64_t bit_buffer + ); }; struct minhook_keepalive diff --git a/BigBaseV2/src/pointers.cpp b/BigBaseV2/src/pointers.cpp index 4594944a..112aa935 100644 --- a/BigBaseV2/src/pointers.cpp +++ b/BigBaseV2/src/pointers.cpp @@ -143,19 +143,24 @@ namespace big m_get_label_text = ptr.sub(19).as(); }); - main_batch.add("Received Event", "66 41 83 F9 ? 0F 83", [this](memory::handle ptr) + main_batch.add("Received Event", "66 41 83 F9 ? 0F 83 ? ? ? ?", [this](memory::handle ptr) { m_received_event = ptr.as(); }); - main_batch.add("Read BitBuffer WORD/DWORD", "E8 ? ? ? ? 84 C0 74 1C 48 8D 96 ? ? ? ? 44 8D 43 08 48 8B CF E8", [this](memory::handle ptr) + main_batch.add("Read BitBuffer WORD/DWORD", "48 89 74 24 ? 57 48 83 EC 20 48 8B D9 33 C9 41 8B F0 8A", [this](memory::handle ptr) { - m_read_bitbuf_dword = ptr.as(); + m_read_bitbuf_dword = ptr.sub(5).as(); }); - main_batch.add("Received Event Ack", "4C 0F 45 C9 8B 44 24 60", [this](memory::handle ptr) + main_batch.add("Read BitBuffer Array", "48 89 5C 24 ? 57 48 83 EC 30 41 8B F8 4C", [this](memory::handle ptr) { - m_send_event_ack = ptr.as(); + m_read_bitbuf_array = ptr.as(); + }); + + main_batch.add("Send Event Ack", "48 89 6C 24 ? 48 89 74 24 ? 57 48 83 EC 20 80 7A", [this](memory::handle ptr) + { + m_send_event_ack = ptr.sub(5).as(); }); main_batch.run(memory::module(nullptr)); diff --git a/BigBaseV2/src/pointers.hpp b/BigBaseV2/src/pointers.hpp index 810e2bd6..ca687f20 100644 --- a/BigBaseV2/src/pointers.hpp +++ b/BigBaseV2/src/pointers.hpp @@ -44,6 +44,7 @@ namespace big functions::get_player_name* m_get_player_name{}; functions::get_net_player* m_get_net_game_player{}; functions::increment_stat_event* m_increment_stat_event{}; + functions::read_bitbuf_array* m_read_bitbuf_array{}; functions::read_bitbuf_dword* m_read_bitbuf_dword{}; functions::received_event* m_received_event{}; functions::script_event_handler* m_script_event_handler{};