2021-12-25 22:36:38 +01:00
# pragma once
2022-04-09 02:18:57 +02:00
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
2022-04-18 03:35:08 +02:00
inline CMemory p_Sys_Error ;
2022-06-20 15:04:27 +02:00
inline auto v_Sys_Error = p_Sys_Error . RCast < void ( * ) ( char * fmt , . . . ) > ( ) ;
2021-12-25 22:36:38 +01:00
2022-06-20 15:04:27 +02:00
inline CMemory p_Sys_Warning ;
inline auto v_Sys_Warning = p_Sys_Warning . RCast < void * ( * ) ( int , char * fmt , . . . ) > ( ) ;
2022-01-14 20:45:36 +01:00
2022-06-20 14:58:53 +02:00
inline CMemory p_Sys_GetProcessUpTime ;
inline auto v_Sys_GetProcessUpTime = p_Sys_GetProcessUpTime . RCast < int ( * ) ( char * szBuffer ) > ( ) ;
2022-06-20 15:04:27 +02:00
# ifndef DEDICATED
2022-04-18 03:35:08 +02:00
inline CMemory p_Con_NPrintf ;
2022-06-20 15:04:27 +02:00
inline auto v_Con_NPrintf = p_Con_NPrintf . RCast < void ( * ) ( int pos , const char * fmt , . . . ) > ( ) ;
# endif // !DEDICATED
2022-05-09 02:20:07 +02:00
/* ==== ------- ========================================================================================================================================================= */
2021-12-25 22:36:38 +01:00
///////////////////////////////////////////////////////////////////////////////
void HSys_Error ( char * fmt , . . . ) ;
2022-06-20 14:58:53 +02:00
int Sys_GetProcessUpTime ( char * szBuffer ) ;
2021-12-25 22:36:38 +01:00
void SysUtils_Attach ( ) ;
void SysUtils_Detach ( ) ;
///////////////////////////////////////////////////////////////////////////////
2022-05-13 14:53:25 +02:00
class VSys_Utils : public IDetour
2021-12-25 22:36:38 +01:00
{
2022-04-11 01:44:30 +02:00
virtual void GetAdr ( void ) const
2021-12-25 22:36:38 +01:00
{
2022-05-20 01:08:09 +02:00
spdlog : : debug ( " | FUN: Sys_Error : {:#18x} | \n " , p_Sys_Error . GetPtr ( ) ) ;
2022-06-20 15:04:27 +02:00
spdlog : : debug ( " | FUN: Sys_Warning : {:#18x} | \n " , p_Sys_Warning . GetPtr ( ) ) ;
2022-08-18 02:15:23 +02:00
spdlog : : debug ( " | FUN: Sys_GetProcessUpTime : {:#18x} | \n " , p_Sys_GetProcessUpTime . GetPtr ( ) ) ;
2022-06-20 15:04:27 +02:00
# ifndef DEDICATED
2022-05-20 01:08:09 +02:00
spdlog : : debug ( " | FUN: Con_NPrintf : {:#18x} | \n " , p_Con_NPrintf . GetPtr ( ) ) ;
2022-06-20 15:04:27 +02:00
# endif // !DEDICATED
2022-05-13 14:53:25 +02:00
spdlog : : debug ( " +----------------------------------------------------------------+ \n " ) ;
2021-12-25 22:36:38 +01:00
}
2022-04-18 03:35:08 +02:00
virtual void GetFun ( void ) const
{
2022-08-09 03:02:00 +02:00
p_Sys_Error = g_GameDll . FindPatternSIMD ( reinterpret_cast < rsig_t > ( " \x48 \x89 \x4C \x24 \x08 \x48 \x89 \x54 \x24 \x10 \x4C \x89 \x44 \x24 \x18 \x4C \x89 \x4C \x24 \x20 \x53 \x55 \x41 \x54 \x41 \x56 \xB8 \x58 \x10 \x00 \x00 \xE8 " ) , " xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx " ) ;
p_Sys_Warning = g_GameDll . FindPatternSIMD ( reinterpret_cast < rsig_t > ( " \x48 \x89 \x54 \x24 \x00 \x4C \x89 \x44 \x24 \x00 \x4C \x89 \x4C \x24 \x00 \x48 \x83 \xEC \x28 \x4C \x8D \x44 \x24 \x00 \xE8 \x00 \x00 \x00 \x00 \x48 \x83 \xC4 \x28 \xC3 \xCC \xCC \xCC \xCC \xCC \xCC \xCC \xCC \xCC \xCC \xCC \xCC \xCC \xCC \x48 \x89 \x5C \x24 \x00 \x48 \x89 \x74 \x24 \x00 \x48 \x89 \x7C \x24 \x00 \x8B \x05 \x00 \x00 \x00 \x00 " ) , " xxxx?xxxx?xxxx?xxxxxxxx?x????xxxxxxxxxxxxxxxxxxxxxxx?xxxx?xxxx?xx???? " ) ;
p_Sys_GetProcessUpTime = g_GameDll . FindPatternSIMD ( reinterpret_cast < rsig_t > ( " \x40 \x57 \x48 \x83 \xEC \x30 \x48 \x8B \xF9 \x8B \x0D \x00 \x00 \x00 \x00 " ) , " xxxxxxxxxxx???? " ) ;
2022-06-20 15:04:27 +02:00
# ifndef DEDICATED
2022-08-09 03:02:00 +02:00
p_Con_NPrintf = g_GameDll . FindPatternSIMD ( reinterpret_cast < rsig_t > ( " \x48 \x89 \x4C \x24 \x00 \x48 \x89 \x54 \x24 \x00 \x4C \x89 \x44 \x24 \x00 \x4C \x89 \x4C \x24 \x00 \xC3 " ) , " xxxx?xxxx?xxxx?xxxx?x " ) ;
2022-06-20 15:04:27 +02:00
# endif // !DEDICATED
v_Sys_Error = p_Sys_Error . RCast < void ( * ) ( char * , . . . ) > ( ) ; /*48 89 4C 24 08 48 89 54 24 10 4C 89 44 24 18 4C 89 4C 24 20 53 55 41 54 41 56 B8 58 10 00 00 E8*/
v_Sys_Warning = p_Sys_Warning . RCast < void * ( * ) ( int , char * , . . . ) > ( ) ; /*48 89 54 24 ?? 4C 89 44 24 ?? 4C 89 4C 24 ?? 48 83 EC 28 4C 8D 44 24 ?? E8 ?? ?? ?? ?? 48 83 C4 28 C3 CC CC CC CC CC CC CC CC CC CC CC CC CC CC 48 89 5C 24 ?? 48 89 74 24 ?? 48 89 7C 24 ?? 8B 05 ?? ?? ?? ??*/
2022-06-20 14:58:53 +02:00
v_Sys_GetProcessUpTime = p_Sys_GetProcessUpTime . RCast < int ( * ) ( char * ) > ( ) ; /*40 57 48 83 EC 30 48 8B F9 8B 0D ?? ?? ?? ??*/
2022-06-20 15:04:27 +02:00
# ifndef DEDICATED
v_Con_NPrintf = p_Con_NPrintf . RCast < void ( * ) ( int , const char * , . . . ) > ( ) ; /*48 89 4C 24 ?? 48 89 54 24 ?? 4C 89 44 24 ?? 4C 89 4C 24 ?? C3*/
# endif // !DEDICATED
2022-04-18 03:35:08 +02:00
}
2022-04-11 01:44:30 +02:00
virtual void GetVar ( void ) const { }
virtual void GetCon ( void ) const { }
virtual void Attach ( void ) const { }
virtual void Detach ( void ) const { }
2021-12-25 22:36:38 +01:00
} ;
///////////////////////////////////////////////////////////////////////////////
2022-05-13 14:53:25 +02:00
REGISTER ( VSys_Utils ) ;