2021-12-25 22:36:38 +01:00
# pragma once
namespace
{
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ADDRESS p_Sys_Error = g_mGameDll . FindPatternSIMD ( ( std : : uint8_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 " ) ;
void ( * Sys_Error ) ( char * fmt , . . . ) = ( void ( * ) ( char * fmt , . . . ) ) p_Sys_Error . GetPtr ( ) ; /*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*/
2022-01-14 20:45:36 +01:00
ADDRESS p_Warning = g_mGameDll . FindPatternSIMD ( ( std : : uint8_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???? " ) ;
void * ( * Sys_Warning ) ( int level , char * fmt , . . . ) = ( void * ( * ) ( int , char * fmt , . . . ) ) p_Warning . GetPtr ( ) ; /*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 ? ? ? ?*/
2021-12-25 22:36:38 +01:00
ADDRESS p_Sys_LoadAssetHelper = g_mGameDll . FindPatternSIMD ( ( std : : uint8_t * ) " \x48 \x89 \x74 \x24 \x10 \x48 \x89 \x7C \x24 \x18 \x41 \x56 \x48 \x83 \xEC \x40 \x33 " , " xxxxxxxxxxxxxxxxx " ) ;
void * ( * Sys_LoadAssetHelper ) ( const CHAR * lpFileName , std : : int64_t a2 , LARGE_INTEGER * a3 ) = ( void * ( * ) ( const CHAR * , std : : int64_t , LARGE_INTEGER * ) ) p_Sys_LoadAssetHelper . GetPtr ( ) ; /*48 89 74 24 10 48 89 7C 24 18 41 56 48 83 EC 40 33*/
2022-01-05 02:07:37 +01:00
# if defined (GAMEDLL_S0) || defined (GAMEDLL_S1)
2021-12-25 22:36:38 +01:00
ADDRESS p_MemAlloc_Wrapper = g_mGameDll . FindPatternSIMD ( ( std : : uint8_t * ) " \x40 \x53 \x48 \x83 \xEC \x20 \x48 \x8B \x05 \x00 \x00 \x00 \x00 \x48 \x8B \xD9 \x48 \x85 \xC0 \x75 \x0C \xE8 \x16 " , " xxxxxxxxx????xxxxxxxxxx " ) ;
void * ( * MemAlloc_Wrapper ) ( std : : int64_t size ) = ( void * ( * ) ( std : : int64_t ) ) p_MemAlloc_Wrapper . GetPtr ( ) ; /*40 53 48 83 EC 20 48 8B 05 ?? ?? ?? ?? 48 8B D9 48 85 C0 75 0C E8 16*/
2022-01-05 02:07:37 +01:00
# elif defined (GAMEDLL_S2)
ADDRESS p_MemAlloc_Wrapper = g_mGameDll . FindPatternSIMD ( ( std : : uint8_t * ) " \x40 \x53 \x48 \x83 \xEC \x20 \x48 \x8B \x05 \x00 \x00 \x00 \x00 \x48 \x8B \xD9 \x48 \x85 \xC0 \x75 \x0C \xE8 \x00 \x00 \x00 \x00 \x48 \x89 \x05 \x00 \x00 \x00 \x00 \x4C \x8B \x00 \x48 \x8B \xD3 \x48 \x8B \xC8 \x48 \x83 \xC4 \x20 \x5B \x49 \xFF \x60 \x08 " , " xxxxxxxxx????xxxxxxxxx????xxx????xxxxxxxxxxxxxxxxxx " ) ;
void * ( * MemAlloc_Wrapper ) ( std : : int64_t size ) = ( void * ( * ) ( std : : int64_t ) ) p_MemAlloc_Wrapper . GetPtr ( ) ; /*40 53 48 83 EC 20 48 8B 05 ? ? ? ? 48 8B D9 48 85 C0 75 0C E8 ? ? ? ? 48 89 05 ? ? ? ? 4C 8B 00 48 8B D3 48 8B C8 48 83 C4 20 5B 49 FF 60 08 */
2021-12-25 22:36:38 +01:00
# elif defined (GAMEDLL_S3)
ADDRESS p_MemAlloc_Wrapper = g_mGameDll . FindPatternSIMD ( ( std : : uint8_t * ) " \x40 \x53 \x48 \x83 \xEC \x20 \x48 \x8B \x05 \x6B \x83 \x25 \x0D \x48 \x8B \xD9 " , " xxxxxxxxxxxxxxxx " ) ;
void * ( * MemAlloc_Wrapper ) ( std : : int64_t size ) = ( void * ( * ) ( std : : int64_t ) ) p_MemAlloc_Wrapper . GetPtr ( ) ; /*40 53 48 83 EC 20 48 8B 05 6B 83 25 0D 48 8B D9*/
# endif
/* ==== ------- ========================================================================================================================================================= */
}
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
NONE = 7
} ;
const std : : string sDLL_T [ 8 ] =
{
" Native(S): " ,
" Native(C): " ,
" Native(U): " ,
" Native(E): " ,
" Native(F): " ,
" Native(R): " ,
" Native(M): " ,
" "
} ;
const static std : : string sANSI_DLL_T [ 8 ] =
{
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-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 , . . . ) ;
void SysUtils_Attach ( ) ;
void SysUtils_Detach ( ) ;
///////////////////////////////////////////////////////////////////////////////
class HSys_Utils : public IDetour
{
virtual void debugp ( )
{
std : : cout < < " | FUN: Sys_Error : 0x " < < std : : hex < < std : : uppercase < < p_Sys_Error . GetPtr ( ) < < std : : setw ( npad ) < < " | " < < std : : endl ;
2022-01-14 20:45:36 +01:00
std : : cout < < " | FUN: Sys_Warning : 0x " < < std : : hex < < std : : uppercase < < p_Warning . GetPtr ( ) < < std : : setw ( npad ) < < " | " < < std : : endl ;
2021-12-25 22:36:38 +01:00
std : : cout < < " | FUN: Sys_LoadAssetHelper : 0x " < < std : : hex < < std : : uppercase < < p_Sys_LoadAssetHelper . GetPtr ( ) < < std : : setw ( npad ) < < " | " < < std : : endl ;
std : : cout < < " | FUN: MemAlloc_Wrapper : 0x " < < std : : hex < < std : : uppercase < < p_MemAlloc_Wrapper . GetPtr ( ) < < std : : setw ( npad ) < < " | " < < std : : endl ;
std : : cout < < " +----------------------------------------------------------------+ " < < std : : endl ;
}
} ;
///////////////////////////////////////////////////////////////////////////////
REGISTER ( HSys_Utils ) ;