Basiswissen Buffer Overflow

14.05.2004
Von Thomas Wölfer

In einem solchen Fall passiert im Binärcode folgendes:

Zunächst wird der aktuelle Wert des SP ausgelesen und an diese Adresse der der Wert 4 geschrieben.

Der SP wird um die Byte-Größe einer Ganzzahl erhöht.

Dann wird ein JMP an die Adresse von ErsteFunktion ausgeführt.

ErsteFunktion weiß, dass sie einen Integer-Wert als Parameter erhält und holt diesen vom Stack, indem sie den SP ausliest, ihn um die Byte-Größe eines Integers vermindert und ab dieser Adresse die Daten ausliest.

Da das oberste Elemente (der Integer) dabei vom Stack genommen wurde, wird der SP wieder runtergesetzt und zeigt nun auf die Adresse, an die er gezeigt hat, bevor der Integer auf den Stack geschrieben wurde.