Basiswissen Buffer Overflow

14.05.2004
Von Thomas Wölfer

Adressen von Variablen

Der Arbeitsspeicher des Computers wird auf unterschiedlichste Art und von verschiedenen Instanzen verwaltet. Der Einfachheit halber ist es aber ausreichend, sich den Speicher des Rechners als eine Menge von hintereinander angeordneten Zellen vorzustellen. Jede dieser Zellen hat dabei eine Hausnummer und kann jeweils ein einzelnes Byte aufnehmen. Die erste Zelle hat die Nummer 0, die zweite hat die Nummer 1 und so weiter. Die Nummer einer Zelle nennt man die "Adresse" der Zelle.

Man kann jeder Variablen auch eine Adresse zuordnen. Die Adresse einer Variablen ist dabei jeweils die Nummer der ersten Zelle, für die diese Variable zuständig ist. Jede Variable hat eine solche feste Adresse.

Angenommen die Variable aVariable hätte die Adresse 42, dann wäre das erste Zeichen eben in der 43. Speicherzelle abgelegt. Ferner würde die Variable auch für die folgenden neun Zellen zuständig sein. Die Bytes an Adresse 42 bis 51 würden also der Variablen aVariable "gehören".

Das Byte an Adresse 52 ist dann für eine andere Variable zu haben. Benötigt man für ein Programm zwei Variablen, würde man das in etwa wie folgt deklarieren:

char eineVariable[10];