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