The Way to Programming
The Way to Programming
I’m having a hard time hooking a function of a game.
I can use the function, so the Address and Offset are correct.
What I am trying to do is, retrieve what arguments this function push’s into the game.
But it doesn’t actually get hooked, any help ?
I’m using Visual C++ 2008 to compile it.
HookVTable Function:
DWORD HookVTable( DWORD* dwFuncPtr, DWORD dwHook)
{
DWORD dwOld = NULL;
VirtualProtect((void*)dwFuncPtr, 4, PAGE_EXECUTE_READWRITE, &dwOld);
DWORD pOrig = *(PDWORD)dwFuncPtr;
*(PDWORD)dwFuncPtr = (DWORD)dwHook;
VirtualProtect((void*)dwFuncPtr, 4, dwOld, &dwOld);
return pOrig;
}
Rest of the Code
DWORD dwBase = reinterpret_cast< DWORD >( GetModuleHandle( L"GameClient.dll" ) );
DWORD ILTClientPtr = *reinterpret_cast< DWORD* >( dwBase + 0x509A58 );
DWORD* lpRunConsoleString = reinterpret_cast< DWORD* >( ILTClientPtr + 0x130 );
void WINAPIV hkFrontConsoleCommand( const char* Commands ){
g_LTClient = (CLTClient*)*(DWORD*)ADDR_ILTCLIENT;
add_log("Log.txt", Commands);
return ( ( void (WINAPIV* )( const char* ) )*( DWORD* )( **( DWORD** )( 0x10509A58 ) + 0x130 ) )( Commands );
}
int HookSVC(){
if ( pEngine->ValidGamePointers() ){
HookVTable( lpRunConsoleString, (DWORD)hkFrontConsoleCommand );
}
}
IT’s hard to say , but seems that you point a some wrong area memory , try to implement some flag or reference count , and check the result …
I would to see all the code … to know exactly what happen..
Sign in to your account