mirror of
https://github.com/Mr-X-GTA/YimMenu.git
synced 2024-12-22 20:17:24 +08:00
feat(Metric): Reimplementing metrics (#778)
This commit is contained in:
parent
37bc755f8b
commit
640cf9a83d
@ -3,7 +3,7 @@ include(FetchContent)
|
||||
FetchContent_Declare(
|
||||
gtav_classes
|
||||
GIT_REPOSITORY https://github.com/Yimura/GTAV-Classes.git
|
||||
GIT_TAG 5ab30af647d7e64404d76ea6168e7f78f5e365af
|
||||
GIT_TAG 985d0dcc4042ffb24dcb18c34ad5f42b10232510
|
||||
GIT_PROGRESS TRUE
|
||||
CONFIGURE_COMMAND ""
|
||||
BUILD_COMMAND ""
|
||||
|
@ -99,6 +99,7 @@ namespace big
|
||||
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);
|
||||
detour_hook_helper::add<hooks::prepare_metric_for_sending>("PMFS", g_pointers->m_prepare_metric_for_sending);
|
||||
|
||||
g_hooking = this;
|
||||
}
|
||||
|
@ -33,6 +33,7 @@ namespace rage
|
||||
class rlGamerHandle;
|
||||
class netConnectionManager;
|
||||
class datBitBuffer;
|
||||
class rlMetric;
|
||||
|
||||
namespace netConnection
|
||||
{
|
||||
@ -136,6 +137,7 @@ namespace big
|
||||
|
||||
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);
|
||||
static void prepare_metric_for_sending(rage::datBitBuffer* bit_buffer, int unk, int time, rage::rlMetric* metric);
|
||||
};
|
||||
|
||||
class minhook_keepalive
|
||||
|
46
src/hooks/info/prepare_metric_for_sending.cpp
Normal file
46
src/hooks/info/prepare_metric_for_sending.cpp
Normal file
@ -0,0 +1,46 @@
|
||||
#include "hooking.hpp"
|
||||
#include "rage/rlMetric.hpp"
|
||||
|
||||
namespace big
|
||||
{
|
||||
#pragma pack(push, 1)
|
||||
class json_serializer
|
||||
{
|
||||
uint32_t unk0; // 0x00
|
||||
uint32_t unk1; // 0x00
|
||||
char* buffer; // 0x08
|
||||
uint32_t curlen; // 0x10
|
||||
uint32_t maxlen; // 0x14
|
||||
uint32_t unk4; // 0x18
|
||||
uint8_t flags; // 0x1C
|
||||
|
||||
public:
|
||||
json_serializer(char* _buffer, uint32_t _length) :
|
||||
buffer(_buffer),
|
||||
maxlen(_length)
|
||||
{
|
||||
unk0 = 0;
|
||||
unk1 = 0;
|
||||
curlen = 0;
|
||||
unk4 = 1;
|
||||
flags = 0;
|
||||
}
|
||||
|
||||
inline char* get_string() const
|
||||
{
|
||||
return buffer;
|
||||
}
|
||||
};
|
||||
static_assert(sizeof(json_serializer) == 0x1D); // size is actually 0x20
|
||||
#pragma pack(pop)
|
||||
|
||||
void hooks::prepare_metric_for_sending(rage::datBitBuffer* bit_buffer, int unk, int time, rage::rlMetric* metric)
|
||||
{
|
||||
char buffer[256]{};
|
||||
json_serializer serializer(buffer, sizeof(buffer));
|
||||
|
||||
metric->serialize(&serializer);
|
||||
|
||||
LOG(INFO) << "METRIC: " << metric->get_name() << "; DATA: " << serializer.get_string();
|
||||
}
|
||||
}
|
@ -774,6 +774,12 @@ namespace big
|
||||
memory::byte_patch::make(ptr.add(13).as<void*>(), bytes)->apply();
|
||||
});
|
||||
|
||||
// Metric
|
||||
main_batch.add("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", [this](memory::handle ptr)
|
||||
{
|
||||
m_prepare_metric_for_sending = ptr.as<PVOID>();
|
||||
});
|
||||
|
||||
auto mem_region = memory::module("GTA5.exe");
|
||||
main_batch.run(mem_region);
|
||||
|
||||
|
@ -201,6 +201,7 @@ namespace big
|
||||
memory::byte_patch* m_broadcast_patch;
|
||||
|
||||
rage::atSingleton<rage::RageSecurity>* m_security;
|
||||
PVOID m_prepare_metric_for_sending;
|
||||
|
||||
PVOID m_queue_dependency;
|
||||
PVOID m_interval_check_func;
|
||||
|
Loading…
Reference in New Issue
Block a user