GTA update

This commit is contained in:
Aaron Peapell 2021-04-07 13:19:30 +10:00
parent ac79a1b90a
commit 8b698efdf4
7 changed files with 81 additions and 116 deletions

View File

@ -23,32 +23,22 @@ namespace rage
class netPlayerData class netPlayerData
{ {
public: public:
char pad_0000[16]; //0x0000 char pad_0000[8]; //0x0000
uint32_t m_sec_key_time; //0x0010 int64_t m_rockstar_id_0; //0x0008
netAddress m_lan_ip; //0x0014 char pad_0010[56]; //0x0010
uint16_t m_lan_port; //0x0018 uint16_t N000005BF; //0x0048
char pad_001A[2]; //0x001A char pad_004A[2]; //0x004A
netAddress m_relay_ip; //0x001C netAddress m_online_ip; //0x0054
uint32_t m_relay_port; //0x0020 int16_t m_online_port; //0x0058
netAddress m_online_ip; //0x0024 netAddress m_relay_ip; //0x004C
uint16_t m_online_port; //0x0028 int32_t m_relay_port; //0x0050
char pad_002A[22]; //0x002A char pad_005A[6]; //0x005A
uint32_t m_host_token; //0x0040 uint32_t m_host_token; //0x0060
char pad_0044[12]; //0x0044 char pad_0064[12]; //0x0064
int64_t m_rockstar_id; //0x0050 int64_t m_rockstar_id; //0x0070
char pad_0058[12]; //0x0058 char pad_0078[12]; //0x0078
char m_name[20]; //0x0064 char m_name[20]; //0x0084
}; //Size: 0x0078 }; //Size: 0x0098
class nonPhysicalPlayerDataBase
{
public:
virtual ~nonPhysicalPlayerDataBase() = default; // 0 (0x00)
virtual void unk_0x08() = 0; // 1 (0x08)
virtual void unk_0x10() = 0; // 2 (0x10)
virtual void unk_0x18() = 0; // 3 (0x18)
virtual void log(netLoggingInterface* logger) = 0; // 4 (0x20)
};
class netPlayer class netPlayer
{ {
@ -63,6 +53,37 @@ namespace rage
virtual void _0x38() = 0; // 7 (0x38) virtual void _0x38() = 0; // 7 (0x38)
}; };
class nonPhysicalPlayerDataBase
{
public:
virtual ~nonPhysicalPlayerDataBase() = default; // 0 (0x00)
virtual void unk_0x08() = 0; // 1 (0x08)
virtual void unk_0x10() = 0; // 2 (0x10)
virtual void unk_0x18() = 0; // 3 (0x18)
virtual void log(netLoggingInterface* logger) = 0; // 4 (0x20)
};
class CNonPhysicalPlayerData : public nonPhysicalPlayerDataBase
{
};
class CNetGamePlayer : public rage::netPlayer
{
public:
char pad_0000[16-8]; //0x0000
CNonPhysicalPlayerData* non_physical_player_data; //0x0010
char pad_0018[9]; //0x0018
int8_t player_id; //0x0021
char pad_0022[15]; //0x0022
uint32_t packet_receiver_id; //0x0031
char pad_0035[84]; //0x0035
uint32_t bubble_id; //0x0089
char pad_008D[20]; //0x008D
CPlayerInfo* player_info; //0x00A1
char pad_00A9[24]; //0x00A9
int32_t m_player; //0x00C1
};
class netPlayerMgrBase class netPlayerMgrBase
{ {
public: public:
@ -71,71 +92,11 @@ namespace rage
class CNetworkPlayerMgr : netPlayerMgrBase class CNetworkPlayerMgr : netPlayerMgrBase
{ {
};
class CNonPhysicalPlayerData : public rage::nonPhysicalPlayerDataBase
{
public:
int32_t m_bubble_id; // 0x08
int32_t m_player_id; // 0x0C
rage::vector3 m_position; // 0x10
};
class CNetGamePlayer : public rage::netPlayer
{
public:
char pad_0008[45]; //0x0008
int8_t player_id; //0x0035
char pad_0036[122]; //0x0036
CPlayerInfo* player_info; //0x00B0
char pad_00B8[20]; //0x00B8
uint32_t bubble_id; //0x00CC
uint32_t player; //0x00D0
}; };
class CPlayerInfo : public rage::fwExtensibleBase class CPlayerInfo : public rage::fwExtensibleBase
{ {
public: };
char pad_0020[20]; //0x0020
uint32_t m_internal_ip; //0x0034
uint16_t m_internal_port; //0x0038
char pad_003A[2]; //0x003A
uint32_t m_relay_ip; //0x003C
uint16_t m_relay_port; //0x0040
char pad_0042[2]; //0x0042
uint32_t m_external_ip; //0x0044
uint16_t m_external_port; //0x0048
char pad_004A[38]; //0x004A
int64_t m_rockstar_id; //0x0070
char pad_0078[12]; //0x0078
char m_name[20]; //0x0084
char pad_0098[180]; //0x0098
float m_swim_speed; //0x014C
float m_run_speed; //0x0150
char pad_0154[81]; //0x0154
bool m_is_rockstar_dev; //0x01A5
char pad_01A6[1]; //0x01A6
bool m_is_cheater; //0x01A7
char pad_01A8[11]; //0x01A8
bool m_is_online; //0x01B3
char pad_01B4[20]; //0x01B4
class CPed* m_ped; //0x01C8
char pad_01D0[40]; //0x01D0
uint32_t m_frame_flags; //0x01F8
char pad_01FC[28]; //0x01FC
uint32_t m_player_controls; //0x0218
char pad_021C[1604]; //0x021C
bool m_is_wanted; //0x0860
char pad_0861[3]; //0x0861
int8_t m_wanted_level_display; //0x0864
char pad_0865[3]; //0x0865
int8_t m_wanted_level; //0x0868
}; //Size: 0x0869
static_assert(sizeof(CPlayerInfo) == 0x869);
static_assert(sizeof(CNonPhysicalPlayerData) == 0x1C);
} }
#pragma pack(pop) #pragma pack(pop)

View File

@ -8,7 +8,6 @@
// https://github.com/Sainan/GTA-V-Decompiled-Scripts // https://github.com/Sainan/GTA-V-Decompiled-Scripts
// //
// https://github.com/Pocakking/BigBaseV2 // https://github.com/Pocakking/BigBaseV2
// https://github.com/1337Nexo/BigBaseV2
// https://bitbucket.org/gir489/bigbasev2-fix/src/master/ // https://bitbucket.org/gir489/bigbasev2-fix/src/master/
// https://wiki.rage.mp/index.php?title=Category:Assets // https://wiki.rage.mp/index.php?title=Category:Assets
// https://github.com/MAFINS/MenyooSP // https://github.com/MAFINS/MenyooSP

View File

@ -229,7 +229,7 @@ namespace big::misc
//source is valid //source is valid
if (src != nullptr if (src != nullptr
//&& src->is_valid() //&& src->is_valid()
&& src->get_net_data()->m_rockstar_id != gta_util::get_local_playerinfo()->m_rockstar_id //&& src->get_net_data()->m_rockstar_id != gta_util::get_local_playerinfo()->m_rockstar_id
//&& src->get_net_data()->m_host_token > (1 << 16) //&& src->get_net_data()->m_host_token > (1 << 16)
//&& src->get_net_data()->m_online_port == 6672 //&& src->get_net_data()->m_online_port == 6672
) )

View File

@ -16,6 +16,7 @@
#include "gui/misc.h" #include "gui/misc.h"
#include "gui.hpp" #include "gui.hpp"
#include "gui/features.hpp" #include "gui/features.hpp"
#include "gui/natives_logging.hpp"
namespace big namespace big
{ {
@ -660,27 +661,27 @@ namespace big
} }
} }
static void buffer_int(rage::datBitBuffer* buffer, uint32_t* value, int32_t length, int32_t index) //static void buffer_int(rage::datBitBuffer* buffer, uint32_t* value, int32_t length, int32_t index)
{ //{
__try // __try
{ // {
g_hooking->m_buffer_int_hook.get_original<functions::buffer_int_t>()(buffer, value, length, index); // g_hooking->m_buffer_int_hook.get_original<functions::buffer_int_t>()(buffer, value, length, index);
if (big::features::protection && big::features::injected) // if (big::features::protection && big::features::injected)
{ // {
if (length == 32) // if (length == 32)
{ // {
misc::log_buff(LOG_BUFF, sync_type, sync_object_type, index, length, *value, false, "OK"); // misc::log_buff(LOG_BUFF, sync_type, sync_object_type, index, length, *value, false, "OK");
} // }
} // }
} // }
__except (EXCEPTION_EXECUTE_HANDLER) // __except (EXCEPTION_EXECUTE_HANDLER)
{ // {
features::sync++; // features::sync++;
misc::log_buff(LOG_EXCEPTION, sync_type, sync_object_type, index, length, 0, true, "BLOCKED_EXCEPTION"); // misc::log_buff(LOG_EXCEPTION, sync_type, sync_object_type, index, length, 0, true, "BLOCKED_EXCEPTION");
misc::block_user(sync_src, true); // misc::block_user(sync_src, true);
} // }
} //}
static GtaThread *find_script_thread(rage::joaat_t hash) static GtaThread *find_script_thread(rage::joaat_t hash)
{ {
@ -706,7 +707,7 @@ namespace big
m_clone_sync_hook("m_clone_sync_hook", g_pointers->m_clone_sync, &clone_sync), m_clone_sync_hook("m_clone_sync_hook", g_pointers->m_clone_sync, &clone_sync),
m_clone_remove_hook("m_clone_remove_hook", g_pointers->m_clone_remove, &clone_remove), m_clone_remove_hook("m_clone_remove_hook", g_pointers->m_clone_remove, &clone_remove),
m_clone_pack_hook("m_clone_pack_hook", g_pointers->m_clone_pack, &clone_pack), m_clone_pack_hook("m_clone_pack_hook", g_pointers->m_clone_pack, &clone_pack),
m_buffer_int_hook("m_buffer_int_hook", g_pointers->m_buffer_int, &buffer_int), //m_buffer_int_hook("m_buffer_int_hook", g_pointers->m_buffer_int, &buffer_int),
m_sync_can_apply_hook("netSyncTree_CanApplyToObject", g_pointers->m_sync_can_apply, &sync_can_apply), m_sync_can_apply_hook("netSyncTree_CanApplyToObject", g_pointers->m_sync_can_apply, &sync_can_apply),
m_sync_read_hook("netSyncTree_ReadFromBuffer", g_pointers->m_sync_read, &sync_read), m_sync_read_hook("netSyncTree_ReadFromBuffer", g_pointers->m_sync_read, &sync_read),
@ -769,6 +770,10 @@ namespace big
{ {
m_native.emplace(native.first, native.second); m_native.emplace(native.first, native.second);
} }
for (auto native : misc::natives_logging)
{
m_native.emplace(native.first, native.second);
}
for (auto hash : g_pointers->m_script_program_table->all_script()) for (auto hash : g_pointers->m_script_program_table->all_script())
{ {

View File

@ -62,7 +62,7 @@ namespace big
detour_hook m_script_event_hook; detour_hook m_script_event_hook;
//detour_hook m_game_invite_hook; //detour_hook m_game_invite_hook;
detour_hook m_buffer_int_hook; //detour_hook m_buffer_int_hook;
std::list<script_hook*> m_native_hook; std::list<script_hook*> m_native_hook;
std::unordered_map<rage::scrNativeHash, rage::scrNativeHandler> m_native; std::unordered_map<rage::scrNativeHash, rage::scrNativeHandler> m_native;

View File

@ -75,10 +75,10 @@ namespace big
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
main_batch.add("_netBuffer_ReadUnsigned", "41 83 E1 07 45 8B D8 49 C1 FA 03 BB 08 00 00 00", [this](memory::handle ptr) //main_batch.add("_netBuffer_ReadUnsigned", "41 83 E1 07 45 8B D8 49 C1 FA 03 BB 08 00 00 00", [this](memory::handle ptr)
{ //{
m_buffer_int = ptr.sub(0x12).as<functions::buffer_int_t>(); // m_buffer_int = ptr.sub(0x12).as<functions::buffer_int_t>();
}); //});
main_batch.add("m_clone_pack", "48 89 5c 24 ? 48 89 6c 24 ? 48 89 74 24 ? 57 48 83 ec ? 48 8b f9 48 8b ca 49 8b e9", [this](memory::handle ptr) main_batch.add("m_clone_pack", "48 89 5c 24 ? 48 89 6c 24 ? 48 89 74 24 ? 57 48 83 ec ? 48 8b f9 48 8b ca 49 8b e9", [this](memory::handle ptr)
{ {

View File

@ -29,7 +29,7 @@ namespace big
uint8_t* m_incompatible_version{}; uint8_t* m_incompatible_version{};
functions::buffer_int_t m_buffer_int{}; //functions::buffer_int_t m_buffer_int{};
functions::clone_pack_t m_clone_pack{}; functions::clone_pack_t m_clone_pack{};
functions::clone_create_t m_clone_create{}; functions::clone_create_t m_clone_create{};
functions::clone_sync_t m_clone_sync{}; functions::clone_sync_t m_clone_sync{};