diff --git a/r5dev/bsplib/bsplib.h b/r5dev/bsplib/bsplib.h index 4c2fabc8..623291e6 100644 --- a/r5dev/bsplib/bsplib.h +++ b/r5dev/bsplib/bsplib.h @@ -34,11 +34,16 @@ void BspLib_Detach(); /////////////////////////////////////////////////////////////////////////////// class HBspLib : public IDetour { - virtual void debugp() + virtual void GetAdr(void) const { - std::cout << "| FUN: CalcPropStaticFrustumCulling : 0x" << std::hex << std::uppercase << p_CalcPropStaticFrustumCulling.GetPtr() << std::setw(npad) << " |" << std::endl; + std::cout << "| FUN: CalcPropStaticFrustumCulling : 0x" << std::hex << std::uppercase << p_CalcPropStaticFrustumCulling.GetPtr() << std::setw(nPad) << " |" << std::endl; std::cout << "+----------------------------------------------------------------+" << std::endl; } + virtual void GetFun(void) const { } + virtual void GetVar(void) const { } + virtual void GetCon(void) const { } + virtual void Attach(void) const { } + virtual void Detach(void) const { } }; /////////////////////////////////////////////////////////////////////////////// diff --git a/r5dev/client/cdll_engine_int.h b/r5dev/client/cdll_engine_int.h index e0dac108..315658d0 100644 --- a/r5dev/client/cdll_engine_int.h +++ b/r5dev/client/cdll_engine_int.h @@ -74,15 +74,20 @@ void CHLClient_Detach(); /////////////////////////////////////////////////////////////////////////////// class HDll_Engine_Int : public IDetour { - virtual void debugp() + virtual void GetAdr(void) const { - std::cout << "| FUN: CHLClient::PostInit : 0x" << std::hex << std::uppercase << p_CHLClient_PostInit.GetPtr() << std::setw(npad) << " |" << std::endl; - std::cout << "| FUN: CHLClient::LevelShutdown : 0x" << std::hex << std::uppercase << p_CHLClient_LevelShutdown.GetPtr() << std::setw(npad) << " |" << std::endl; - std::cout << "| FUN: CHLClient::HudProcessInput : 0x" << std::hex << std::uppercase << p_CHLClient_HudProcessInput.GetPtr() << std::setw(npad) << " |" << std::endl; - std::cout << "| FUN: CHLClient::FrameStageNotify : 0x" << std::hex << std::uppercase << p_CHLClient_FrameStageNotify.GetPtr() << std::setw(npad) << " |" << std::endl; + std::cout << "| FUN: CHLClient::PostInit : 0x" << std::hex << std::uppercase << p_CHLClient_PostInit.GetPtr() << std::setw(nPad) << " |" << std::endl; + std::cout << "| FUN: CHLClient::LevelShutdown : 0x" << std::hex << std::uppercase << p_CHLClient_LevelShutdown.GetPtr() << std::setw(nPad) << " |" << std::endl; + std::cout << "| FUN: CHLClient::HudProcessInput : 0x" << std::hex << std::uppercase << p_CHLClient_HudProcessInput.GetPtr() << std::setw(nPad) << " |" << std::endl; + std::cout << "| FUN: CHLClient::FrameStageNotify : 0x" << std::hex << std::uppercase << p_CHLClient_FrameStageNotify.GetPtr() << std::setw(nPad) << " |" << std::endl; std::cout << "| VAR: cl_time_use_host_tickcount : 0x" << std::hex << std::uppercase << cl_time_use_host_tickcount << std::setw(0) << " |" << std::endl; std::cout << "+----------------------------------------------------------------+" << std::endl; } + virtual void GetFun(void) const { } + virtual void GetVar(void) const { } + virtual void GetCon(void) const { } + virtual void Attach(void) const { } + virtual void Detach(void) const { } }; /////////////////////////////////////////////////////////////////////////////// diff --git a/r5dev/client/vengineclient_impl.h b/r5dev/client/vengineclient_impl.h index 3bde8dcc..82a7b3a9 100644 --- a/r5dev/client/vengineclient_impl.h +++ b/r5dev/client/vengineclient_impl.h @@ -11,12 +11,17 @@ extern bool* m_bRestrictServerCommands; /////////////////////////////////////////////////////////////////////////////// class HVEngineClient : public IDetour { - virtual void debugp() + virtual void GetAdr(void) const { - std::cout << "| FUN: IVEngineClient::CommandExecute : 0x" << std::hex << std::uppercase << p_IVEngineClient_CommandExecute.GetPtr() << std::setw(npad) << " |" << std::endl; + std::cout << "| FUN: IVEngineClient::CommandExecute : 0x" << std::hex << std::uppercase << p_IVEngineClient_CommandExecute.GetPtr() << std::setw(nPad) << " |" << std::endl; std::cout << "| VAR: m_bRestrictServerCommands : 0x" << std::hex << std::uppercase << m_bRestrictServerCommands << std::setw(0) << " |" << std::endl; std::cout << "+----------------------------------------------------------------+" << std::endl; } + virtual void GetFun(void) const { } + virtual void GetVar(void) const { } + virtual void GetCon(void) const { } + virtual void Attach(void) const { } + virtual void Detach(void) const { } }; /////////////////////////////////////////////////////////////////////////////// diff --git a/r5dev/common/netmessages.h b/r5dev/common/netmessages.h index 2fb9f5e8..6237410f 100644 --- a/r5dev/common/netmessages.h +++ b/r5dev/common/netmessages.h @@ -36,11 +36,16 @@ inline CMemory MM_Heartbeat__ToString = g_mGameDll.FindPatternSIMD(reinterpret_c /////////////////////////////////////////////////////////////////////////////// class HMM_Heartbeat : public IDetour { - virtual void debugp() + virtual void GetAdr(void) const { - std::cout << "| FUN: MM_Heartbeat::ToString : 0x" << std::hex << std::uppercase << MM_Heartbeat__ToString.GetPtr() << std::setw(npad) << " |" << std::endl; + std::cout << "| FUN: MM_Heartbeat::ToString : 0x" << std::hex << std::uppercase << MM_Heartbeat__ToString.GetPtr() << std::setw(nPad) << " |" << std::endl; std::cout << "+----------------------------------------------------------------+" << std::endl; } + virtual void GetFun(void) const { } + virtual void GetVar(void) const { } + virtual void GetCon(void) const { } + virtual void Attach(void) const { } + virtual void Detach(void) const { } }; /////////////////////////////////////////////////////////////////////////////// diff --git a/r5dev/common/opcodes.h b/r5dev/common/opcodes.h index 9eb983c6..d809fdd3 100644 --- a/r5dev/common/opcodes.h +++ b/r5dev/common/opcodes.h @@ -117,36 +117,41 @@ inline CMemory g_pClientSP = g_mGameDll.FindStringReadOnly("vpk/client_sp /////////////////////////////////////////////////////////////////////////////// class HOpcodes : public IDetour { - virtual void debugp() + virtual void GetAdr(void) const { - std::cout << "| FUN: CShaderSystem::Init : 0x" << std::hex << std::uppercase << CShaderSystem__Init.GetPtr() << std::setw(npad) << " |" << std::endl; + std::cout << "| FUN: CShaderSystem::Init : 0x" << std::hex << std::uppercase << CShaderSystem__Init.GetPtr() << std::setw(nPad) << " |" << std::endl; std::cout << "+----------------------------------------------------------------+" << std::endl; - std::cout << "| FUN: CVGui::RunFrame : 0x" << std::hex << std::uppercase << CVGui__RunFrame.GetPtr() << std::setw(npad) << " |" << std::endl; + std::cout << "| FUN: CVGui::RunFrame : 0x" << std::hex << std::uppercase << CVGui__RunFrame.GetPtr() << std::setw(nPad) << " |" << std::endl; std::cout << "+----------------------------------------------------------------+" << std::endl; - std::cout << "| FUN: CEngineVGui::Shutdown : 0x" << std::hex << std::uppercase << CEngineVGui__Shutdown.GetPtr() << std::setw(npad) << " |" << std::endl; - std::cout << "| FUN: CEngineVGui::ActivateGameUI : 0x" << std::hex << std::uppercase << CEngineVGui__ActivateGameUI.GetPtr() << std::setw(npad) << " |" << std::endl; + std::cout << "| FUN: CEngineVGui::Shutdown : 0x" << std::hex << std::uppercase << CEngineVGui__Shutdown.GetPtr() << std::setw(nPad) << " |" << std::endl; + std::cout << "| FUN: CEngineVGui::ActivateGameUI : 0x" << std::hex << std::uppercase << CEngineVGui__ActivateGameUI.GetPtr() << std::setw(nPad) << " |" << std::endl; std::cout << "+----------------------------------------------------------------+" << std::endl; - std::cout << "| FUN: Sys_InitGame : 0x" << std::hex << std::uppercase << Sys_InitGame.GetPtr() << std::setw(npad) << " |" << std::endl; + std::cout << "| FUN: Sys_InitGame : 0x" << std::hex << std::uppercase << Sys_InitGame.GetPtr() << std::setw(nPad) << " |" << std::endl; std::cout << "+----------------------------------------------------------------+" << std::endl; - std::cout << "| FUN: Host_Init_0 : 0x" << std::hex << std::uppercase << gHost_Init_0.GetPtr() << std::setw(npad) << " |" << std::endl; - std::cout << "| FUN: Host_Init_1 : 0x" << std::hex << std::uppercase << gHost_Init_1.GetPtr() << std::setw(npad) << " |" << std::endl; - std::cout << "| FUN: Host_Init_2 : 0x" << std::hex << std::uppercase << gHost_Init_2.GetPtr() << std::setw(npad) << " |" << std::endl; - std::cout << "| FUN: Host_Disconnect : 0x" << std::hex << std::uppercase << Host_Disconnect.GetPtr() << std::setw(npad) << " |" << std::endl; - std::cout << "| FUN: _Host_RunFrame : 0x" << std::hex << std::uppercase << _Host_RunFrame.GetPtr() << std::setw(npad) << " |" << std::endl; + std::cout << "| FUN: Host_Init_0 : 0x" << std::hex << std::uppercase << gHost_Init_0.GetPtr() << std::setw(nPad) << " |" << std::endl; + std::cout << "| FUN: Host_Init_1 : 0x" << std::hex << std::uppercase << gHost_Init_1.GetPtr() << std::setw(nPad) << " |" << std::endl; + std::cout << "| FUN: Host_Init_2 : 0x" << std::hex << std::uppercase << gHost_Init_2.GetPtr() << std::setw(nPad) << " |" << std::endl; + std::cout << "| FUN: Host_Disconnect : 0x" << std::hex << std::uppercase << Host_Disconnect.GetPtr() << std::setw(nPad) << " |" << std::endl; + std::cout << "| FUN: _Host_RunFrame : 0x" << std::hex << std::uppercase << _Host_RunFrame.GetPtr() << std::setw(nPad) << " |" << std::endl; std::cout << "+----------------------------------------------------------------+" << std::endl; - std::cout << "| FUN: Server_S2C_CONNECT_1 : 0x" << std::hex << std::uppercase << Server_S2C_CONNECT_1.GetPtr() << std::setw(npad) << " |" << std::endl; - std::cout << "| FUN: UpdateCurrentVideoConfig : 0x" << std::hex << std::uppercase << UpdateCurrentVideoConfig.GetPtr() << std::setw(npad) << " |" << std::endl; - std::cout << "| FUN: HandleConfigFile : 0x" << std::hex << std::uppercase << HandleConfigFile.GetPtr() << std::setw(npad) << " |" << std::endl; - std::cout << "| FUN: ResetPreviousGameState : 0x" << std::hex << std::uppercase << ResetPreviousGameState.GetPtr() << std::setw(npad) << " |" << std::endl; + std::cout << "| FUN: Server_S2C_CONNECT_1 : 0x" << std::hex << std::uppercase << Server_S2C_CONNECT_1.GetPtr() << std::setw(nPad) << " |" << std::endl; + std::cout << "| FUN: UpdateCurrentVideoConfig : 0x" << std::hex << std::uppercase << UpdateCurrentVideoConfig.GetPtr() << std::setw(nPad) << " |" << std::endl; + std::cout << "| FUN: HandleConfigFile : 0x" << std::hex << std::uppercase << HandleConfigFile.GetPtr() << std::setw(nPad) << " |" << std::endl; + std::cout << "| FUN: ResetPreviousGameState : 0x" << std::hex << std::uppercase << ResetPreviousGameState.GetPtr() << std::setw(nPad) << " |" << std::endl; std::cout << "+----------------------------------------------------------------+" << std::endl; - std::cout << "| CON: g_pClientVPKDir : 0x" << std::hex << std::uppercase << g_pClientVPKDir.GetPtr() << std::setw(npad) << " |" << std::endl; - std::cout << "| CON: g_pClientBSP : 0x" << std::hex << std::uppercase << g_pClientBSP.GetPtr() << std::setw(npad) << " |" << std::endl; - std::cout << "| CON: g_pClientCommonBSP : 0x" << std::hex << std::uppercase << g_pClientCommonBSP.GetPtr() << std::setw(npad) << " |" << std::endl; - std::cout << "| CON: g_pClientMPLobby : 0x" << std::hex << std::uppercase << g_pClientMPLobby.GetPtr() << std::setw(npad) << " |" << std::endl; - std::cout << "| CON: g_pClientMP : 0x" << std::hex << std::uppercase << g_pClientMP.GetPtr() << std::setw(npad) << " |" << std::endl; - std::cout << "| CON: g_pClientSP : 0x" << std::hex << std::uppercase << g_pClientSP.GetPtr() << std::setw(npad) << " |" << std::endl; + std::cout << "| CON: g_pClientVPKDir : 0x" << std::hex << std::uppercase << g_pClientVPKDir.GetPtr() << std::setw(nPad) << " |" << std::endl; + std::cout << "| CON: g_pClientBSP : 0x" << std::hex << std::uppercase << g_pClientBSP.GetPtr() << std::setw(nPad) << " |" << std::endl; + std::cout << "| CON: g_pClientCommonBSP : 0x" << std::hex << std::uppercase << g_pClientCommonBSP.GetPtr() << std::setw(nPad) << " |" << std::endl; + std::cout << "| CON: g_pClientMPLobby : 0x" << std::hex << std::uppercase << g_pClientMPLobby.GetPtr() << std::setw(nPad) << " |" << std::endl; + std::cout << "| CON: g_pClientMP : 0x" << std::hex << std::uppercase << g_pClientMP.GetPtr() << std::setw(nPad) << " |" << std::endl; + std::cout << "| CON: g_pClientSP : 0x" << std::hex << std::uppercase << g_pClientSP.GetPtr() << std::setw(nPad) << " |" << std::endl; std::cout << "+----------------------------------------------------------------+" << std::endl; } + virtual void GetFun(void) const { } + virtual void GetVar(void) const { } + virtual void GetCon(void) const { } + virtual void Attach(void) const { } + virtual void Detach(void) const { } }; /////////////////////////////////////////////////////////////////////////////// diff --git a/r5dev/core/init.cpp b/r5dev/core/init.cpp index eebe8e79..cd4c0119 100644 --- a/r5dev/core/init.cpp +++ b/r5dev/core/init.cpp @@ -6,6 +6,7 @@ #include "core/stdafx.h" #include "core/init.h" +#include "tier0/cpu.h" #include "tier0/commandline.h" #include "tier1/cmd.h" #include "tier1/IConVar.h" @@ -104,13 +105,17 @@ void Systems_Init() { - // Initialize winsock system - WSAData wsaData{}; - int nError = ::WSAStartup(MAKEWORD(2, 2), &wsaData); - if (nError != 0) + CheckCPU(); + for (IDetour* pdetour : vDetour) { - std::cerr << "Failed to start Winsock via WSAStartup: (" << NET_ErrorString(WSAGetLastError()) << ")" << std::endl; + pdetour->GetFun(); + pdetour->GetVar(); + pdetour->GetCon(); } + + // Initialize WinSock system. + WS_Init(); + // Begin the detour transaction to hook the the process DetourTransactionBegin(); DetourUpdateThread(GetCurrentThread()); @@ -206,12 +211,8 @@ void Systems_Init() void Systems_Shutdown() { - // Shutdown winsock system - int nError = ::WSACleanup(); - if (nError != 0) - { - std::cerr << "Failed to stop winsock via WSACleanup: (" << NET_ErrorString(WSAGetLastError()) << ")" << std::endl; - } + // Shutdown WinSock system. + WS_Shutdown(); // Begin the detour transaction to unhook the the process DetourTransactionBegin(); @@ -282,22 +283,51 @@ void Systems_Shutdown() DetourTransactionCommit(); } -////////////////////////////////////////////////////////// +///////////////////////////////////////////////////// // -// ██████╗ ███████╗███████╗██╗ ██╗██╗ ████████╗███████╗ -// ██╔══██╗██╔════╝██╔════╝██║ ██║██║ ╚══██╔══╝██╔════╝ -// ██████╔╝█████╗ ███████╗██║ ██║██║ ██║ ███████╗ -// ██╔══██╗██╔══╝ ╚════██║██║ ██║██║ ██║ ╚════██║ -// ██║ ██║███████╗███████║╚██████╔╝███████╗██║ ███████║ -// ╚═╝ ╚═╝╚══════╝╚══════╝ ╚═════╝ ╚══════╝╚═╝ ╚══════╝ +// ██╗ ██╗████████╗██╗██╗ ██╗████████╗██╗ ██╗ +// ██║ ██║╚══██╔══╝██║██║ ██║╚══██╔══╝╚██╗ ██╔╝ +// ██║ ██║ ██║ ██║██║ ██║ ██║ ╚████╔╝ +// ██║ ██║ ██║ ██║██║ ██║ ██║ ╚██╔╝ +// ╚██████╔╝ ██║ ██║███████╗██║ ██║ ██║ +// ╚═════╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ ╚═╝ // -////////////////////////////////////////////////////////// +///////////////////////////////////////////////////// +void WS_Init() +{ + WSAData wsaData{}; + int nError = ::WSAStartup(MAKEWORD(2, 2), &wsaData); + if (nError != 0) + { + std::cerr << "Failed to start Winsock via WSAStartup: (" << NET_ErrorString(WSAGetLastError()) << ")" << std::endl; + } +} +void WS_Shutdown() +{ + int nError = ::WSACleanup(); + if (nError != 0) + { + std::cerr << "Failed to stop winsock via WSACleanup: (" << NET_ErrorString(WSAGetLastError()) << ")" << std::endl; + } +} +void CheckCPU() +{ + const CPUInformation& pi = GetCPUInformation(); + + if ((pi.m_bSSE && pi.m_bSSE2)) + { + if (MessageBoxA(NULL, "SSE and SSE2 are required.", "SDK Error", MB_ICONERROR | MB_OK)) + { + TerminateProcess(GetCurrentProcess(), 0xBAD0C0DE); + } + } +} void PrintHAddress() // Test the sigscan results { std::cout << "+----------------------------------------------------------------+" << std::endl; - for (IDetour* pdetour : vdetour) + for (IDetour* pdetour : vDetour) { - pdetour->debugp(); + pdetour->GetAdr(); } } diff --git a/r5dev/core/init.h b/r5dev/core/init.h index d18b756c..52a0d807 100644 --- a/r5dev/core/init.h +++ b/r5dev/core/init.h @@ -10,4 +10,8 @@ void R5Dev_Shutdown(); void Systems_Init(); void Systems_Shutdown(); + +void WS_Init(); +void WS_Shutdown(); +void CheckCPU(); void PrintHAddress(); diff --git a/r5dev/ebisusdk/EbisuSDK.h b/r5dev/ebisusdk/EbisuSDK.h index 815a9275..59ccf5e6 100644 --- a/r5dev/ebisusdk/EbisuSDK.h +++ b/r5dev/ebisusdk/EbisuSDK.h @@ -28,18 +28,23 @@ void EbisuSDK_Detach(); /////////////////////////////////////////////////////////////////////////////// class HEbisuSDK : public IDetour { - virtual void debugp() + virtual void GetAdr(void) const { #ifdef DEDICATED - std::cout << "| FUN: EbisuSDK_Init_Tier0 : 0x" << std::hex << std::uppercase << p_EbisuSDK_Init_Tier0.GetPtr() << std::setw(npad) << " |" << std::endl; - std::cout << "| FUN: EbisuSDK_CVar_Init : 0x" << std::hex << std::uppercase << p_EbisuSDK_CVar_Init.GetPtr() << std::setw(npad) << " |" << std::endl; - std::cout << "| FUN: EbisuSDK_SetState : 0x" << std::hex << std::uppercase << p_EbisuSDK_SetState.GetPtr() << std::setw(npad) << " |" << std::endl; + std::cout << "| FUN: EbisuSDK_Init_Tier0 : 0x" << std::hex << std::uppercase << p_EbisuSDK_Init_Tier0.GetPtr() << std::setw(nPad) << " |" << std::endl; + std::cout << "| FUN: EbisuSDK_CVar_Init : 0x" << std::hex << std::uppercase << p_EbisuSDK_CVar_Init.GetPtr() << std::setw(nPad) << " |" << std::endl; + std::cout << "| FUN: EbisuSDK_SetState : 0x" << std::hex << std::uppercase << p_EbisuSDK_SetState.GetPtr() << std::setw(nPad) << " |" << std::endl; std::cout << "| VAR: g_bEbisuSDKInitialized : 0x" << std::hex << std::uppercase << g_bEbisuSDKInitialized << std::setw(0) << " |" << std::endl; std::cout << "| VAR: g_bEbisuSDKCvarInitialized : 0x" << std::hex << std::uppercase << g_bEbisuSDKCvarInitialized << std::setw(0) << " |" << std::endl; std::cout << "| VAR: g_qEbisuSDKCvarInitialized : 0x" << std::hex << std::uppercase << g_qEbisuSDKCvarInitialized << std::setw(0) << " |" << std::endl; std::cout << "+----------------------------------------------------------------+" << std::endl; #endif // DEDICATED } + virtual void GetFun(void) const { } + virtual void GetVar(void) const { } + virtual void GetCon(void) const { } + virtual void Attach(void) const { } + virtual void Detach(void) const { } }; /////////////////////////////////////////////////////////////////////////////// diff --git a/r5dev/engine/baseclient.h b/r5dev/engine/baseclient.h index 503c6c62..66890e65 100644 --- a/r5dev/engine/baseclient.h +++ b/r5dev/engine/baseclient.h @@ -93,13 +93,18 @@ void CBaseClient_Detach(); /////////////////////////////////////////////////////////////////////////////// class HBaseClient : public IDetour { - virtual void debugp() + virtual void GetAdr(void) const { std::cout << "| VAR: g_pClient : 0x" << std::hex << std::uppercase << g_pClient << std::setw(0) << " |" << std::endl; - std::cout << "| FUN: CBaseClient::Connect : 0x" << std::hex << std::uppercase << p_CBaseClient_Connect.GetPtr() << std::setw(npad) << " |" << std::endl; - std::cout << "| FUN: CBaseClient::Clear : 0x" << std::hex << std::uppercase << p_CBaseClient_Clear.GetPtr() << std::setw(npad) << " |" << std::endl; + std::cout << "| FUN: CBaseClient::Connect : 0x" << std::hex << std::uppercase << p_CBaseClient_Connect.GetPtr() << std::setw(nPad) << " |" << std::endl; + std::cout << "| FUN: CBaseClient::Clear : 0x" << std::hex << std::uppercase << p_CBaseClient_Clear.GetPtr() << std::setw(nPad) << " |" << std::endl; std::cout << "+----------------------------------------------------------------+" << std::endl; } + virtual void GetFun(void) const { } + virtual void GetVar(void) const { } + virtual void GetCon(void) const { } + virtual void Attach(void) const { } + virtual void Detach(void) const { } }; /////////////////////////////////////////////////////////////////////////////// diff --git a/r5dev/engine/baseclientstate.h b/r5dev/engine/baseclientstate.h index 3e623996..add224a9 100644 --- a/r5dev/engine/baseclientstate.h +++ b/r5dev/engine/baseclientstate.h @@ -37,13 +37,18 @@ extern CBaseClientState* g_pBaseClientState; /////////////////////////////////////////////////////////////////////////////// class HClientState : public IDetour { - virtual void debugp() + virtual void GetAdr(void) const { - //std::cout << "| FUN: CClientState::CheckForResend : 0x" << std::hex << std::uppercase << p_CClientState__CheckForResend.GetPtr() << std::setw(npad) << " |" << std::endl; + //std::cout << "| FUN: CClientState::CheckForResend : 0x" << std::hex << std::uppercase << p_CClientState__CheckForResend.GetPtr() << std::setw(nPad) << " |" << std::endl; std::cout << "| VAR: cl_m_bPaused : 0x" << std::hex << std::uppercase << cl_m_bPaused << std::setw(0) << " |" << std::endl; - std::cout << "| FUN: cl_host_tickcount : 0x" << std::hex << std::uppercase << cl_host_tickcount << std::setw(npad) << " |" << std::endl; + std::cout << "| FUN: cl_host_tickcount : 0x" << std::hex << std::uppercase << cl_host_tickcount << std::setw(nPad) << " |" << std::endl; std::cout << "+----------------------------------------------------------------+" << std::endl; } + virtual void GetFun(void) const { } + virtual void GetVar(void) const { } + virtual void GetCon(void) const { } + virtual void Attach(void) const { } + virtual void Detach(void) const { } }; /////////////////////////////////////////////////////////////////////////////// diff --git a/r5dev/engine/baseserver.h b/r5dev/engine/baseserver.h index c980bcfb..c8484541 100644 --- a/r5dev/engine/baseserver.h +++ b/r5dev/engine/baseserver.h @@ -11,10 +11,15 @@ extern CBaseServer* g_pServer; /////////////////////////////////////////////////////////////////////////////// class HBaseServer : public IDetour { - virtual void debugp() + virtual void GetAdr(void) const { //std::cout << "+----------------------------------------------------------------+" << std::endl; } + virtual void GetFun(void) const { } + virtual void GetVar(void) const { } + virtual void GetCon(void) const { } + virtual void Attach(void) const { } + virtual void Detach(void) const { } }; /////////////////////////////////////////////////////////////////////////////// diff --git a/r5dev/engine/cl_main.h b/r5dev/engine/cl_main.h index 00871505..7c668812 100644 --- a/r5dev/engine/cl_main.h +++ b/r5dev/engine/cl_main.h @@ -10,13 +10,18 @@ inline CMemory CL_ClearState = g_mGameDll.FindPatternSIMD(reinterpret_cast g_nLoadedPakFileId; /////////////////////////////////////////////////////////////////////////////// class HRTechGame : public IDetour { - virtual void debugp() + virtual void GetAdr(void) const { - std::cout << "| FUN: RTech_UnloadAsset : 0x" << std::hex << std::uppercase << p_RTech_UnloadAsset.GetPtr() << std::setw(npad) << " |" << std::endl; - std::cout << "| FUN: RTech_AsyncLoad : 0x" << std::hex << std::uppercase << p_RTech_AsyncLoad.GetPtr() << std::setw(npad) << " |" << std::endl; + std::cout << "| FUN: RTech_UnloadAsset : 0x" << std::hex << std::uppercase << p_RTech_UnloadAsset.GetPtr() << std::setw(nPad) << " |" << std::endl; + std::cout << "| FUN: RTech_AsyncLoad : 0x" << std::hex << std::uppercase << p_RTech_AsyncLoad.GetPtr() << std::setw(nPad) << " |" << std::endl; #if defined (GAMEDLL_S2) || defined (GAMEDLL_S3) - std::cout << "| FUN: RTech_LoadPak : 0x" << std::hex << std::uppercase << p_RTech_LoadPak.GetPtr() << std::setw(npad) << " |" << std::endl; - std::cout << "| FUN: RTech_LoadMapPak : 0x" << std::hex << std::uppercase << p_RTech_LoadMapPak.GetPtr() << std::setw(npad) << " |" << std::endl; - std::cout << "| FUN: RTech_UnloadPak : 0x" << std::hex << std::uppercase << p_RTech_UnloadPak.GetPtr() << std::setw(npad) << " |" << std::endl; - std::cout << "| FUN: JT_HelpWithAnything : 0x" << std::hex << std::uppercase << p_JT_HelpWithAnything.GetPtr() << std::setw(npad) << " |" << std::endl; + std::cout << "| FUN: RTech_LoadPak : 0x" << std::hex << std::uppercase << p_RTech_LoadPak.GetPtr() << std::setw(nPad) << " |" << std::endl; + std::cout << "| FUN: RTech_LoadMapPak : 0x" << std::hex << std::uppercase << p_RTech_LoadMapPak.GetPtr() << std::setw(nPad) << " |" << std::endl; + std::cout << "| FUN: RTech_UnloadPak : 0x" << std::hex << std::uppercase << p_RTech_UnloadPak.GetPtr() << std::setw(nPad) << " |" << std::endl; + std::cout << "| FUN: JT_HelpWithAnything : 0x" << std::hex << std::uppercase << p_JT_HelpWithAnything.GetPtr() << std::setw(nPad) << " |" << std::endl; #endif // GAMEDLL_S2 || GAMEDLL_S3 std::cout << "+----------------------------------------------------------------+" << std::endl; } + virtual void GetFun(void) const { } + virtual void GetVar(void) const { } + virtual void GetCon(void) const { } + virtual void Attach(void) const { } + virtual void Detach(void) const { } }; /////////////////////////////////////////////////////////////////////////////// diff --git a/r5dev/rtech/rui/rui.h b/r5dev/rtech/rui/rui.h index 77423a8d..988bd5ef 100644 --- a/r5dev/rtech/rui/rui.h +++ b/r5dev/rtech/rui/rui.h @@ -13,11 +13,16 @@ void Rui_Detach(); /////////////////////////////////////////////////////////////////////////////// class HRui : public IDetour { - virtual void debugp() + virtual void GetAdr(void) const { - std::cout << "| FUN: RuiDraw : 0x" << std::hex << std::uppercase << p_RuiDraw.GetPtr() << std::setw(npad) << " |" << std::endl; + std::cout << "| FUN: RuiDraw : 0x" << std::hex << std::uppercase << p_RuiDraw.GetPtr() << std::setw(nPad) << " |" << std::endl; std::cout << "+----------------------------------------------------------------+" << std::endl; } + virtual void GetFun(void) const { } + virtual void GetVar(void) const { } + virtual void GetCon(void) const { } + virtual void Attach(void) const { } + virtual void Detach(void) const { } }; /////////////////////////////////////////////////////////////////////////////// diff --git a/r5dev/rtech/stryder/stryder.h b/r5dev/rtech/stryder/stryder.h index bd45d2dc..8779c5bf 100644 --- a/r5dev/rtech/stryder/stryder.h +++ b/r5dev/rtech/stryder/stryder.h @@ -12,11 +12,16 @@ inline void* (*Stryder_StitchRequest)(void* a1) = (void* (*)(void*))p_Stryder_St /////////////////////////////////////////////////////////////////////////////// class HStryder : public IDetour { - virtual void debugp() + virtual void GetAdr(void) const { - std::cout << "| FUN: Stryder_StitchRequest : 0x" << std::hex << std::uppercase << p_Stryder_StitchRequest.GetPtr() << std::setw(npad) << " |" << std::endl; + std::cout << "| FUN: Stryder_StitchRequest : 0x" << std::hex << std::uppercase << p_Stryder_StitchRequest.GetPtr() << std::setw(nPad) << " |" << std::endl; std::cout << "+----------------------------------------------------------------+" << std::endl; } + virtual void GetFun(void) const { } + virtual void GetVar(void) const { } + virtual void GetCon(void) const { } + virtual void Attach(void) const { } + virtual void Detach(void) const { } }; /////////////////////////////////////////////////////////////////////////////// diff --git a/r5dev/server/server.h b/r5dev/server/server.h index 5bbf1183..eb2a0041 100644 --- a/r5dev/server/server.h +++ b/r5dev/server/server.h @@ -41,14 +41,19 @@ extern bool g_bCheckCompBanDB; /////////////////////////////////////////////////////////////////////////////// class HServer : public IDetour { - virtual void debugp() + virtual void GetAdr(void) const { - std::cout << "| FUN: CServer::Think : 0x" << std::hex << std::uppercase << p_CServer_Think.GetPtr() << std::setw(npad) << " |" << std::endl; - std::cout << "| FUN: CServer::Authenticate : 0x" << std::hex << std::uppercase << p_CServer_Authenticate.GetPtr() << std::setw(npad) << " |" << std::endl; - std::cout << "| FUN: CServer::RejectConnection : 0x" << std::hex << std::uppercase << p_CServer_RejectConnection.GetPtr() << std::setw(npad) << " |" << std::endl; + std::cout << "| FUN: CServer::Think : 0x" << std::hex << std::uppercase << p_CServer_Think.GetPtr() << std::setw(nPad) << " |" << std::endl; + std::cout << "| FUN: CServer::Authenticate : 0x" << std::hex << std::uppercase << p_CServer_Authenticate.GetPtr() << std::setw(nPad) << " |" << std::endl; + std::cout << "| FUN: CServer::RejectConnection : 0x" << std::hex << std::uppercase << p_CServer_RejectConnection.GetPtr() << std::setw(nPad) << " |" << std::endl; std::cout << "| VAR: sv_m_nTickCount : 0x" << std::hex << std::uppercase << sv_m_nTickCount << std::setw(0) << " |" << std::endl; std::cout << "+----------------------------------------------------------------+" << std::endl; } + virtual void GetFun(void) const { } + virtual void GetVar(void) const { } + virtual void GetCon(void) const { } + virtual void Attach(void) const { } + virtual void Detach(void) const { } }; /////////////////////////////////////////////////////////////////////////////// diff --git a/r5dev/server/vengineserver_impl.h b/r5dev/server/vengineserver_impl.h index 9fef65d9..767cfb7d 100644 --- a/r5dev/server/vengineserver_impl.h +++ b/r5dev/server/vengineserver_impl.h @@ -27,15 +27,20 @@ extern bool g_bIsPersistenceVarSet[MAX_PLAYERS]; /////////////////////////////////////////////////////////////////////////////// class HVEngineServer : public IDetour { - virtual void debugp() + virtual void GetAdr(void) const { - std::cout << "| FUN: IVEngineServer::PersistenceAvailable : 0x" << std::hex << std::uppercase << p_IVEngineServer__PersistenceAvailable.GetPtr() << std::setw(npad) << " |" << std::endl; - std::cout << "| FUN: IVEngineServer::IsDedicatedServer : 0x" << std::hex << std::uppercase << p_IVEngineServer__IsDedicatedServer.GetPtr() << std::setw(npad) << " |" << std::endl; - std::cout << "| FUN: IVEngineServer::GetNumHumanPlayers : 0x" << std::hex << std::uppercase << p_IVEngineServer__GetNumHumanPlayers.GetPtr() << std::setw(npad) << " |" << std::endl; - std::cout << "| FUN: IVEngineServer::GetNumFakeClients : 0x" << std::hex << std::uppercase << p_IVEngineServer__GetNumFakeClients.GetPtr() << std::setw(npad) << " |" << std::endl; + std::cout << "| FUN: IVEngineServer::PersistenceAvailable : 0x" << std::hex << std::uppercase << p_IVEngineServer__PersistenceAvailable.GetPtr() << std::setw(nPad) << " |" << std::endl; + std::cout << "| FUN: IVEngineServer::IsDedicatedServer : 0x" << std::hex << std::uppercase << p_IVEngineServer__IsDedicatedServer.GetPtr() << std::setw(nPad) << " |" << std::endl; + std::cout << "| FUN: IVEngineServer::GetNumHumanPlayers : 0x" << std::hex << std::uppercase << p_IVEngineServer__GetNumHumanPlayers.GetPtr() << std::setw(nPad) << " |" << std::endl; + std::cout << "| FUN: IVEngineServer::GetNumFakeClients : 0x" << std::hex << std::uppercase << p_IVEngineServer__GetNumFakeClients.GetPtr() << std::setw(nPad) << " |" << std::endl; std::cout << "| VAR: g_bDedicated : 0x" << std::hex << std::uppercase << g_bDedicated << std::setw(0) << " |" << std::endl; std::cout << "+----------------------------------------------------------------+" << std::endl; } + virtual void GetFun(void) const { } + virtual void GetVar(void) const { } + virtual void GetCon(void) const { } + virtual void Attach(void) const { } + virtual void Detach(void) const { } }; /////////////////////////////////////////////////////////////////////////////// diff --git a/r5dev/squirrel/sqapi.h b/r5dev/squirrel/sqapi.h index f74455a1..4ac07e07 100644 --- a/r5dev/squirrel/sqapi.h +++ b/r5dev/squirrel/sqapi.h @@ -1,50 +1,6 @@ #pragma once #include "squirrel/sqtype.h" -/* ==== SQUIRREL ======================================================================================================================================================== */ -inline CMemory p_sq_pushroottable = g_mGameDll.FindPatternSIMD(reinterpret_cast("\x48\x83\xEC\x28\x8B\x51\x00\x44\x8B\xC2"), "xxxxxx?xxx"); -inline auto v_sq_pushroottable = p_sq_pushroottable.RCast(); /*48 83 EC 28 8B 51 ?? 44 8B C2*/ - -inline CMemory p_sq_pushbool = g_mGameDll.FindPatternSIMD(reinterpret_cast("\x48\x83\xEC\x38\x33\xC0\x48\xC7\x44\x24\x20\x08\x00\x00\x01\x48"), "xxxxxxxxxxxxxxxx"); -inline auto v_sq_pushbool = p_sq_pushbool.RCast(); /*48 83 EC 38 33 C0 48 C7 44 24 20 08 00 00 01 48*/ - -#if defined (GAMEDLL_S0) || defined (GAMEDLL_S1) || defined (GAMEDLL_S2) -inline CMemory p_sq_pushstring = g_mGameDll.FindPatternSIMD(reinterpret_cast("\x40\x56\x48\x83\xEC\x30\x48\x8B\xF1\x48\x85\xD2\x0F\x84\x8C\x00"), "xxxxxxxxxxxxxxxx"); -inline auto v_sq_pushstring = p_sq_pushstring.RCast(); /*40 56 48 83 EC 30 48 8B F1 48 85 D2 0F 84 8C 00*/ -#elif defined (GAMEDLL_S3) -inline CMemory p_sq_pushstring = g_mGameDll.FindPatternSIMD(reinterpret_cast("\x40\x56\x48\x83\xEC\x30\x48\x8B\xF1\x48\x85\xD2\x0F\x84\x8F\x00"), "xxxxxxxxxxxxxxxx"); -inline auto v_sq_pushstring = p_sq_pushstring.RCast(); /*40 56 48 83 EC 30 48 8B F1 48 85 D2 0F 84 8F 00*/ -#endif -inline CMemory p_sq_pushinteger = g_mGameDll.FindPatternSIMD(reinterpret_cast("\x48\x83\xEC\x38\x33\xC0\x48\xC7\x44\x24\x20\x02\x00\x00\x05\x48"), "xxxxxxxxxxxxxxxx"); -inline auto v_sq_pushinteger = p_sq_pushinteger.RCast(); /*48 83 EC 38 33 C0 48 C7 44 24 20 02 00 00 05 48*/ - -inline CMemory p_sq_pushconstant = g_mGameDll.FindPatternSIMD(reinterpret_cast("\x48\x89\x5C\x24\x00\x48\x89\x6C\x24\x00\x48\x89\x74\x24\x00\x57\x48\x83\xEC\x30\x4C\x8B"), "xxxx?xxxx?xxxx?xxxxxxx"); -inline auto v_sq_pushconstant = p_sq_pushconstant.RCast(); /*48 89 5C 24 ? 48 89 6C 24 ? 48 89 74 24 ? 57 48 83 EC 30 4C 8B*/ - -inline CMemory p_sq_newarray = g_mGameDll.FindPatternSIMD(reinterpret_cast("\x48\x89\x5C\x24\x08\x57\x48\x83\xEC\x30\x48\x8B\xD9\x48\xC7\x44\x24\x20\x40"), "xxxxxxxxxxxxxxxxxxx"); -inline auto v_sq_newarray = p_sq_newarray.RCast(); /*48 89 5C 24 08 57 48 83 EC 30 48 8B D9 48 C7 44 24 20 40*/ - -inline CMemory p_sq_newtable = g_mGameDll.FindPatternSIMD(reinterpret_cast("\x48\x89\x5C\x24\x08\x57\x48\x83\xEC\x30\x48\x8B\xD9\x48\xC7\x44\x24\x20\x20"), "xxxxxxxxxxxxxxxxxxx"); -inline auto v_sq_newtable = p_sq_newtable.RCast(); /*48 89 5C 24 08 57 48 83 EC 30 48 8B D9 48 C7 44 24 20 20*/ - -inline CMemory p_sq_newslot = g_mGameDll.FindPatternSIMD(reinterpret_cast("\x40\x53\x48\x83\xEC\x30\x44\x8B\x49\x00\x48\x8B\xD9\x41\x8B\xC1"), "xxxxxxxxx?xxxxxx"); -inline auto v_sq_newslot = p_sq_newslot.RCast(); /*40 53 48 83 EC 20 8B 41 ?? 48 8B D9 2B 41 ?? 83 F8 02 7D*/ - -inline CMemory p_sq_arrayappend = g_mGameDll.FindPatternSIMD(reinterpret_cast("\x40\x53\x48\x83\xEC\x20\x8B\x41\x00\x48\x8B\xD9\x2B\x41\x00\x83\xF8\x02\x7D"), "xxxxxxxx?xxxxx?xxxx"); -inline auto v_sq_arrayappend = p_sq_arrayappend.RCast(); /*40 53 48 83 EC 20 8B 41 ?? 48 8B D9 2B 41 ?? 83 F8 02 7D*/ -#if defined (GAMEDLL_S0) || defined (GAMEDLL_S1) || defined (GAMEDLL_S2) -inline CMemory p_sq_pushstructure = g_mGameDll.FindPatternSIMD(reinterpret_cast("\x48\x89\x5C\x24\x00\x48\x89\x74\x24\x00\x48\x89\x7C\x24\x00\x4C\x89\x4C\x24\x00\x55\x41\x54\x41\x55\x41\x56\x41\x57\x48\x8B\xEC"), "xxxx?xxxx?xxxx?xxxx?xxxxxxxxxxxx"); -inline auto v_sq_pushstructure = p_sq_pushstructure.RCast(); /*48 89 5C 24 ? 48 89 74 24 ? 48 89 7C 24 ? 4C 89 4C 24 ? 55 41 54 41 55 41 56 41 57 48 8B EC*/ -#elif defined (GAMEDLL_S3) -inline CMemory p_sq_pushstructure = g_mGameDll.FindPatternSIMD(reinterpret_cast("\x48\x89\x5C\x24\x00\x48\x89\x74\x24\x00\x48\x89\x7C\x24\x00\x55\x41\x54\x41\x55\x41\x56\x41\x57\x48\x8B\xEC\x48\x83\xEC\x60\x48\x8B\x59\x60"), "xxxx?xxxx?xxxx?xxxxxxxxxxxxxxxxxxxx"); -inline auto v_sq_pushstructure = p_sq_pushstructure.RCast(); /*48 89 5C 24 ? 48 89 74 24 ? 48 89 7C 24 ? 55 41 54 41 55 41 56 41 57 48 8B EC 48 83 EC 60 48 8B 59 60*/ -#endif -inline CMemory p_sq_compilebuffer = g_mGameDll.FindPatternSIMD(reinterpret_cast("\x48\x89\x5C\x24\x00\x48\x89\x6C\x24\x00\x48\x89\x74\x24\x00\x57\x41\x56\x41\x57\x48\x83\xEC\x50\x41\x8B\xE9\x49\x8B\xF8"), "xxxx?xxxx?xxxx?xxxxxxxxxxxxxxx"); -inline auto v_sq_compilebuffer = p_sq_compilebuffer.RCast(); /*48 89 5C 24 ? 48 89 6C 24 ? 48 89 74 24 ? 57 41 56 41 57 48 83 EC 50 41 8B E9 49 8B F8*/ - -inline CMemory p_sq_call = g_mGameDll.FindPatternSIMD(reinterpret_cast("\x4C\x8B\xDC\x49\x89\x5B\x08\x49\x89\x6B\x10\x49\x89\x73\x18\x57\x48\x83\xEC\x50\x8B\xF2"), "xxxxxxxxxxxxxxxxxxxxxx"); -inline auto v_sq_call = p_sq_call.RCast(); /*4C 8B DC 49 89 5B 08 49 89 6B 10 49 89 73 18 57 48 83 EC 50 8B F2*/ - /////////////////////////////////////////////////////////////////////////////// SQRESULT sq_pushroottable(HSQUIRRELVM v); SQChar* sq_getstring(HSQUIRRELVM v, SQInteger i); @@ -65,25 +21,118 @@ SQRESULT sq_call(HSQUIRRELVM v, SQInteger params, SQBool retval, SQBool raiseerr void SQAPI_Attach(); void SQAPI_Detach(); +/* ==== SQUIRREL ======================================================================================================================================================== */ +inline CMemory p_sq_pushroottable; /*48 83 EC 28 8B 51 ?? 44 8B C2*/ +inline auto v_sq_pushroottable = p_sq_pushroottable.RCast(); + +inline CMemory p_sq_pushbool; /*48 83 EC 38 33 C0 48 C7 44 24 20 08 00 00 01 48*/ +inline auto v_sq_pushbool = p_sq_pushbool.RCast(); + +#if defined (GAMEDLL_S0) || defined (GAMEDLL_S1) || defined (GAMEDLL_S2) +inline CMemory p_sq_pushstring; /*40 56 48 83 EC 30 48 8B F1 48 85 D2 0F 84 8C 00*/ +inline auto v_sq_pushstring = p_sq_pushstring.RCast(); +#elif defined (GAMEDLL_S3) +inline CMemory p_sq_pushstring; /*40 56 48 83 EC 30 48 8B F1 48 85 D2 0F 84 8F 00*/ +inline auto v_sq_pushstring = p_sq_pushstring.RCast(); +#endif +inline CMemory p_sq_pushinteger; /*48 83 EC 38 33 C0 48 C7 44 24 20 02 00 00 05 48*/ +inline auto v_sq_pushinteger = p_sq_pushinteger.RCast(); + +inline CMemory p_sq_pushconstant; /*48 89 5C 24 ? 48 89 6C 24 ? 48 89 74 24 ? 57 48 83 EC 30 4C 8B*/ +inline auto v_sq_pushconstant = p_sq_pushconstant.RCast(); + +inline CMemory p_sq_newarray; /*48 89 5C 24 08 57 48 83 EC 30 48 8B D9 48 C7 44 24 20 40*/ +inline auto v_sq_newarray = p_sq_newarray.RCast(); + +inline CMemory p_sq_newtable; /*48 89 5C 24 08 57 48 83 EC 30 48 8B D9 48 C7 44 24 20 20*/ +inline auto v_sq_newtable = p_sq_newtable.RCast(); + +inline CMemory p_sq_newslot; /*40 53 48 83 EC 20 8B 41 ?? 48 8B D9 2B 41 ?? 83 F8 02 7D*/ +inline auto v_sq_newslot = p_sq_newslot.RCast(); + +inline CMemory p_sq_arrayappend; /*40 53 48 83 EC 20 8B 41 ?? 48 8B D9 2B 41 ?? 83 F8 02 7D*/ +inline auto v_sq_arrayappend = p_sq_arrayappend.RCast(); +#if defined (GAMEDLL_S0) || defined (GAMEDLL_S1) || defined (GAMEDLL_S2) +inline CMemory p_sq_pushstructure; /*48 89 5C 24 ? 48 89 74 24 ? 48 89 7C 24 ? 4C 89 4C 24 ? 55 41 54 41 55 41 56 41 57 48 8B EC*/ +inline auto v_sq_pushstructure = p_sq_pushstructure.RCast(); +#elif defined (GAMEDLL_S3) +inline CMemory p_sq_pushstructure; /*48 89 5C 24 ? 48 89 74 24 ? 48 89 7C 24 ? 55 41 54 41 55 41 56 41 57 48 8B EC 48 83 EC 60 48 8B 59 60*/ +inline auto v_sq_pushstructure = p_sq_pushstructure.RCast(); +#endif +inline CMemory p_sq_compilebuffer; /*48 89 5C 24 ? 48 89 6C 24 ? 48 89 74 24 ? 57 41 56 41 57 48 83 EC 50 41 8B E9 49 8B F8*/ +inline auto v_sq_compilebuffer = p_sq_compilebuffer.RCast(); + +inline CMemory p_sq_call; /*4C 8B DC 49 89 5B 08 49 89 6B 10 49 89 73 18 57 48 83 EC 50 8B F2*/ +inline auto v_sq_call = p_sq_call.RCast(); + /////////////////////////////////////////////////////////////////////////////// class HSqapi : public IDetour { - virtual void debugp() + virtual void GetAdr(void) const { - std::cout << "| FUN: sq_pushroottable : 0x" << std::hex << std::uppercase << p_sq_pushroottable.GetPtr() << std::setw(npad) << " |" << std::endl; - std::cout << "| FUN: sq_pushbool : 0x" << std::hex << std::uppercase << p_sq_pushbool.GetPtr() << std::setw(npad) << " |" << std::endl; - std::cout << "| FUN: sq_pushstring : 0x" << std::hex << std::uppercase << p_sq_pushstring.GetPtr() << std::setw(npad) << " |" << std::endl; - std::cout << "| FUN: sq_pushinteger : 0x" << std::hex << std::uppercase << p_sq_pushinteger.GetPtr() << std::setw(npad) << " |" << std::endl; - std::cout << "| FUN: sq_pushconstant : 0x" << std::hex << std::uppercase << p_sq_pushconstant.GetPtr() << std::setw(npad) << " |" << std::endl; - std::cout << "| FUN: sq_newarray : 0x" << std::hex << std::uppercase << p_sq_newarray.GetPtr() << std::setw(npad) << " |" << std::endl; - std::cout << "| FUN: sq_arrayappend : 0x" << std::hex << std::uppercase << p_sq_arrayappend.GetPtr() << std::setw(npad) << " |" << std::endl; - std::cout << "| FUN: sq_newtable : 0x" << std::hex << std::uppercase << p_sq_newtable.GetPtr() << std::setw(npad) << " |" << std::endl; - std::cout << "| FUN: sq_newslot : 0x" << std::hex << std::uppercase << p_sq_newslot.GetPtr() << std::setw(npad) << " |" << std::endl; - std::cout << "| FUN: sq_pushstructure : 0x" << std::hex << std::uppercase << p_sq_pushstructure.GetPtr() << std::setw(npad) << " |" << std::endl; - std::cout << "| FUN: sq_compilebuffer : 0x" << std::hex << std::uppercase << p_sq_compilebuffer.GetPtr() << std::setw(npad) << " |" << std::endl; - std::cout << "| FUN: sq_call : 0x" << std::hex << std::uppercase << p_sq_call.GetPtr() << std::setw(npad) << " |" << std::endl; + std::cout << "| FUN: sq_pushroottable : 0x" << std::hex << std::uppercase << p_sq_pushroottable.GetPtr() << std::setw(nPad) << " |" << std::endl; + std::cout << "| FUN: sq_pushbool : 0x" << std::hex << std::uppercase << p_sq_pushbool.GetPtr() << std::setw(nPad) << " |" << std::endl; + std::cout << "| FUN: sq_pushstring : 0x" << std::hex << std::uppercase << p_sq_pushstring.GetPtr() << std::setw(nPad) << " |" << std::endl; + std::cout << "| FUN: sq_pushinteger : 0x" << std::hex << std::uppercase << p_sq_pushinteger.GetPtr() << std::setw(nPad) << " |" << std::endl; + std::cout << "| FUN: sq_pushconstant : 0x" << std::hex << std::uppercase << p_sq_pushconstant.GetPtr() << std::setw(nPad) << " |" << std::endl; + std::cout << "| FUN: sq_newarray : 0x" << std::hex << std::uppercase << p_sq_newarray.GetPtr() << std::setw(nPad) << " |" << std::endl; + std::cout << "| FUN: sq_arrayappend : 0x" << std::hex << std::uppercase << p_sq_arrayappend.GetPtr() << std::setw(nPad) << " |" << std::endl; + std::cout << "| FUN: sq_newtable : 0x" << std::hex << std::uppercase << p_sq_newtable.GetPtr() << std::setw(nPad) << " |" << std::endl; + std::cout << "| FUN: sq_newslot : 0x" << std::hex << std::uppercase << p_sq_newslot.GetPtr() << std::setw(nPad) << " |" << std::endl; + std::cout << "| FUN: sq_pushstructure : 0x" << std::hex << std::uppercase << p_sq_pushstructure.GetPtr() << std::setw(nPad) << " |" << std::endl; + std::cout << "| FUN: sq_compilebuffer : 0x" << std::hex << std::uppercase << p_sq_compilebuffer.GetPtr() << std::setw(nPad) << " |" << std::endl; + std::cout << "| FUN: sq_call : 0x" << std::hex << std::uppercase << p_sq_call.GetPtr() << std::setw(nPad) << " |" << std::endl; std::cout << "+----------------------------------------------------------------+" << std::endl; } + virtual void GetFun(void) const + { + p_sq_pushroottable = g_mGameDll.FindPatternSIMD(reinterpret_cast("\x48\x83\xEC\x28\x8B\x51\x00\x44\x8B\xC2"), "xxxxxx?xxx"); + v_sq_pushroottable = p_sq_pushroottable.RCast(); /*48 83 EC 28 8B 51 ?? 44 8B C2*/ + + p_sq_pushbool = g_mGameDll.FindPatternSIMD(reinterpret_cast("\x48\x83\xEC\x38\x33\xC0\x48\xC7\x44\x24\x20\x08\x00\x00\x01\x48"), "xxxxxxxxxxxxxxxx"); + v_sq_pushbool = p_sq_pushbool.RCast(); /*48 83 EC 38 33 C0 48 C7 44 24 20 08 00 00 01 48*/ + +#if defined (GAMEDLL_S0) || defined (GAMEDLL_S1) || defined (GAMEDLL_S2) + p_sq_pushstring = g_mGameDll.FindPatternSIMD(reinterpret_cast("\x40\x56\x48\x83\xEC\x30\x48\x8B\xF1\x48\x85\xD2\x0F\x84\x8C\x00"), "xxxxxxxxxxxxxxxx"); + v_sq_pushstring = p_sq_pushstring.RCast(); /*40 56 48 83 EC 30 48 8B F1 48 85 D2 0F 84 8C 00*/ +#elif defined (GAMEDLL_S3) + p_sq_pushstring = g_mGameDll.FindPatternSIMD(reinterpret_cast("\x40\x56\x48\x83\xEC\x30\x48\x8B\xF1\x48\x85\xD2\x0F\x84\x8F\x00"), "xxxxxxxxxxxxxxxx"); + v_sq_pushstring = p_sq_pushstring.RCast(); /*40 56 48 83 EC 30 48 8B F1 48 85 D2 0F 84 8F 00*/ +#endif + p_sq_pushinteger = g_mGameDll.FindPatternSIMD(reinterpret_cast("\x48\x83\xEC\x38\x33\xC0\x48\xC7\x44\x24\x20\x02\x00\x00\x05\x48"), "xxxxxxxxxxxxxxxx"); + v_sq_pushinteger = p_sq_pushinteger.RCast(); /*48 83 EC 38 33 C0 48 C7 44 24 20 02 00 00 05 48*/ + + p_sq_pushconstant = g_mGameDll.FindPatternSIMD(reinterpret_cast("\x48\x89\x5C\x24\x00\x48\x89\x6C\x24\x00\x48\x89\x74\x24\x00\x57\x48\x83\xEC\x30\x4C\x8B"), "xxxx?xxxx?xxxx?xxxxxxx"); + v_sq_pushconstant = p_sq_pushconstant.RCast(); /*48 89 5C 24 ? 48 89 6C 24 ? 48 89 74 24 ? 57 48 83 EC 30 4C 8B*/ + + p_sq_newarray = g_mGameDll.FindPatternSIMD(reinterpret_cast("\x48\x89\x5C\x24\x08\x57\x48\x83\xEC\x30\x48\x8B\xD9\x48\xC7\x44\x24\x20\x40"), "xxxxxxxxxxxxxxxxxxx"); + v_sq_newarray = p_sq_newarray.RCast(); /*48 89 5C 24 08 57 48 83 EC 30 48 8B D9 48 C7 44 24 20 40*/ + + p_sq_newtable = g_mGameDll.FindPatternSIMD(reinterpret_cast("\x48\x89\x5C\x24\x08\x57\x48\x83\xEC\x30\x48\x8B\xD9\x48\xC7\x44\x24\x20\x20"), "xxxxxxxxxxxxxxxxxxx"); + v_sq_newtable = p_sq_newtable.RCast(); /*48 89 5C 24 08 57 48 83 EC 30 48 8B D9 48 C7 44 24 20 20*/ + + p_sq_newslot = g_mGameDll.FindPatternSIMD(reinterpret_cast("\x40\x53\x48\x83\xEC\x30\x44\x8B\x49\x00\x48\x8B\xD9\x41\x8B\xC1"), "xxxxxxxxx?xxxxxx"); + v_sq_newslot = p_sq_newslot.RCast(); /*40 53 48 83 EC 20 8B 41 ?? 48 8B D9 2B 41 ?? 83 F8 02 7D*/ + + p_sq_arrayappend = g_mGameDll.FindPatternSIMD(reinterpret_cast("\x40\x53\x48\x83\xEC\x20\x8B\x41\x00\x48\x8B\xD9\x2B\x41\x00\x83\xF8\x02\x7D"), "xxxxxxxx?xxxxx?xxxx"); + v_sq_arrayappend = p_sq_arrayappend.RCast(); /*40 53 48 83 EC 20 8B 41 ?? 48 8B D9 2B 41 ?? 83 F8 02 7D*/ +#if defined (GAMEDLL_S0) || defined (GAMEDLL_S1) || defined (GAMEDLL_S2) + p_sq_pushstructure = g_mGameDll.FindPatternSIMD(reinterpret_cast("\x48\x89\x5C\x24\x00\x48\x89\x74\x24\x00\x48\x89\x7C\x24\x00\x4C\x89\x4C\x24\x00\x55\x41\x54\x41\x55\x41\x56\x41\x57\x48\x8B\xEC"), "xxxx?xxxx?xxxx?xxxx?xxxxxxxxxxxx"); + v_sq_pushstructure = p_sq_pushstructure.RCast(); /*48 89 5C 24 ? 48 89 74 24 ? 48 89 7C 24 ? 4C 89 4C 24 ? 55 41 54 41 55 41 56 41 57 48 8B EC*/ +#elif defined (GAMEDLL_S3) + p_sq_pushstructure = g_mGameDll.FindPatternSIMD(reinterpret_cast("\x48\x89\x5C\x24\x00\x48\x89\x74\x24\x00\x48\x89\x7C\x24\x00\x55\x41\x54\x41\x55\x41\x56\x41\x57\x48\x8B\xEC\x48\x83\xEC\x60\x48\x8B\x59\x60"), "xxxx?xxxx?xxxx?xxxxxxxxxxxxxxxxxxxx"); + v_sq_pushstructure = p_sq_pushstructure.RCast(); /*48 89 5C 24 ? 48 89 74 24 ? 48 89 7C 24 ? 55 41 54 41 55 41 56 41 57 48 8B EC 48 83 EC 60 48 8B 59 60*/ +#endif + p_sq_compilebuffer = g_mGameDll.FindPatternSIMD(reinterpret_cast("\x48\x89\x5C\x24\x00\x48\x89\x6C\x24\x00\x48\x89\x74\x24\x00\x57\x41\x56\x41\x57\x48\x83\xEC\x50\x41\x8B\xE9\x49\x8B\xF8"), "xxxx?xxxx?xxxx?xxxxxxxxxxxxxxx"); + v_sq_compilebuffer = p_sq_compilebuffer.RCast(); /*48 89 5C 24 ? 48 89 6C 24 ? 48 89 74 24 ? 57 41 56 41 57 48 83 EC 50 41 8B E9 49 8B F8*/ + + p_sq_call = g_mGameDll.FindPatternSIMD(reinterpret_cast("\x4C\x8B\xDC\x49\x89\x5B\x08\x49\x89\x6B\x10\x49\x89\x73\x18\x57\x48\x83\xEC\x50\x8B\xF2"), "xxxxxxxxxxxxxxxxxxxxxx"); + v_sq_call = p_sq_call.RCast(); /*4C 8B DC 49 89 5B 08 49 89 6B 10 49 89 73 18 57 48 83 EC 50 8B F2*/ + } + virtual void GetVar(void) const { } + virtual void GetCon(void) const { } + virtual void Attach(void) const { } + virtual void Detach(void) const { } }; /////////////////////////////////////////////////////////////////////////////// diff --git a/r5dev/squirrel/sqinit.h b/r5dev/squirrel/sqinit.h index 1ea8d09c..4d4f990f 100644 --- a/r5dev/squirrel/sqinit.h +++ b/r5dev/squirrel/sqinit.h @@ -53,10 +53,10 @@ namespace VSquirrel /////////////////////////////////////////////////////////////////////////////// class HSqInit : public IDetour { - virtual void debugp() + virtual void GetAdr(void) const { - std::cout << "| FUN: Remote_BeginRegisteringFunctions : 0x" << std::hex << std::uppercase << p_Script_Remote_BeginRegisteringFunctions.GetPtr() << std::setw(npad) << " |" << std::endl; - std::cout << "| FUN: RestoreRemoteChecksumsFromSaveGame : 0x" << std::hex << std::uppercase << p_RestoreRemoteChecksumsFromSaveGame.GetPtr() << std::setw(npad) << " |" << std::endl; + std::cout << "| FUN: Remote_BeginRegisteringFunctions : 0x" << std::hex << std::uppercase << p_Script_Remote_BeginRegisteringFunctions.GetPtr() << std::setw(nPad) << " |" << std::endl; + std::cout << "| FUN: RestoreRemoteChecksumsFromSaveGame : 0x" << std::hex << std::uppercase << p_RestoreRemoteChecksumsFromSaveGame.GetPtr() << std::setw(nPad) << " |" << std::endl; #ifndef CLIENT_DLL std::cout << "| VAR: g_nServerRemoteChecksum : 0x" << std::hex << std::uppercase << g_nServerRemoteChecksum << std::setw(0) << " |" << std::endl; #endif // !CLIENT_DLL @@ -65,6 +65,11 @@ class HSqInit : public IDetour #endif // !DEDICATED std::cout << "+----------------------------------------------------------------+" << std::endl; } + virtual void GetFun(void) const { } + virtual void GetVar(void) const { } + virtual void GetCon(void) const { } + virtual void Attach(void) const { } + virtual void Detach(void) const { } }; /////////////////////////////////////////////////////////////////////////////// diff --git a/r5dev/squirrel/sqvm.h b/r5dev/squirrel/sqvm.h index 9f2b4f53..dae065c0 100644 --- a/r5dev/squirrel/sqvm.h +++ b/r5dev/squirrel/sqvm.h @@ -101,38 +101,43 @@ void SQVM_Detach(); /////////////////////////////////////////////////////////////////////////////// class HSQVM : public IDetour { - virtual void debugp() + virtual void GetAdr(void) const { - std::cout << "| FUN: SQVM_PrintFunc : 0x" << std::hex << std::uppercase << p_SQVM_PrintFunc.GetPtr() << std::setw(npad) << " |" << std::endl; - std::cout << "| FUN: SQVM_WarningFunc : 0x" << std::hex << std::uppercase << p_SQVM_WarningFunc.GetPtr() << std::setw(npad) << " |" << std::endl; - std::cout << "| FUN: SQVM_GetErrorLine : 0x" << std::hex << std::uppercase << p_SQVM_GetErrorLine.GetPtr() << std::setw(npad) << " |" << std::endl; - std::cout << "| FUN: SQVM_LoadScript : 0x" << std::hex << std::uppercase << p_SQVM_LoadScript.GetPtr() << std::setw(npad) << " |" << std::endl; - std::cout << "| FUN: SQVM_LoadRson : 0x" << std::hex << std::uppercase << p_SQVM_LoadRson.GetPtr() << std::setw(npad) << " |" << std::endl; - std::cout << "| FUN: SQVM_WarningCmd : 0x" << std::hex << std::uppercase << p_SQVM_WarningCmd.GetPtr() << std::setw(npad) << " |" << std::endl; - std::cout << "| FUN: SQVM_RegisterFunc : 0x" << std::hex << std::uppercase << p_SQVM_RegisterFunc.GetPtr() << std::setw(npad) << " |" << std::endl; - std::cout << "| FUN: SQVM_CompileError : 0x" << std::hex << std::uppercase << p_SQVM_CompileError.GetPtr() << std::setw(npad) << " |" << std::endl; + std::cout << "| FUN: SQVM_PrintFunc : 0x" << std::hex << std::uppercase << p_SQVM_PrintFunc.GetPtr() << std::setw(nPad) << " |" << std::endl; + std::cout << "| FUN: SQVM_WarningFunc : 0x" << std::hex << std::uppercase << p_SQVM_WarningFunc.GetPtr() << std::setw(nPad) << " |" << std::endl; + std::cout << "| FUN: SQVM_GetErrorLine : 0x" << std::hex << std::uppercase << p_SQVM_GetErrorLine.GetPtr() << std::setw(nPad) << " |" << std::endl; + std::cout << "| FUN: SQVM_LoadScript : 0x" << std::hex << std::uppercase << p_SQVM_LoadScript.GetPtr() << std::setw(nPad) << " |" << std::endl; + std::cout << "| FUN: SQVM_LoadRson : 0x" << std::hex << std::uppercase << p_SQVM_LoadRson.GetPtr() << std::setw(nPad) << " |" << std::endl; + std::cout << "| FUN: SQVM_WarningCmd : 0x" << std::hex << std::uppercase << p_SQVM_WarningCmd.GetPtr() << std::setw(nPad) << " |" << std::endl; + std::cout << "| FUN: SQVM_RegisterFunc : 0x" << std::hex << std::uppercase << p_SQVM_RegisterFunc.GetPtr() << std::setw(nPad) << " |" << std::endl; + std::cout << "| FUN: SQVM_CompileError : 0x" << std::hex << std::uppercase << p_SQVM_CompileError.GetPtr() << std::setw(nPad) << " |" << std::endl; #ifndef CLIENT_DLL - std::cout << "| FUN: SQVM_InitializeSVGlobalScriptStructs : 0x" << std::hex << std::uppercase << p_SQVM_InitializeSVGlobalScriptStructs.GetPtr() << std::setw(npad) << " |" << std::endl; + std::cout << "| FUN: SQVM_InitializeSVGlobalScriptStructs : 0x" << std::hex << std::uppercase << p_SQVM_InitializeSVGlobalScriptStructs.GetPtr() << std::setw(nPad) << " |" << std::endl; #endif // !CLIENT_DLL #ifndef DEDICATED - std::cout << "| FUN: SQVM_InitializeCLGlobalScriptStructs : 0x" << std::hex << std::uppercase << p_SQVM_InitializeCLGlobalScriptStructs.GetPtr() << std::setw(npad) << " |" << std::endl; + std::cout << "| FUN: SQVM_InitializeCLGlobalScriptStructs : 0x" << std::hex << std::uppercase << p_SQVM_InitializeCLGlobalScriptStructs.GetPtr() << std::setw(nPad) << " |" << std::endl; #endif // !DEDICATED #ifndef CLIENT_DLL - std::cout << "| FUN: SQVM_CreateServerVM : 0x" << std::hex << std::uppercase << p_SQVM_CreateServerVM.GetPtr() << std::setw(npad) << " |" << std::endl; + std::cout << "| FUN: SQVM_CreateServerVM : 0x" << std::hex << std::uppercase << p_SQVM_CreateServerVM.GetPtr() << std::setw(nPad) << " |" << std::endl; #endif // !CLIENT_DLL #ifndef DEDICATED - std::cout << "| FUN: SQVM_CreateClientVM : 0x" << std::hex << std::uppercase << p_SQVM_CreateClientVM.GetPtr() << std::setw(npad) << " |" << std::endl; - std::cout << "| FUN: SQVM_CreateUIVM : 0x" << std::hex << std::uppercase << p_SQVM_CreateUIVM.GetPtr() << std::setw(npad) << " |" << std::endl; + std::cout << "| FUN: SQVM_CreateClientVM : 0x" << std::hex << std::uppercase << p_SQVM_CreateClientVM.GetPtr() << std::setw(nPad) << " |" << std::endl; + std::cout << "| FUN: SQVM_CreateUIVM : 0x" << std::hex << std::uppercase << p_SQVM_CreateUIVM.GetPtr() << std::setw(nPad) << " |" << std::endl; #endif // !DEDICATED #ifndef CLIENT_DLL - std::cout << "| VAR: g_pServerVM : 0x" << std::hex << std::uppercase << g_pServerVM.GetPtr() << std::setw(npad) << " |" << std::endl; + std::cout << "| VAR: g_pServerVM : 0x" << std::hex << std::uppercase << g_pServerVM.GetPtr() << std::setw(nPad) << " |" << std::endl; #endif // !CLIENT_DLL #ifndef DEDICATED - std::cout << "| VAR: g_pClientVM : 0x" << std::hex << std::uppercase << g_pClientVM.GetPtr() << std::setw(npad) << " |" << std::endl; - std::cout << "| VAR: g_pUIVM : 0x" << std::hex << std::uppercase << g_pUIVM.GetPtr() << std::setw(npad) << " |" << std::endl; + std::cout << "| VAR: g_pClientVM : 0x" << std::hex << std::uppercase << g_pClientVM.GetPtr() << std::setw(nPad) << " |" << std::endl; + std::cout << "| VAR: g_pUIVM : 0x" << std::hex << std::uppercase << g_pUIVM.GetPtr() << std::setw(nPad) << " |" << std::endl; #endif // !DEDICATED std::cout << "+----------------------------------------------------------------+" << std::endl; } + virtual void GetFun(void) const { } + virtual void GetVar(void) const { } + virtual void GetCon(void) const { } + virtual void Attach(void) const { } + virtual void Detach(void) const { } }; /////////////////////////////////////////////////////////////////////////////// diff --git a/r5dev/studiorender/studiorendercontext.h b/r5dev/studiorender/studiorendercontext.h index 33d6b041..b145f4f6 100644 --- a/r5dev/studiorender/studiorendercontext.h +++ b/r5dev/studiorender/studiorendercontext.h @@ -20,12 +20,17 @@ inline CMemory CStudioRenderContext__LoadMaterials = g_mGameDll.FindPatternSIMD( /////////////////////////////////////////////////////////////////////////////// class HStudioRenderContext : public IDetour { - virtual void debugp() + virtual void GetAdr(void) const { - std::cout << "| FUN: CStudioRenderContext::LoadModel : 0x" << std::hex << std::uppercase << CStudioRenderContext__LoadModel.GetPtr() << std::setw(npad) << " |" << std::endl; - std::cout << "| FUN: CStudioRenderContext::LoadMaterials : 0x" << std::hex << std::uppercase << CStudioRenderContext__LoadMaterials.GetPtr() << std::setw(npad) << " |" << std::endl; + std::cout << "| FUN: CStudioRenderContext::LoadModel : 0x" << std::hex << std::uppercase << CStudioRenderContext__LoadModel.GetPtr() << std::setw(nPad) << " |" << std::endl; + std::cout << "| FUN: CStudioRenderContext::LoadMaterials : 0x" << std::hex << std::uppercase << CStudioRenderContext__LoadMaterials.GetPtr() << std::setw(nPad) << " |" << std::endl; std::cout << "+----------------------------------------------------------------+" << std::endl; } + virtual void GetFun(void) const { } + virtual void GetVar(void) const { } + virtual void GetCon(void) const { } + virtual void Attach(void) const { } + virtual void Detach(void) const { } }; /////////////////////////////////////////////////////////////////////////////// diff --git a/r5dev/thirdparty/detours/include/idetour.h b/r5dev/thirdparty/detours/include/idetour.h index 63474cfe..22d40987 100644 --- a/r5dev/thirdparty/detours/include/idetour.h +++ b/r5dev/thirdparty/detours/include/idetour.h @@ -1,9 +1,7 @@ -#include - #ifndef IDETOUR_H #define IDETOUR_H -#define ADDDETOUR(x,y) static size_t dummy_reg_##y = AddDetour( new x() ); +#define ADDDETOUR(x,y) static std::size_t dummy_reg_##y = AddDetour( new x() ); #define XREGISTER(x,y) ADDDETOUR(x, y) #define REGISTER(x) XREGISTER(x, __COUNTER__) @@ -11,29 +9,36 @@ class IDetour { public: virtual ~IDetour() { ; } - //virtual void attach() = 0; - //virtual void detach() = 0; - virtual void debugp() = 0; + virtual void GetAdr(void) const = 0; + virtual void GetFun(void) const = 0; + virtual void GetVar(void) const = 0; + virtual void GetCon(void) const = 0; + + virtual void Attach(void) const = 0; + virtual void Detach(void) const = 0; +}; + +class HDetour : public IDetour +{ + virtual void GetAdr(void) const { } + virtual void GetFun(void) const { } + virtual void GetVar(void) const { } + virtual void GetCon(void) const { } + + virtual void Attach(void) const { } + virtual void Detach(void) const { } }; namespace { - std::int32_t npad = 9; - std::vector vdetour; - size_t AddDetour(IDetour* idtr) + std::int32_t nPad = 9; + std::vector vDetour; + std::size_t AddDetour(IDetour* pDetour) { - vdetour.push_back(idtr); - return vdetour.size(); + vDetour.push_back(pDetour); + return vDetour.size(); } } -class H : public IDetour -{ - virtual void debugp() - { - // - } -}; - -REGISTER(H); +REGISTER(HDetour); #endif // IDETOUR_H diff --git a/r5dev/tier0/commandline.h b/r5dev/tier0/commandline.h index ecd5227b..60bf7590 100644 --- a/r5dev/tier0/commandline.h +++ b/r5dev/tier0/commandline.h @@ -23,11 +23,16 @@ extern CCommandLine* g_pCmdLine; /////////////////////////////////////////////////////////////////////////////// class HCommandLine : public IDetour { - virtual void debugp() + virtual void GetAdr(void) const { std::cout << "| VAR: g_pCmdLine : 0x" << std::hex << std::uppercase << g_pCmdLine << std::setw(0) << " |" << std::endl; std::cout << "+----------------------------------------------------------------+" << std::endl; } + virtual void GetFun(void) const { } + virtual void GetVar(void) const { } + virtual void GetCon(void) const { } + virtual void Attach(void) const { } + virtual void Detach(void) const { } }; /////////////////////////////////////////////////////////////////////////////// diff --git a/r5dev/tier1/IConVar.h b/r5dev/tier1/IConVar.h index 06ad7ebe..17fb2bc1 100644 --- a/r5dev/tier1/IConVar.h +++ b/r5dev/tier1/IConVar.h @@ -178,15 +178,20 @@ extern ConVar* g_pConVar; /////////////////////////////////////////////////////////////////////////////// class HConVar : public IDetour { - virtual void debugp() + virtual void GetAdr(void) const { - std::cout << "| FUN: IConVar::IsFlagSet : 0x" << std::hex << std::uppercase << p_IConVar_IsFlagSet.GetPtr() << std::setw(npad) << " |" << std::endl; - std::cout << "| FUN: IConVar::SetInfo : 0x" << std::hex << std::uppercase << p_ConVar_SetInfo.GetPtr() << std::setw(npad) << " |" << std::endl; - std::cout << "| FUN: IConVar::Register : 0x" << std::hex << std::uppercase << p_ConVar_Register.GetPtr() << std::setw(npad) << " |" << std::endl; - std::cout << "| VAR: g_pConVarVtable : 0x" << std::hex << std::uppercase << g_pConVarVtable.GetPtr() << std::setw(npad) << " |" << std::endl; - std::cout << "| VAR: g_pIConVarVtable : 0x" << std::hex << std::uppercase << g_pIConVarVtable.GetPtr() << std::setw(npad) << " |" << std::endl; + std::cout << "| FUN: IConVar::IsFlagSet : 0x" << std::hex << std::uppercase << p_IConVar_IsFlagSet.GetPtr() << std::setw(nPad) << " |" << std::endl; + std::cout << "| FUN: IConVar::SetInfo : 0x" << std::hex << std::uppercase << p_ConVar_SetInfo.GetPtr() << std::setw(nPad) << " |" << std::endl; + std::cout << "| FUN: IConVar::Register : 0x" << std::hex << std::uppercase << p_ConVar_Register.GetPtr() << std::setw(nPad) << " |" << std::endl; + std::cout << "| VAR: g_pConVarVtable : 0x" << std::hex << std::uppercase << g_pConVarVtable.GetPtr() << std::setw(nPad) << " |" << std::endl; + std::cout << "| VAR: g_pIConVarVtable : 0x" << std::hex << std::uppercase << g_pIConVarVtable.GetPtr() << std::setw(nPad) << " |" << std::endl; std::cout << "+----------------------------------------------------------------+" << std::endl; } + virtual void GetFun(void) const { } + virtual void GetVar(void) const { } + virtual void GetCon(void) const { } + virtual void Attach(void) const { } + virtual void Detach(void) const { } }; /////////////////////////////////////////////////////////////////////////////// diff --git a/r5dev/tier1/cmd.h b/r5dev/tier1/cmd.h index 5ee948a6..0a2360f4 100644 --- a/r5dev/tier1/cmd.h +++ b/r5dev/tier1/cmd.h @@ -166,21 +166,26 @@ extern ConCommand* g_pConCommand; /////////////////////////////////////////////////////////////////////////////// class HConCommand : public IDetour { - virtual void debugp() + virtual void GetAdr(void) const { - std::cout << "| FUN: Cbuf_AddText : 0x" << std::hex << std::uppercase << p_Cbuf_AddText.GetPtr() << std::setw(npad) << " |" << std::endl; - std::cout << "| FUN: Cbuf_Execute : 0x" << std::hex << std::uppercase << p_Cbuf_Execute.GetPtr() << std::setw(npad) << " |" << std::endl; + std::cout << "| FUN: Cbuf_AddText : 0x" << std::hex << std::uppercase << p_Cbuf_AddText.GetPtr() << std::setw(nPad) << " |" << std::endl; + std::cout << "| FUN: Cbuf_Execute : 0x" << std::hex << std::uppercase << p_Cbuf_Execute.GetPtr() << std::setw(nPad) << " |" << std::endl; std::cout << "+----------------------------------------------------------------+" << std::endl; - std::cout << "| FUN: ConCommandBase::IsFlagSet : 0x" << std::hex << std::uppercase << p_ConCommandBase_IsFlagSet.GetPtr() << std::setw(npad) << " |" << std::endl; - std::cout << "| FUN: ConCommand::CMaterialSystemCmdInit : 0x" << std::hex << std::uppercase << p_ConCommand_CMaterialSystemCmdInit.GetPtr() << std::setw(npad) << " |" << std::endl; - std::cout << "| FUN: ConCommand::RegisterConCommand : 0x" << std::hex << std::uppercase << p_ConCommand_RegisterConCommand.GetPtr() << std::setw(npad) << " |" << std::endl; + std::cout << "| FUN: ConCommandBase::IsFlagSet : 0x" << std::hex << std::uppercase << p_ConCommandBase_IsFlagSet.GetPtr() << std::setw(nPad) << " |" << std::endl; + std::cout << "| FUN: ConCommand::CMaterialSystemCmdInit : 0x" << std::hex << std::uppercase << p_ConCommand_CMaterialSystemCmdInit.GetPtr() << std::setw(nPad) << " |" << std::endl; + std::cout << "| FUN: ConCommand::RegisterConCommand : 0x" << std::hex << std::uppercase << p_ConCommand_RegisterConCommand.GetPtr() << std::setw(nPad) << " |" << std::endl; std::cout << "+----------------------------------------------------------------+" << std::endl; - std::cout << "| FUN: CallbackStub : 0x" << std::hex << std::uppercase << p_CallbackStub.GetPtr() << std::setw(npad) << " |" << std::endl; - std::cout << "| FUN: NullSub : 0x" << std::hex << std::uppercase << p_NullSub.GetPtr() << std::setw(npad) << " |" << std::endl; + std::cout << "| FUN: CallbackStub : 0x" << std::hex << std::uppercase << p_CallbackStub.GetPtr() << std::setw(nPad) << " |" << std::endl; + std::cout << "| FUN: NullSub : 0x" << std::hex << std::uppercase << p_NullSub.GetPtr() << std::setw(nPad) << " |" << std::endl; std::cout << "+----------------------------------------------------------------+" << std::endl; - std::cout << "| VAR: g_pConCommandVtable : 0x" << std::hex << std::uppercase << g_pConCommandVtable.GetPtr() << std::setw(npad) << " |" << std::endl; + std::cout << "| VAR: g_pConCommandVtable : 0x" << std::hex << std::uppercase << g_pConCommandVtable.GetPtr() << std::setw(nPad) << " |" << std::endl; std::cout << "+----------------------------------------------------------------+" << std::endl; } + virtual void GetFun(void) const { } + virtual void GetVar(void) const { } + virtual void GetCon(void) const { } + virtual void Attach(void) const { } + virtual void Detach(void) const { } }; /////////////////////////////////////////////////////////////////////////////// diff --git a/r5dev/tier1/cvar.h b/r5dev/tier1/cvar.h index c6cfccf0..80334b1b 100644 --- a/r5dev/tier1/cvar.h +++ b/r5dev/tier1/cvar.h @@ -140,13 +140,18 @@ inline auto CCVar_GetCommandLineValue = p_CCVar_GetCommandLineValue.RCast