Offset einer Funktion

  • Hey ho :-)
    ich habe ein Problem und zwar möchte ich das Offset bekommen von einer Funktion die in meinem
    Programm definiert ist.


    Als erstes meine Funktion:


    Code
    1. int hMessageBox( HWND h, LPCSTR cap, LPCSTR Text, UINT type )
    2. {
    3. return MessageBoxA( h, cap, Text, type );
    4. }


    Ich habe versucht die Adresse über einen Pointer zu bekommen.


    //Header

    Code
    1. typedef int ( *pMessageBox )( HWND h, LPCSTR cap, LPCSTR Text, UINT type );


    Dann habe ich versucht so die Adresse zu bekommen..


    Code
    1. pMessageBox myPointer = &hMessageBox;


    Leider ohne Erfolg. Ich hoffe mir kann jemand weiterhelfen :P
    Danke schonmal für eure Antworten.


    Mfg,
    Chiller

  • Was ist den genau dein Problem? Bei mir funkt dein Code ohne Probleme.
    Wenn ich mich recht erinnere gibt man beim typedef allerdings nur die Typen der Parameter an und nicht noch die Namen :)

  • Zitat

    [...]Leider ohne Erfolg[...]


    Du musst uns schon ein bisschen genauer beschreiben, was bei dir nicht funktioniert und welche falschen Ergebnisse du bekommst.


    MfG

  • Ja dongdong das der Code ohne Fehler zu compilen ist weiß ich :-) Aber ob die Adresse so stimmt glaube ich nicht. Man kann auch den typedef ohne die Namen machen :P
    Ich habe dann versucht die Länge meiner Funktion zubekommen, von der ich die Adresse suche.



    Das Programm crashed... Ich weiß nicht woran es liegt. Ich denke die Adresse ist falsch.
    Hat jemand ne Idee, wie ich das gefixt bekomme?


    Mfg,
    Chiller

  • Die Addresse stimmt aber.
    Bei deinem ersten Beispiel solltest du ohne Probleme myPointer(0, "lol", "123", 0); callen können zum Beispiel und dann muss die MessageBox aufspringen. Wenn das so ist, stimmt die Addresse auf jedenfall (das hab ich auch mit funktionieren gemeint, ich hab das ja gestern abend noch genau so ausprobiert)


    Du musst bei deiner getLength Funktion das EAX register saven und wieder herstellen