eine "andere" methode vtable funktionen zu hooken, die meisten hooken direkt die funktion!
diese funktion hier nicht, es wird nur der vtable eintrag überschrieben... vorteil: es wird keine backup funktion benötigt da die gehookte funktion nicht + geändert wird! zwar nur eine kleinigkeit, finde ich trotzdem einfacher als immer CreateHook((void*)VTable[4], hookVTable4,true,true); zu callen!
ich werds nicht weiter erklären, man sollte es verstehen:
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;
}
edit: nochmal die parameterlist (wobei man selbst drauf kommen sollte was die bedeuten
VTablePtr - pointer zur vtable (in den meisten fällen von FindPattern etc.)
VTableIndex - index der zu hookenden funktion
HookPtr - pointer zur funktion die gecalled werden soll






