Hey, ich habe jetzt mal mit der Funktion von Heavyhacker versucht eine Funktion zu hooken.
In meinem Code so umgesetzt:
Die Zeiger der 2 vtable's zeigen anschließend auf meine Funktion, statt auf die original Funktion. Trotzdem wird noch die originalfunktion ausgeführt.
Was habe ich schwerwiegendes übersehen?
Code:
PBYTE HookVTable(DWORD** VTablePtr, int VTableIndex, PBYTE HookPtr)
{
DWORD oldProtect;
VirtualProtect((void*)((*VTablePtr)+(VTableIndex*sizeof(DWORD))),sizeof(DWORD),PAGE_EXECUTE_READWRITE,&oldProtect);
PBYTE original=((BYTE*)(*VTablePtr)[VTableIndex]);
(*VTablePtr)[VTableIndex]=(DWORD)HookPtr;
VirtualProtect((void*)((*VTablePtr)+(VTableIndex*sizeof(DWORD))),sizeof(DWORD),oldProtect,&oldProtect);
return original;
}
Code:
pEndScene = (EndScene_a)HookVTable(&ViTableStart, index, (PBYTE)hkEndScenea);
Was habe ich schwerwiegendes übersehen?