Visual C++ Adresse einer Fkt

  • Hey,

    ich habe eine Funktion und dort schreibe ich in inline assembler meinen Code. Den kompilierten Code möchte ich gerne innerhalb des Programmes benutzen, daher würde ich ihn gerne auslesen.

    Zurzeit habe ich so codes wie:

    void test(int offset) {
    ..
    }


    void *t1 = (void *)test;
    void *t2 = (void *&)test;
    void *t3 = void *)&test;
    void *t4 =
    void (__thiscall MyClassName::* pFunc)(int) = &MyClassName::test;
    tester = (void*&)pFunc;

    usw.
    aber ich bekomme _immer_ nur die Adresse von "jmp xxxxxxx" Wobei xxxxxx dann zu meiner eigentlichen Funktion springt.

    Jetzt könnte ich diese Addresse her nehmen und zu dieser Addresse den Offset der an der Addresse +1 (1 byte opcode für jmp) berechnen, aber das muss doch auch in C Code gehen oder? Oder kriegt man unter Visual C++ wirklich nicht die tatsächliche Funktiosnadresse raus sondern nur den Umweg über ein jmp?

    edit:
    Hab das ganze natürlich innerhalb einer Klasse als auch außerhalb Probiert (die Funktion)

    edit2:

    Ach, habs schon gefunden. Incremental Linking heißt die Option bei Visual Studio und muss man auf Off schalten...

    "The quieter you become, the more you are able to hear."
    -------------------------------------------------------------------------------------

    Einmal editiert, zuletzt von Juggl3r (17. August 2013 um 23:02)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!