Pointer auf Funktion, Funktion aufrufen



  • Hi,

    ich habe ein Programm an der Adresse 0x8200. Nun möchte ich dort hin springen. Dazu habe ich eine Funktion int execute(int (*ptrRoutine)()).

    int execute(int (*ptrRoutine)())
    {
      int i;
      i = (*ptrRoutine)();
      return i;
    }
    

    An 0x8200 steht folgender Code:

    [Bits 32]
           org   0x8200
    hang:  jmp   hang
           retf
    

    Die Funktion execute rufe ich folgendermaßen auf:

    execute(0x8200);

    Aber aus irgendeinem Grund funktioniert das nicht. Also im Emulator bleibt er nicht an der Stelle 0x8200, wenn er dort überhaupt ankommt. Nur warum? Ist der Aufruf [i = (*ptrRoutine)();] der Funktion falsch?

    Grüße Cheebi



  • probier mal so

    int execute (void *f)
    {
        return ((int(*)(void))f)();
    }
    ...
    execute ((void*)0x8200);
    ...
    

    :xmas2:


Anmelden zum Antworten