[...]
Woher weiß die Funktion, wo die original Methode liegt?
Die original
API bekommt man ja über GetProcAddress(LoadLibrary('kernel32.dll'), 'MessageBoxW'). Im Buffer von O_MessageBoxW befindet sich dann wie schon erwähnt der Jump zur Originaladresse (+ die Anzahl der schon überschriebenen / ausgeführten Bytes).
Nein ich meinte eher, irgendwo rufst du doch "MessageBox(...)" auf. Diesen Aufruf hookst du doch. Dann springst du da in den Callback mit RETN, aber dadrin kommst du doch nicht zum original Aufruf wieder zurück, oder habe ich da was übersehen?
MfG
Fabian