mirror of
https://github.com/Mr-X-GTA/YimMenu.git
synced 2025-06-17 23:07:26 +08:00
update
This commit is contained in:
parent
6edc483502
commit
9d6f19dba0
@ -1,29 +0,0 @@
|
|||||||
#include "backend/bool_command.hpp"
|
|
||||||
#include "memory/byte_patch.hpp"
|
|
||||||
#include "pointers.hpp"
|
|
||||||
|
|
||||||
namespace big
|
|
||||||
{
|
|
||||||
class window_hook : bool_command
|
|
||||||
{
|
|
||||||
using bool_command::bool_command;
|
|
||||||
|
|
||||||
virtual void refresh() override
|
|
||||||
{
|
|
||||||
static auto& window_hook_patch = memory::byte_patch::make(g_pointers->m_gta.m_window_hook.as<void*>(), std::to_array({0xC3, 0x90, 0x90, 0x90}));
|
|
||||||
|
|
||||||
if (m_toggle)
|
|
||||||
{
|
|
||||||
window_hook_patch->apply();
|
|
||||||
UnhookWindowsHookEx(*g_pointers->m_gta.m_window_hook.add(45).rip().as<HHOOK*>());
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
SetWindowsHookExA(13, g_pointers->m_gta.m_window_hook.add(18).rip().as<HOOKPROC>(), GetModuleHandleA("GTA5.exe"), 0);
|
|
||||||
window_hook_patch->restore();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
window_hook g_window_hook("windowhook", "BACKEND_GTA_WINDOW_HOOK", "BACKEND_GTA_WINDOW_HOOK_DESC", g.debug.window_hook);
|
|
||||||
}
|
|
@ -64,8 +64,6 @@ namespace big
|
|||||||
|
|
||||||
memory::handle m_crash_trigger;
|
memory::handle m_crash_trigger;
|
||||||
|
|
||||||
memory::handle m_window_hook;
|
|
||||||
|
|
||||||
memory::handle m_script_vm_patch_1;
|
memory::handle m_script_vm_patch_1;
|
||||||
memory::handle m_script_vm_patch_2;
|
memory::handle m_script_vm_patch_2;
|
||||||
memory::handle m_script_vm_patch_3;
|
memory::handle m_script_vm_patch_3;
|
||||||
@ -396,8 +394,6 @@ namespace big
|
|||||||
|
|
||||||
std::uint32_t* m_object_ids_offset;
|
std::uint32_t* m_object_ids_offset;
|
||||||
|
|
||||||
PVOID m_error_packet_memmove;
|
|
||||||
|
|
||||||
PVOID m_create_pool_item;
|
PVOID m_create_pool_item;
|
||||||
|
|
||||||
PVOID m_scope_sway_function;
|
PVOID m_scope_sway_function;
|
||||||
|
@ -6,8 +6,7 @@ namespace big
|
|||||||
{
|
{
|
||||||
hooking::hooking() :
|
hooking::hooking() :
|
||||||
m_swapchain_hook(*g_pointers->m_gta.m_swapchain, hooks::swapchain_num_funcs),
|
m_swapchain_hook(*g_pointers->m_gta.m_swapchain, hooks::swapchain_num_funcs),
|
||||||
m_sync_data_reader_hook(g_pointers->m_gta.m_sync_data_reader_vtable, 27),
|
m_sync_data_reader_hook(g_pointers->m_gta.m_sync_data_reader_vtable, 27)
|
||||||
m_error_packet_memmove_hook(g_pointers->m_gta.m_error_packet_memmove, hooks::error_packet_memmove)
|
|
||||||
{
|
{
|
||||||
m_swapchain_hook.hook(hooks::swapchain_present_index, &hooks::swapchain_present);
|
m_swapchain_hook.hook(hooks::swapchain_present_index, &hooks::swapchain_present);
|
||||||
m_swapchain_hook.hook(hooks::swapchain_resizebuffers_index, &hooks::swapchain_resizebuffers);
|
m_swapchain_hook.hook(hooks::swapchain_resizebuffers_index, &hooks::swapchain_resizebuffers);
|
||||||
@ -177,7 +176,6 @@ namespace big
|
|||||||
{
|
{
|
||||||
m_swapchain_hook.enable();
|
m_swapchain_hook.enable();
|
||||||
m_sync_data_reader_hook.enable();
|
m_sync_data_reader_hook.enable();
|
||||||
m_error_packet_memmove_hook.enable();
|
|
||||||
m_og_wndproc = WNDPROC(SetWindowLongPtrW(g_pointers->m_hwnd, GWLP_WNDPROC, LONG_PTR(&hooks::wndproc)));
|
m_og_wndproc = WNDPROC(SetWindowLongPtrW(g_pointers->m_hwnd, GWLP_WNDPROC, LONG_PTR(&hooks::wndproc)));
|
||||||
|
|
||||||
for (auto& detour_hook_helper : m_detour_hook_helpers)
|
for (auto& detour_hook_helper : m_detour_hook_helpers)
|
||||||
@ -200,7 +198,6 @@ namespace big
|
|||||||
}
|
}
|
||||||
|
|
||||||
SetWindowLongPtrW(g_pointers->m_hwnd, GWLP_WNDPROC, reinterpret_cast<LONG_PTR>(m_og_wndproc));
|
SetWindowLongPtrW(g_pointers->m_hwnd, GWLP_WNDPROC, reinterpret_cast<LONG_PTR>(m_og_wndproc));
|
||||||
m_error_packet_memmove_hook.disable();
|
|
||||||
m_sync_data_reader_hook.disable();
|
m_sync_data_reader_hook.disable();
|
||||||
m_swapchain_hook.disable();
|
m_swapchain_hook.disable();
|
||||||
|
|
||||||
|
@ -210,8 +210,6 @@ namespace big
|
|||||||
static std::uint32_t get_dlc_hash(void* mgr, std::uint32_t seed);
|
static std::uint32_t get_dlc_hash(void* mgr, std::uint32_t seed);
|
||||||
static bool add_gamer_to_session(rage::netConnectionManager* mgr, std::uint32_t msg_id, int* req_id, RemoteGamerInfoMsg* info, int flags, void* a6);
|
static bool add_gamer_to_session(rage::netConnectionManager* mgr, std::uint32_t msg_id, int* req_id, RemoteGamerInfoMsg* info, int flags, void* a6);
|
||||||
|
|
||||||
static void error_packet_memmove(void* dst, void* src, int size);
|
|
||||||
|
|
||||||
static void* create_pool_item(GenericPool* pool);
|
static void* create_pool_item(GenericPool* pool);
|
||||||
|
|
||||||
static uint32_t network_can_access_multiplayer(uint32_t a1, uint64_t* a2);
|
static uint32_t network_can_access_multiplayer(uint32_t a1, uint64_t* a2);
|
||||||
@ -305,8 +303,6 @@ namespace big
|
|||||||
vmt_hook m_swapchain_hook;
|
vmt_hook m_swapchain_hook;
|
||||||
vtable_hook m_sync_data_reader_hook;
|
vtable_hook m_sync_data_reader_hook;
|
||||||
|
|
||||||
call_hook m_error_packet_memmove_hook;
|
|
||||||
|
|
||||||
WNDPROC m_og_wndproc = nullptr;
|
WNDPROC m_og_wndproc = nullptr;
|
||||||
|
|
||||||
static inline std::vector<detour_hook_helper> m_detour_hook_helpers;
|
static inline std::vector<detour_hook_helper> m_detour_hook_helpers;
|
||||||
|
@ -1,19 +0,0 @@
|
|||||||
#include "hooking/hooking.hpp"
|
|
||||||
|
|
||||||
namespace big
|
|
||||||
{
|
|
||||||
void hooks::error_packet_memmove(void* dst, void* src, int size)
|
|
||||||
{
|
|
||||||
if (!src || !dst) [[unlikely]]
|
|
||||||
return;
|
|
||||||
|
|
||||||
// remote crash
|
|
||||||
if (size > 0x80) [[unlikely]]
|
|
||||||
{
|
|
||||||
LOG(INFO) << "remote crash blocked";
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
return g_hooking->m_error_packet_memmove_hook.get_original<decltype(&hooks::error_packet_memmove)>()(dst, src, size);
|
|
||||||
}
|
|
||||||
}
|
|
@ -582,17 +582,15 @@ namespace big
|
|||||||
g_pointers->m_gta.m_start_get_session_by_gamer_handle = ptr.add(1).rip().as<functions::start_get_session_by_gamer_handle>();
|
g_pointers->m_gta.m_start_get_session_by_gamer_handle = ptr.add(1).rip().as<functions::start_get_session_by_gamer_handle>();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
#if 0
|
|
||||||
// Start Matchmaking Find Sessions
|
// Start Matchmaking Find Sessions
|
||||||
{
|
{
|
||||||
"SMFS",
|
"SMFS",
|
||||||
"83 ? ? ? ? E8 ? ? ? ? 84 C0 0F 84 ? ? ? ? C7",
|
"4C 8D 83 AC 10 00 00",
|
||||||
[](memory::handle ptr)
|
[](memory::handle ptr)
|
||||||
{
|
{
|
||||||
g_pointers->m_gta.m_start_matchmaking_find_sessions = ptr.add(6).rip().as<functions::start_matchmaking_find_sessions>();
|
g_pointers->m_gta.m_start_matchmaking_find_sessions = ptr.add(8).rip().add(1).rip().as<functions::start_matchmaking_find_sessions>();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
#endif
|
|
||||||
// Join Session By Info
|
// Join Session By Info
|
||||||
{
|
{
|
||||||
"JSBI",
|
"JSBI",
|
||||||
@ -695,7 +693,7 @@ namespace big
|
|||||||
// Handle Join Request
|
// Handle Join Request
|
||||||
{
|
{
|
||||||
"HJR",
|
"HJR",
|
||||||
"48 8B C4 48 89 58 08 4C 89 48 20 4C 89 40 18 48 89 50 10 55 56 57 41 54 41 55 41 56 41 57 48 8D A8 ? ? ? ? 48 81 EC ? ? ? ? 45 33 F6",
|
"48 8B C4 48 89 58 08 4C 89 48 20 4C 89 40 18 48 89 50 10 55 56 57 41 54 41 55 41 56 41 57 48 8D A8 A8",
|
||||||
[](memory::handle ptr)
|
[](memory::handle ptr)
|
||||||
{
|
{
|
||||||
g_pointers->m_gta.m_handle_join_request = ptr.as<PVOID>();
|
g_pointers->m_gta.m_handle_join_request = ptr.as<PVOID>();
|
||||||
@ -704,7 +702,7 @@ namespace big
|
|||||||
// Write Join Response Data
|
// Write Join Response Data
|
||||||
{
|
{
|
||||||
"WJRD",
|
"WJRD",
|
||||||
"E8 ? ? ? ? 84 C0 74 07 40 84 FF 41 0F 95 C6",
|
"E8 ? ? ? ? 41 8B DF 84 C0 74 06",
|
||||||
[](memory::handle ptr)
|
[](memory::handle ptr)
|
||||||
{
|
{
|
||||||
g_pointers->m_gta.m_write_join_response_data = ptr.add(1).rip().as<functions::write_join_response_data>();
|
g_pointers->m_gta.m_write_join_response_data = ptr.add(1).rip().as<functions::write_join_response_data>();
|
||||||
@ -740,7 +738,7 @@ namespace big
|
|||||||
// Serialize Join Request Message
|
// Serialize Join Request Message
|
||||||
{
|
{
|
||||||
"SJRM",
|
"SJRM",
|
||||||
"E8 ? ? ? ? 84 C0 0F 84 9B 00 00 00 49 8D 8F 48 11 00 00",
|
"E8 ? ? ? ? 84 C0 0F 84 9B 00 00 00 49 8D 8F 50 11 00 00",
|
||||||
[](memory::handle ptr)
|
[](memory::handle ptr)
|
||||||
{
|
{
|
||||||
g_pointers->m_gta.m_serialize_join_request_message = ptr.add(1).rip().as<PVOID>();
|
g_pointers->m_gta.m_serialize_join_request_message = ptr.add(1).rip().as<PVOID>();
|
||||||
@ -776,7 +774,7 @@ namespace big
|
|||||||
// Request Control
|
// Request Control
|
||||||
{
|
{
|
||||||
"RC",
|
"RC",
|
||||||
"E8 ? ? ? ? EB 3E 48 8B D3",
|
"E8 ? ? ? ? EB 50 48 8B D3",
|
||||||
[](memory::handle ptr)
|
[](memory::handle ptr)
|
||||||
{
|
{
|
||||||
g_pointers->m_gta.m_request_control = ptr.add(1).rip().as<functions::request_control>();
|
g_pointers->m_gta.m_request_control = ptr.add(1).rip().as<functions::request_control>();
|
||||||
@ -803,7 +801,7 @@ namespace big
|
|||||||
// Handle Remove Gamer Command
|
// Handle Remove Gamer Command
|
||||||
{
|
{
|
||||||
"HRGC",
|
"HRGC",
|
||||||
"74 74 33 FF",
|
"74 74 33 FF 45 33 F6",
|
||||||
[](memory::handle ptr)
|
[](memory::handle ptr)
|
||||||
{
|
{
|
||||||
g_pointers->m_gta.m_handle_remove_gamer_cmd = ptr.sub(0x3B).as<functions::handle_remove_gamer_cmd>();
|
g_pointers->m_gta.m_handle_remove_gamer_cmd = ptr.sub(0x3B).as<functions::handle_remove_gamer_cmd>();
|
||||||
@ -857,7 +855,7 @@ namespace big
|
|||||||
// Invalid Decal Crash
|
// Invalid Decal Crash
|
||||||
{
|
{
|
||||||
"IDC",
|
"IDC",
|
||||||
"E8 ? ? ? ? 8B 9C 24 B8 00 00 00 4C 8B AC 24 A8 00 00 00",
|
"E8 ? ? ? ? 8B AC 24 D0 00 00 00 48 8B 4C 24 38",
|
||||||
[](memory::handle ptr)
|
[](memory::handle ptr)
|
||||||
{
|
{
|
||||||
g_pointers->m_gta.m_invalid_decal_crash = ptr.add(1).rip().as<PVOID>();
|
g_pointers->m_gta.m_invalid_decal_crash = ptr.add(1).rip().as<PVOID>();
|
||||||
@ -983,7 +981,7 @@ namespace big
|
|||||||
// Prepare Metric For Sending
|
// Prepare Metric For Sending
|
||||||
{
|
{
|
||||||
"PMFS",
|
"PMFS",
|
||||||
"48 8B C4 48 89 58 08 48 89 68 10 48 89 70 18 48 89 78 20 41 56 48 83 EC 30 49 8B E8 4C 8D 40 EC 49 8B F1 48 8B D9 40 32 FF E8",
|
"48 8B C4 48 89 58 08 48 89 68 10 48 89 70 18 48 89 78 20 41 56 48 83 EC 30 49 8B F0 4C",
|
||||||
[](memory::handle ptr)
|
[](memory::handle ptr)
|
||||||
{
|
{
|
||||||
g_pointers->m_gta.m_prepare_metric_for_sending = ptr.as<PVOID>();
|
g_pointers->m_gta.m_prepare_metric_for_sending = ptr.as<PVOID>();
|
||||||
@ -1201,7 +1199,7 @@ namespace big
|
|||||||
// NetFilter Handle Message
|
// NetFilter Handle Message
|
||||||
{
|
{
|
||||||
"NHM",
|
"NHM",
|
||||||
"EB 2E 49 8D 82 ? ? ? ? 4C",
|
"EB 34 48 8D 81 ? ? ? ? 4C",
|
||||||
[](memory::handle ptr)
|
[](memory::handle ptr)
|
||||||
{
|
{
|
||||||
g_pointers->m_gta.m_netfilter_handle_message = ptr.sub(4).rip().as<PVOID>();
|
g_pointers->m_gta.m_netfilter_handle_message = ptr.sub(4).rip().as<PVOID>();
|
||||||
@ -1229,7 +1227,7 @@ namespace big
|
|||||||
// Get Host Array Handler By Index
|
// Get Host Array Handler By Index
|
||||||
{
|
{
|
||||||
"GHAHBI",
|
"GHAHBI",
|
||||||
"48 89 5C 24 08 48 89 6C 24 10 48 89 74 24 18 57 48 83 EC 20 8A 81 8F",
|
"48 89 5C 24 08 48 89 6C 24 10 48 89 74 24 18 57 48 83 EC 20 8A 81 97",
|
||||||
[](memory::handle ptr)
|
[](memory::handle ptr)
|
||||||
{
|
{
|
||||||
g_pointers->m_gta.m_get_host_array_handler_by_index = ptr.as<functions::get_host_array_handler_by_index>();
|
g_pointers->m_gta.m_get_host_array_handler_by_index = ptr.as<functions::get_host_array_handler_by_index>();
|
||||||
@ -1442,7 +1440,7 @@ namespace big
|
|||||||
// Blame Explode
|
// Blame Explode
|
||||||
{
|
{
|
||||||
"BE",
|
"BE",
|
||||||
"0F 85 ? ? ? ? 48 8B 05 ? ? ? ? 48 8B 48 08 E8",
|
"0F 85 EE 00 00 00 84 C0",
|
||||||
[](memory::handle ptr)
|
[](memory::handle ptr)
|
||||||
{
|
{
|
||||||
g_pointers->m_gta.m_blame_explode = ptr;
|
g_pointers->m_gta.m_blame_explode = ptr;
|
||||||
@ -1569,15 +1567,6 @@ namespace big
|
|||||||
g_pointers->m_gta.m_get_title_caption_error_message_box = ptr.add(1).rip().as<functions::get_title_caption_error_message_box>();
|
g_pointers->m_gta.m_get_title_caption_error_message_box = ptr.add(1).rip().as<functions::get_title_caption_error_message_box>();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// Disable Window Hook
|
|
||||||
{
|
|
||||||
"DT",
|
|
||||||
"48 83 EC 28 33 C9 FF 15 ? ? ? ? 45 33 C9",
|
|
||||||
[](memory::handle ptr)
|
|
||||||
{
|
|
||||||
g_pointers->m_gta.m_window_hook = ptr;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
// Vehicle Metadata Manager.
|
// Vehicle Metadata Manager.
|
||||||
{
|
{
|
||||||
"VEHMMGR",
|
"VEHMMGR",
|
||||||
@ -1819,10 +1808,10 @@ namespace big
|
|||||||
// Session Request Patch
|
// Session Request Patch
|
||||||
{
|
{
|
||||||
"SRP",
|
"SRP",
|
||||||
"48 8B 9D 70 01 00 00 E9 FF 00 00 00",
|
"45 38 BE 48 B7 00 00 0F 85 F6 00 00 00",
|
||||||
[](memory::handle ptr)
|
[](memory::handle ptr)
|
||||||
{
|
{
|
||||||
g_pointers->m_gta.m_session_request_patch = ptr.add(0x13).as<PVOID>();
|
g_pointers->m_gta.m_session_request_patch = ptr.add(0x14).as<PVOID>();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// Get Peer By Security Id
|
// Get Peer By Security Id
|
||||||
@ -1846,7 +1835,7 @@ namespace big
|
|||||||
// Get DLC Hash
|
// Get DLC Hash
|
||||||
{
|
{
|
||||||
"GDLCH",
|
"GDLCH",
|
||||||
"74 0B 41 BC 10",
|
"74 0B 41 BF 10",
|
||||||
[](memory::handle ptr)
|
[](memory::handle ptr)
|
||||||
{
|
{
|
||||||
g_pointers->m_gta.m_dlc_manager = ptr.sub(0x11).rip().as<void**>();
|
g_pointers->m_gta.m_dlc_manager = ptr.sub(0x11).rip().as<void**>();
|
||||||
@ -1880,15 +1869,6 @@ namespace big
|
|||||||
g_pointers->m_gta.m_object_ids_offset = ptr.add(0xF).as<std::uint32_t*>();
|
g_pointers->m_gta.m_object_ids_offset = ptr.add(0xF).as<std::uint32_t*>();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// Error Packet Memmove
|
|
||||||
{
|
|
||||||
"EPM",
|
|
||||||
"49 8D 4C 24 60 44 8B C0 E8",
|
|
||||||
[](memory::handle ptr)
|
|
||||||
{
|
|
||||||
g_pointers->m_gta.m_error_packet_memmove = ptr.add(0x8).as<PVOID>();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
// Create Pool Item
|
// Create Pool Item
|
||||||
{
|
{
|
||||||
"CPI",
|
"CPI",
|
||||||
@ -1983,7 +1963,7 @@ namespace big
|
|||||||
// Network Can Access Multiplayer
|
// Network Can Access Multiplayer
|
||||||
{
|
{
|
||||||
"NCAM",
|
"NCAM",
|
||||||
"E9 26 01 00 00 33 D2 8B CB",
|
"E9 36 01 00 00 33 D2 8B CB",
|
||||||
[](memory::handle ptr)
|
[](memory::handle ptr)
|
||||||
{
|
{
|
||||||
g_pointers->m_gta.m_network_can_access_multiplayer = ptr.add(10).rip().as<PVOID>();
|
g_pointers->m_gta.m_network_can_access_multiplayer = ptr.add(10).rip().as<PVOID>();
|
||||||
@ -2108,9 +2088,6 @@ namespace big
|
|||||||
|
|
||||||
const auto mem_region = memory::module("GTA5.exe");
|
const auto mem_region = memory::module("GTA5.exe");
|
||||||
|
|
||||||
// TODO: this is far from ideal, but it is impossible to find a signature for this anymore
|
|
||||||
g_pointers->m_gta.m_start_matchmaking_find_sessions = mem_region.begin().add(0x148626C).as<functions::start_matchmaking_find_sessions>();
|
|
||||||
|
|
||||||
constexpr auto gta_batch_and_hash = pointers::get_gta_batch();
|
constexpr auto gta_batch_and_hash = pointers::get_gta_batch();
|
||||||
constexpr cstxpr_str gta_batch_name{"GTA5"};
|
constexpr cstxpr_str gta_batch_name{"GTA5"};
|
||||||
write_to_cache_or_read_from_cache<gta_batch_name,
|
write_to_cache_or_read_from_cache<gta_batch_name,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user