Zitat:
|
Doch warum 4? Hat das einen bestimmten Grund oder ist das immer so?
|
4 Bytes ist die Registerbreite. Damit arbeiten auch die Stackoperationen (Push/Pop) - womit auch die Parameter übereben werden. D.h dass die Anzahl der auf dem Stack "abgelegt" Parameter-Bytes ein Vielfaches von 4 ist (von irgendwelchen exotischen Methoden mal abgesehen).
zum Stdcall: streng genommen wäre dieser Link interessanter
http://en.wikipedia.org/wiki/X86_calling_conventions
Btw: wenn man den "dirty-way" nimmt, kann man einfach die ersten 6 Bytes sichern und mit dem JMP überschreiben.
Code:
PUSH EBP
MOV EBP,ESP
SUB ESP,8
Sofern man eine bestimmte Funktion hooken möchte, muss die Umsetzung nicht allgemeingültig sein - es reicht aus, wenn diese Anweisungen letzendlich noch ausgeführt werden.