Hi,
hab in mein Programm einen Detour eingebaut, den ich aus einem Tutorial habe.
Der Detour an sich funktioniert bei mir ohne Probleme. Allerdings habe ich die Funktion welche ich durch den Detour aufrufen möchte in eine Klasse ausgelagert.
Den Detour selbst habe ich auch noch in eine Klasse "Hooker" ausgelagert.
Das ganze möchte ich so aufrufen:
Der Compiler meckert aber:
Habe schon selbst versucht das Problem durch google zu lösen aber nicht wirklich Erfolg dabei gehabt
Hoffe ihr könnt mir da weiterhelfen
hab in mein Programm einen Detour eingebaut, den ich aus einem Tutorial habe.
Code:
bool Hooker::DetourFunc(BYTE* oldFunc, BYTE* newFunc, DWORD len)
{
BYTE* newMem4base = NULL;
DWORD dwOld;
newMem4base = ( BYTE* )malloc( 5+len );
if( newMem4base == NULL )
return false;
for( DWORD i = 0; i < ( len+5 ); i++ )
newMem4base[i] = 0x90;
VirtualProtect( oldFunc, len, PAGE_READWRITE, &dwOld );
memcpy( newMem4base, oldFunc, len );
oldFunc[0] = 0xE8;
*( DWORD* )( oldFunc+0x01 ) = DWORD( newFunc-oldFunc-5 );
oldFunc[5] = 0xE9;
*( DWORD* )( oldFunc+0x06 ) = DWORD( newMem4base-( oldFunc+0x5 )-5 );
newMem4base += len;
newMem4base[0] = 0xE9;
*( DWORD* )( newMem4base+0x01 ) = DWORD( ( oldFunc+10 )-newMem4base-5 );
for( DWORD i = 10; i <len; i++ )
oldFunc[i] = 0x90;
return true;
}
Der Detour an sich funktioniert bei mir ohne Probleme. Allerdings habe ich die Funktion welche ich durch den Detour aufrufen möchte in eine Klasse ausgelagert.
Den Detour selbst habe ich auch noch in eine Klasse "Hooker" ausgelagert.
Das ganze möchte ich so aufrufen:
Code:
HookFunc.DetourFunc( ( BYTE* )0x1002EAB, ( BYTE* )&Player.SendField, 13 );
Der Compiler meckert aber:
error C2276: '&': Ungültige Operation auf Ausdruck einer gebundenen Memberfunktion
Habe schon selbst versucht das Problem durch google zu lösen aber nicht wirklich Erfolg dabei gehabt

Hoffe ihr könnt mir da weiterhelfen
