feat(Hooking): Added hooks for report_cash_spawn & report_cheating
This commit is contained in:
parent
bce48acb36
commit
055dc25fc3
@ -35,4 +35,8 @@ namespace big::functions
|
|||||||
// Received Event Signatures END
|
// Received Event Signatures END
|
||||||
|
|
||||||
using spectate_player = bool(bool toggle, Ped player);
|
using spectate_player = bool(bool toggle, Ped player);
|
||||||
|
|
||||||
|
// Net Event Handlers
|
||||||
|
using report_cash_spawn = bool(__int64 creport_cash_spawn_event, CNetGamePlayer* source_player);
|
||||||
|
using report_cheating = void(__int64 a1, unsigned int a2, unsigned int a3, unsigned int a4);
|
||||||
}
|
}
|
||||||
|
@ -54,7 +54,12 @@ namespace big
|
|||||||
m_error_screen_hook("ES", g_pointers->m_error_screen, &hooks::disable_error_screen),
|
m_error_screen_hook("ES", g_pointers->m_error_screen, &hooks::disable_error_screen),
|
||||||
|
|
||||||
// Received Event
|
// Received Event
|
||||||
m_received_event_hook("RE", g_pointers->m_received_event, &hooks::received_event)
|
m_received_event_hook("RE", g_pointers->m_received_event, &hooks::received_event),
|
||||||
|
|
||||||
|
// Report Cash Spawn Event
|
||||||
|
m_report_cash_spawn_event_hook("RCSE", g_pointers->m_report_cash_spawn, &hooks::report_cash_spawn_handler),
|
||||||
|
// Report Cheating Hook
|
||||||
|
m_report_cheating_hook("RC", g_pointers->m_report_cheating, &hooks::report_cheating_handler)
|
||||||
{
|
{
|
||||||
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);
|
||||||
@ -88,6 +93,9 @@ namespace big
|
|||||||
|
|
||||||
m_received_event_hook.enable();
|
m_received_event_hook.enable();
|
||||||
|
|
||||||
|
m_report_cash_spawn_event_hook.enable();
|
||||||
|
m_report_cheating_hook.enable();
|
||||||
|
|
||||||
m_enabled = true;
|
m_enabled = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -95,6 +103,9 @@ namespace big
|
|||||||
{
|
{
|
||||||
m_enabled = false;
|
m_enabled = false;
|
||||||
|
|
||||||
|
m_report_cheating_hook.disable();
|
||||||
|
m_report_cash_spawn_event_hook.disable();
|
||||||
|
|
||||||
m_received_event_hook.disable();
|
m_received_event_hook.disable();
|
||||||
|
|
||||||
m_error_screen_hook.disable();
|
m_error_screen_hook.disable();
|
||||||
|
@ -40,6 +40,9 @@ namespace big
|
|||||||
int64_t bit_buffer_size,
|
int64_t bit_buffer_size,
|
||||||
int64_t bit_buffer
|
int64_t bit_buffer
|
||||||
);
|
);
|
||||||
|
|
||||||
|
static bool report_cash_spawn_handler(__int64 creport_cash_spawn_event, CNetGamePlayer* source_player);
|
||||||
|
static void report_cheating_handler(__int64 a1, unsigned int a2, unsigned int a3, unsigned int a4);
|
||||||
};
|
};
|
||||||
|
|
||||||
struct minhook_keepalive
|
struct minhook_keepalive
|
||||||
@ -77,6 +80,9 @@ namespace big
|
|||||||
detour_hook m_increment_stat_hook;
|
detour_hook m_increment_stat_hook;
|
||||||
|
|
||||||
detour_hook m_received_event_hook;
|
detour_hook m_received_event_hook;
|
||||||
|
|
||||||
|
detour_hook m_report_cash_spawn_event_hook;
|
||||||
|
detour_hook m_report_cheating_hook;
|
||||||
};
|
};
|
||||||
|
|
||||||
inline hooking *g_hooking{};
|
inline hooking *g_hooking{};
|
||||||
|
19
BigBaseV2/src/hooks/report_cash_spawn_handler.cpp
Normal file
19
BigBaseV2/src/hooks/report_cash_spawn_handler.cpp
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
#include "hooking.hpp"
|
||||||
|
#include "natives.hpp"
|
||||||
|
|
||||||
|
namespace big
|
||||||
|
{
|
||||||
|
bool hooks::report_cash_spawn_handler(__int64 creport_cash_spawn_event, CNetGamePlayer* source_player)
|
||||||
|
{
|
||||||
|
if (source_player->player_id == PLAYER::PLAYER_ID())
|
||||||
|
{
|
||||||
|
LOG(INFO) << "Blocked self report for spawning modded cash";
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
LOG(INFO) << "Reported " << source_player->get_name() << " for spawning modded cash.";
|
||||||
|
|
||||||
|
return g_hooking->m_report_cash_spawn_event_hook.get_original<decltype(&hooks::report_cash_spawn_handler)>()(creport_cash_spawn_event, source_player);
|
||||||
|
}
|
||||||
|
}
|
15
BigBaseV2/src/hooks/report_cheating_handler.cpp
Normal file
15
BigBaseV2/src/hooks/report_cheating_handler.cpp
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
#include "hooking.hpp"
|
||||||
|
#include "util/notify.hpp"
|
||||||
|
|
||||||
|
namespace big
|
||||||
|
{
|
||||||
|
void hooks::report_cheating_handler(__int64 a1, unsigned int a2, unsigned int a3, unsigned int a4)
|
||||||
|
{
|
||||||
|
LOG(INFO) << "Caught game trying to report self.";
|
||||||
|
notify::above_map("Game tried to snitch.");
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
//return g_hooking->m_report_cheating_hook.get_original<decltype(&hooks::report_cheating_handler)>()(a1, a2, a3, a4);
|
||||||
|
}
|
||||||
|
}
|
@ -90,36 +90,6 @@ namespace big
|
|||||||
m_native_return = ptr.add(0).as<PVOID>();
|
m_native_return = ptr.add(0).as<PVOID>();
|
||||||
});
|
});
|
||||||
|
|
||||||
// Event Registry
|
|
||||||
main_batch.add("ER", "48 83 EC 28 E8 ? ? ? ? 48 8B 0D ? ? ? ? 4C 8D 0D ? ? ? ? 4C 8D 05 ? ? ? ? BA 03", [this](memory::handle ptr)
|
|
||||||
{
|
|
||||||
m_event_register = ptr.as<char*>();
|
|
||||||
|
|
||||||
if (m_event_register)
|
|
||||||
{
|
|
||||||
const char* pattern = "\x4C\x8D\x05";
|
|
||||||
for (int i = 0, x = 0, found = 0, matches = 0; found < event_count; i++)
|
|
||||||
{
|
|
||||||
if (m_event_register[i] == pattern[x])
|
|
||||||
{
|
|
||||||
if (++matches == 3)
|
|
||||||
{
|
|
||||||
m_event_ptr.push_back((void*)(reinterpret_cast<uint64_t>(m_event_register + i - x) + *reinterpret_cast<int*>(m_event_register + i + 1) + 7));
|
|
||||||
|
|
||||||
found++;
|
|
||||||
x = matches = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
x++;
|
|
||||||
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
x = matches = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Incompatible Version Fix
|
// Incompatible Version Fix
|
||||||
main_batch.add("IVF", "48 89 5C 24 ? 55 56 57 41 54 41 55 41 56 41 57 48 8D AC 24 ? ? ? ? 48 81 EC ? ? ? ? 33 FF 48 8B DA", [this](memory::handle ptr)
|
main_batch.add("IVF", "48 89 5C 24 ? 55 56 57 41 54 41 55 41 56 41 57 48 8D AC 24 ? ? ? ? 48 81 EC ? ? ? ? 33 FF 48 8B DA", [this](memory::handle ptr)
|
||||||
{
|
{
|
||||||
@ -197,6 +167,18 @@ namespace big
|
|||||||
{
|
{
|
||||||
m_spectate_player = ptr.as<decltype(m_spectate_player)>();
|
m_spectate_player = ptr.as<decltype(m_spectate_player)>();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Report Cash Spawn Handler
|
||||||
|
main_batch.add("RCSH", "40 53 48 83 EC 20 48 8B D9 48 85 D2 74 29", [this](memory::handle ptr)
|
||||||
|
{
|
||||||
|
m_report_cash_spawn = ptr.as<decltype(m_report_cash_spawn)>();
|
||||||
|
});
|
||||||
|
|
||||||
|
// Report Myself Handler
|
||||||
|
main_batch.add("RMH", "E8 ? ? ? ? 41 8B 47 0C 39 43 20", [this](memory::handle ptr)
|
||||||
|
{
|
||||||
|
m_report_cheating = ptr.as<decltype(m_report_cheating)>();
|
||||||
|
});
|
||||||
|
|
||||||
main_batch.run(memory::module(nullptr));
|
main_batch.run(memory::module(nullptr));
|
||||||
|
|
||||||
|
@ -36,11 +36,6 @@ namespace big
|
|||||||
PVOID m_model_spawn_bypass;
|
PVOID m_model_spawn_bypass;
|
||||||
PVOID m_native_return;
|
PVOID m_native_return;
|
||||||
|
|
||||||
static const int event_count = 87;
|
|
||||||
std::vector<PVOID> m_event_ptr;
|
|
||||||
unsigned char m_event_restore[event_count];
|
|
||||||
char* m_event_register;
|
|
||||||
|
|
||||||
functions::error_screen* m_error_screen{};
|
functions::error_screen* m_error_screen{};
|
||||||
|
|
||||||
functions::gta_thread_tick* m_gta_thread_tick{};
|
functions::gta_thread_tick* m_gta_thread_tick{};
|
||||||
@ -58,6 +53,10 @@ namespace big
|
|||||||
// Received Event Signatures END
|
// Received Event Signatures END
|
||||||
|
|
||||||
functions::spectate_player* m_spectate_player{};
|
functions::spectate_player* m_spectate_player{};
|
||||||
|
|
||||||
|
// Net Event Handlers
|
||||||
|
functions::report_cash_spawn* m_report_cash_spawn{};
|
||||||
|
functions::report_cheating* m_report_cheating{};
|
||||||
};
|
};
|
||||||
|
|
||||||
inline pointers *g_pointers{};
|
inline pointers *g_pointers{};
|
||||||
|
Reference in New Issue
Block a user