Das heißt folgendes: Jetzt wird es etwas länger. *tief.luft.hol*
Nehmen wir an du hast zwei Variablen auf dem Stack abgelegt:
Jetzt hängst du an v2 etwas hintendran. Der Speicher Bereich für v2 ist aber nbicht groß genug, da keine Bereichsüberprüfung statt findet, weder vom Compiler zur Kompilierzeit, noch vom System zu Laufzeit, wird v1 überschrieben. Geschieht das versehentlich, ist das nicht weiter schlimm, dein Programm wird sich wohl nur verabschieden, da wenn v1 eine Rücksprungadresse enthält, dein Programm an einen blödsinnigne Punkt zurückspringt.
Jetzt kann man das aber auch gezielt machen. Und wenn in v1 eine Rücksprungadresse liegt, kann ich diese mit einer neuen Rückspringadresse überschreiben. Und diese neue Rücksprungadresse zeigt auf bösartigen Code, der vorher im Speicherbereich deines Programmes abgelegt wurde. Deinem Programm und Windows ist es egal, wohin zurückgesprungen wird, denn beide merken nicht, dass an die falsche Adresse zurückgesprungen wird. Folge: Dein programm führt den bösartigen Code aus, ohne es zu merken. In diesem Zusammenhang spricht man auch von einem sogenannten
BufferOverflow.