Credits: deadnesser,me,rcontool,gamedeception
Code: Select all
//Punkbuster used GetSystemTimeAsFileTime for PBSS you know
.idata:0045D0E4 ; void __stdcall GetSystemTimeAsFileTime(LPFILETIME lpSystemTimeAsFileTime)
.idata:0045D0E4 extrn GetSystemTimeAsFileTime:dword ; CODE XREF: _time+9p
void CleanVisuals( LPFILETIME lpSystemTimeAsFileTime )
{
cvar.on=0;//Clean out visuals
cvar.pbmade=false;//Punkbuster Screenshoot notifications
Sleep(2000);//2 Sek Time before visuals goes back On
cvar.pbmade=true;//Punkbuster Screenshoot notifications
cvar.on=1;//Clean out visuals
}
void (WINAPI*orig_PunkbusterClean_Screenshoots)( LPFILETIME lpSystemTimeAsFileTime );
void WINAPI hook_PunkbusterClean_Screenshoots( LPFILETIME lpSystemTimeAsFileTime )
{
_beginthread((void (__cdecl *)(void *))CleanVisuals, 0, lpSystemTimeAsFileTime );
orig_PunkbusterClean_Screenshoots( lpSystemTimeAsFileTime );
}
detour it
DetourFunction( ( PBYTE )GetSystemTimeAsFileTime, ( PBYTE )&hook_PunkbusterClean_Screenshoots );
__asm mov [ orig_PunkbusterClean_Screenshoots ], eax;
Code: Select all
void CleanVisuals( LPFILETIME lpSystemTimeAsFileTime )
{
cvar.on=0;//Clean out visuals
cvar.pbmade=false;//Punkbuster Screenshoot notifications
Sleep(2000);//2 Sek Time before visuals goes back On
cvar.pbmade=true;//Punkbuster Screenshoot notifications
cvar.on=1;//Clean out visuals
}
DETOUR_TRAMPOLINE(DWORD WINAPI orig_PunkbusterClean_Screenshoots( LPFILETIME lpSystemTimeAsFileTime ), GetSystemTimeAsFileTime);
void WINAPI hook_PunkbusterClean_Screenshoots( LPFILETIME lpSystemTimeAsFileTime )
{
_beginthread((void (__cdecl *)(void *))CleanVisuals, 0, lpSystemTimeAsFileTime );
orig_PunkbusterClean_Screenshoots( lpSystemTimeAsFileTime );
}
DetourFunctionWithTrampoline((PBYTE)orig_PunkbusterClean_Screenshoots, (PBYTE)hook_PunkbusterClean_Screenshoots);
http://sethioz.com/forum/viewtopic.php? ... 596&p=3386