Adresse einer Klassen-Methode als Parameter übergeben

Hi,

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 :)
 
Zurück
Oben