rendered paste bodyvoid ApplyHook()
{
orig_CG_Init = (void (WINAPIV *)(int,int,int,int)) \
DetourFunction((PBYTE)Game->CG_Init, (PBYTE)CG_Init_Hook );
__asm mov [ orig_CG_Init ], eax;
orig_RegisterFont = (DWORD (__cdecl *)(char *,int)) \
DetourFunction((PBYTE)Game->CG_RegisterFont, (PBYTE)R_RegisterFont);
__asm mov [ orig_RegisterFont ], eax;
orig_RenderScene = (void (__cdecl *)(void)) \
DetourFunction((PBYTE)Game->CG_RenderScene, (PBYTE)R_RenderScene);
__asm mov [ orig_RenderScene ], eax;
orig_EndFrame = (void (__cdecl *)(void)) \
DetourFunction((PBYTE)Game->CG_EndFrame, (PBYTE)EndFrame );
__asm mov [ orig_EndFrame ], eax;
orig_CG_FireRecoil = (void (__cdecl *)(void)) \
DetourFunction((PBYTE)Game->CG_FireRecoil, (PBYTE)CG_FireRecoil);
__asm mov [ orig_CG_FireRecoil ], eax;
orig_CG_Obituary = (void (__cdecl *)(void)) \
DetourFunction((PBYTE)Game->CG_Obituary, (PBYTE)CG_Obituary_Hook );
__asm mov [ orig_CG_Obituary ], eax;
orig_CvarReg = (vmCvar_t *(__cdecl *)(LPCSTR,int,int,LPCSTR,int,int,int,int,int,int)) \
DetourFunction((PBYTE)Game->CG_CvarReg, (PBYTE)CvarReg_Hook );
__asm mov [ orig_CvarReg ], eax;
}
void RemoveHook( )
{
DetourRemove((PBYTE)orig_CG_Init, (PBYTE)CG_Init_Hook );
DetourRemove((PBYTE)orig_RegisterFont, (PBYTE)R_RegisterFont );
DetourRemove((PBYTE)orig_RenderScene, (PBYTE)R_RenderScene );
DetourRemove((PBYTE)orig_EndFrame, (PBYTE)EndFrame );
DetourRemove((PBYTE)orig_CG_FireRecoil, (PBYTE)CG_FireRecoil );
DetourRemove((PBYTE)orig_CG_Obituary, (PBYTE)CG_Obituary_Hook );
DetourRemove((PBYTE)orig_CvarReg, (PBYTE)CvarReg_Hook );
}
DWORD ToggleHookThread( )
{
Sleep( 2000 );
ApplyHook( );
return 0;
}
void ToggleHook( )
{
RemoveHook( );
CTHREAD( ToggleHookThread, 0 );
}
DWORD ( WINAPI *orig_VirtualQueryEx )( HANDLE Process, void *pAddress, PMEMORY_BASIC_INFORMATION pMBIBuffer, DWORD Length );
DWORD WINAPI VirtualQueryEx_Hook( HANDLE Process, void *pAddress, PMEMORY_BASIC_INFORMATION pMBIBuffer, DWORD Length )
{
if( (DWORD)pAddress == 0x400000 && Length == 0x1C && ToggleHookFinished == true )
{
ToggleHookFinished = false;
ToggleHook( );
}
return orig_VirtualQueryEx( Process, pAddress, pMBIBuffer, Length );
}