feat(Protection): fragment physics crash (#806)
Patch made by @SkiddyToast
This commit is contained in:
parent
b77e09065c
commit
858b4d6b9f
@ -101,6 +101,9 @@ namespace big
|
|||||||
detour_hook_helper::add<hooks::queue_dependency>("QD", g_pointers->m_queue_dependency);
|
detour_hook_helper::add<hooks::queue_dependency>("QD", g_pointers->m_queue_dependency);
|
||||||
detour_hook_helper::add<hooks::prepare_metric_for_sending>("PMFS", g_pointers->m_prepare_metric_for_sending);
|
detour_hook_helper::add<hooks::prepare_metric_for_sending>("PMFS", g_pointers->m_prepare_metric_for_sending);
|
||||||
|
|
||||||
|
detour_hook_helper::add<hooks::fragment_physics_crash>("FPC", g_pointers->m_fragment_physics_crash);
|
||||||
|
detour_hook_helper::add<hooks::fragment_physics_crash_2>("FPC2", g_pointers->m_fragment_physics_crash_2);
|
||||||
|
|
||||||
g_hooking = this;
|
g_hooking = this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -66,6 +66,9 @@ namespace big
|
|||||||
static void network_player_mgr_init(CNetworkPlayerMgr* _this, std::uint64_t a2, std::uint32_t a3, std::uint32_t a4[4]);
|
static void network_player_mgr_init(CNetworkPlayerMgr* _this, std::uint64_t a2, std::uint32_t a3, std::uint32_t a4[4]);
|
||||||
static void network_player_mgr_shutdown(CNetworkPlayerMgr* _this);
|
static void network_player_mgr_shutdown(CNetworkPlayerMgr* _this);
|
||||||
|
|
||||||
|
static bool fragment_physics_crash(uintptr_t a1, uint32_t a2, uintptr_t a3, uintptr_t a4, uintptr_t a5);
|
||||||
|
static bool fragment_physics_crash_2(float* a1, float* a2);
|
||||||
|
|
||||||
static void received_event(
|
static void received_event(
|
||||||
rage::netEventMgr* event_manager,
|
rage::netEventMgr* event_manager,
|
||||||
CNetGamePlayer* source_player,
|
CNetGamePlayer* source_player,
|
||||||
|
21
src/hooks/protections/fragment_physics_crash.cpp
Normal file
21
src/hooks/protections/fragment_physics_crash.cpp
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
#include "hooking.hpp"
|
||||||
|
|
||||||
|
namespace big
|
||||||
|
{
|
||||||
|
bool hooks::fragment_physics_crash(uintptr_t a1, uint32_t a2, uintptr_t a3, uintptr_t a4, uintptr_t a5)
|
||||||
|
{
|
||||||
|
if (auto ptr = *reinterpret_cast<uintptr_t*>(a5 + 0x70); ptr)
|
||||||
|
if (auto ptr2 = *reinterpret_cast<uintptr_t*>(ptr + 8 * a2); !ptr2)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return g_hooking->get_original<hooks::fragment_physics_crash>()(a1, a2, a3, a4, a5);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool hooks::fragment_physics_crash_2(float* a1, float* a2)
|
||||||
|
{
|
||||||
|
if (!a1 || !a2)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return g_hooking->get_original<hooks::fragment_physics_crash_2>()(a1, a2);
|
||||||
|
}
|
||||||
|
}
|
@ -780,6 +780,18 @@ namespace big
|
|||||||
m_prepare_metric_for_sending = ptr.as<PVOID>();
|
m_prepare_metric_for_sending = ptr.as<PVOID>();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Fragment Physics Crash
|
||||||
|
main_batch.add("FPC", "E8 ? ? ? ? 44 8B 4D 1C", [this](memory::handle ptr)
|
||||||
|
{
|
||||||
|
m_fragment_physics_crash = ptr.add(1).rip().as<PVOID>();
|
||||||
|
});
|
||||||
|
|
||||||
|
// Fragment Physics Crash 2
|
||||||
|
main_batch.add("FPC2", "E8 ? ? ? ? 84 C0 75 0B 41 FF CF", [this](memory::handle ptr)
|
||||||
|
{
|
||||||
|
m_fragment_physics_crash_2 = ptr.add(1).rip().as<PVOID>();
|
||||||
|
});
|
||||||
|
|
||||||
auto mem_region = memory::module("GTA5.exe");
|
auto mem_region = memory::module("GTA5.exe");
|
||||||
main_batch.run(mem_region);
|
main_batch.run(mem_region);
|
||||||
|
|
||||||
|
@ -227,6 +227,10 @@ namespace big
|
|||||||
functions::sync_network_time m_sync_network_time;
|
functions::sync_network_time m_sync_network_time;
|
||||||
|
|
||||||
rage::rlGamerInfo* m_chat_gamer_info;
|
rage::rlGamerInfo* m_chat_gamer_info;
|
||||||
|
|
||||||
|
PVOID m_fragment_physics_crash;
|
||||||
|
PVOID m_fragment_physics_crash_2;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
inline pointers* g_pointers{};
|
inline pointers* g_pointers{};
|
||||||
|
Reference in New Issue
Block a user