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 ;
inline auto Sys_Error = p_Sys_Error . RCast < void ( * ) ( char * fmt , . . . ) > ( ) ;
2021-12-25 22:36:38 +01:00
2022-04-18 03:35:08 +02:00
inline CMemory p_Warning ;
inline auto Sys_Warning = p_Warning . RCast < void * ( * ) ( int , char * fmt , . . . ) > ( ) ;
2022-01-14 20:45:36 +01:00
2022-04-18 03:35:08 +02:00
inline CMemory p_Sys_LoadAssetHelper ;
inline auto Sys_LoadAssetHelper = p_Sys_LoadAssetHelper . RCast < void * ( * ) ( const CHAR * lpFileName , int64_t a2 , LARGE_INTEGER * a3 ) > ( ) ;
2022-02-28 01:01:40 +01:00
2022-04-18 03:35:08 +02:00
inline CMemory p_Con_NPrintf ;
inline auto Con_NPrintf = p_Con_NPrintf . RCast < void ( * ) ( int pos , const char * fmt , . . . ) > ( ) ;
2022-05-09 02:20:07 +02:00
inline std : : mutex s_LogMutex ;
/* ==== ------- ========================================================================================================================================================= */
2021-12-25 22:36:38 +01:00
enum class eDLL_T : int
{
SERVER = 0 , // Game DLL
CLIENT = 1 , // Game DLL
UI = 2 , // Game DLL
ENGINE = 3 , // Wrapper
FS = 4 , // File System
RTECH = 5 , // RTech API
2022-01-14 20:45:36 +01:00
MS = 6 , // Material System
2022-02-17 18:00:29 +01:00
NETCON = 7 , // Net Console
NONE = 8
2022-01-14 20:45:36 +01:00
} ;
2022-04-09 02:18:57 +02:00
const string sDLL_T [ 9 ] =
2022-01-14 20:45:36 +01:00
{
" Native(S): " ,
" Native(C): " ,
" Native(U): " ,
" Native(E): " ,
" Native(F): " ,
" Native(R): " ,
" Native(M): " ,
2022-03-04 15:59:33 +01:00
" Netcon(X): " ,
2022-01-14 20:45:36 +01:00
" "
} ;
2022-04-09 02:18:57 +02:00
const static string sANSI_DLL_T [ 9 ] =
2022-01-14 20:45:36 +01:00
{
2022-01-16 01:18:36 +01:00
" \033 [38;2;059;120;218mNative(S): " ,
" \033 [38;2;118;118;118mNative(C): " ,
" \033 [38;2;151;090;118mNative(U): " ,
" \033 [38;2;204;204;204mNative(E): " ,
" \033 [38;2;097;214;214mNative(F): " ,
" \033 [38;2;092;181;089mNative(R): " ,
" \033 [38;2;192;105;173mNative(M): " ,
2022-03-04 15:59:33 +01:00
" \033 [38;2;204;204;204mNetcon(X): " ,
2022-01-14 20:45:36 +01:00
" "
2021-12-25 22:36:38 +01:00
} ;
///////////////////////////////////////////////////////////////////////////////
void HSys_Error ( char * fmt , . . . ) ;
void DevMsg ( eDLL_T idx , const char * fmt , . . . ) ;
2022-03-04 15:34:09 +01:00
void Warning ( eDLL_T idx , const char * fmt , . . . ) ;
void Error ( eDLL_T idx , const char * fmt , . . . ) ;
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-13 14:53:25 +02:00
spdlog : : debug ( " | FUN: Sys_Error : {:#18X} | \n " , p_Sys_Error . GetPtr ( ) ) ;
spdlog : : debug ( " | FUN: Sys_Warning : {:#18X} | \n " , p_Warning . GetPtr ( ) ) ;
spdlog : : debug ( " | FUN: Sys_LoadAssetHelper : {:#18X} | \n " , p_Sys_LoadAssetHelper . GetPtr ( ) ) ;
spdlog : : debug ( " | FUN: Con_NPrintf : {:#18X} | \n " , p_Con_NPrintf . GetPtr ( ) ) ;
spdlog : : debug ( " +----------------------------------------------------------------+ \n " ) ;
2021-12-25 22:36:38 +01:00
}
2022-04-18 03:35:08 +02:00
virtual void GetFun ( void ) const
{
p_Sys_Error = g_mGameDll . 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_Warning = g_mGameDll . 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_LoadAssetHelper = g_mGameDll . FindPatternSIMD ( reinterpret_cast < rsig_t > ( " \x48 \x89 \x74 \x24 \x10 \x48 \x89 \x7C \x24 \x18 \x41 \x56 \x48 \x83 \xEC \x40 \x33 " ) , " xxxxxxxxxxxxxxxxx " ) ;
p_Con_NPrintf = g_mGameDll . 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 " ) ;
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*/
Sys_Warning = p_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 ?? ?? ?? ??*/
Sys_LoadAssetHelper = p_Sys_LoadAssetHelper . RCast < void * ( * ) ( const CHAR * , int64_t , LARGE_INTEGER * ) > ( ) ; /*48 89 74 24 10 48 89 7C 24 18 41 56 48 83 EC 40 33*/
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*/
}
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 ) ;