T.M. schriebJa, aber der wird ja dann mit überschrieben, funktioniert also auch nicht mehr richtig. Kann sein, der wird schlicht nicht mehr benötigt.
Jain, was braucht man denn schon. eax, edx, eip, esp? Ist halt komfortabler 😉
EBP ist "offiziell" ein "Zeiger auf temporäre Speicherstellen im Stack (z. B. Stackframe für lokale Variablen etc.)"
Quelle: Wikipedia
Kannst du aber auch Zweckentfremden, wie fast alle Register.
Smon schriebUm Probleme zu vermeiden, habe ich mir angewöhnt, den EBP immer "richtig" zu überschreiben.
In diesem Beispiel wird exit() noch in der Funktion aufgerufen, die angesprungen wird. Normalerweiße hast du diesen Komfort aber nicht, sondern du willst ja unentdeckt bleiben. Also sollte dein Exploit auch wieder alles so reparieren, dass der Code, der danach kommt, keine Fehler mehr wirft und das Programm regulär weiter läuft.