feat(Protection): Add bypass for rare report metric (#715)

This commit is contained in:
Yimura 2022-12-18 01:00:04 +01:00 committed by GitHub
parent 551c165367
commit 4041370763
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 40 additions and 3 deletions

View File

@ -97,6 +97,8 @@ namespace big
detour_hook_helper::add<hooks::write_bitbuffer_gamer_handle>("WBGH", g_pointers->m_write_bitbuffer_gamer_handle);
detour_hook_helper::add<hooks::read_bitbuffer_gamer_handle>("RBGH", g_pointers->m_read_bitbuffer_gamer_handle);
detour_hook_helper::add<hooks::queue_dependency>("QD", g_pointers->m_queue_dependency);
g_hooking = this;
}

View File

@ -134,6 +134,7 @@ namespace big
static bool read_bitbuffer_gamer_handle(rage::datBitBuffer* buffer, rage::rlGamerHandle* handle);
static int nt_query_virtual_memory(void* _this, HANDLE handle, PVOID base_addr, int info_class, MEMORY_BASIC_INFORMATION* info, int size, size_t* return_len);
static void queue_dependency(void* dependency);
};
class minhook_keepalive

View File

@ -0,0 +1,17 @@
#include "hooking.hpp"
#include "pointers.hpp"
namespace big
{
void hooks::queue_dependency(void* dependency)
{
if (dependency == g_pointers->m_interval_check_func)
{
LOG(INFO) << "Prevent attempt to queue a report to R*.";
return;
}
return g_hooking->get_original<hooks::queue_dependency>()(dependency);
}
}

View File

@ -732,6 +732,18 @@ namespace big
m_save_json_data = ptr.as<functions::save_json_data>();
});
// Queue Dependency
main_batch.add("QD", "48 89 5C 24 ? 57 48 83 EC ? 0F B6 99", [this](memory::handle ptr)
{
m_queue_dependency = ptr.as<PVOID>();
});
// Interval Check Function
main_batch.add("ICF", "48 8D 0D ? ? ? ? 88 05 ? ? ? ? 48 8D 05", [this](memory::handle ptr)
{
m_interval_check_func = ptr.add(3).rip().as<PVOID>();
});
auto mem_region = memory::module("GTA5.exe");
main_batch.run(mem_region);

View File

@ -197,6 +197,9 @@ namespace big
memory::byte_patch* m_broadcast_patch;
rage::atSingleton<rage::RageSecurity>* m_security;
PVOID m_queue_dependency;
PVOID m_interval_check_func;
PVOID m_send_session_matchmaking_attributes;

View File

@ -18,10 +18,12 @@ namespace big
static ImColor health_red = ImColor(0.69f, 0.29f, 0.29f, 1.f);
void esp::draw_player(const player_ptr& plyr, ImDrawList* const draw_list) {
if (g->esp.hide_self && plyr->is_valid() && plyr->id() == g_player_service->get_self()->id() ||
!plyr->is_valid() ||
if (!plyr->is_valid() ||
!plyr->get_ped() ||
!plyr->get_ped()->m_navigation) return;
!plyr->get_ped()->m_navigation)
return;
if (g->esp.hide_self && plyr->is_valid() && plyr->id() == g_player_service->get_self()->id())
return;
auto& player_pos = *plyr->get_ped()->m_navigation->get_position();