Basiswissen Buffer Overflow

14.05.2004
Von Thomas Wölfer

Texte sind häufig vorkommende Daten. Text ist auch für dieses Beispiel besonders geeignet, weil Text innerhalb von Programmiersprachen oft direkt auf Bytes abgebildet wird. Ein einzelnes Zeichen nennt man dabei "Character", ein einzelner Character verbraucht im Allgemeinen ein einzelnes Byte.

Setzt sich ein Wort aus mehreren Zeichen zusammen, braucht man mindestens eine ebenso hohe Anzahl an Bytes zum Speichern des Wortes, wie das Wort Buchstaben hat. Ansammlungen aus Daten eines bestimmten Typs nennt man ein "Array". Bei einem Wort handelt es sich also um ein Array aus Bytes. Stattdessen sagt man bei Texten auch "Strings".

In der Sprache C, auf der ein Großteil des Windows- und Linux-Codes basiert, sind Strings immer mit einem besonderen Zeichen abgeschlossen: Am Ende eines Textes steht immer ein Byte, das den Wert 0 hat. Dadurch wird das Ende des Strings markiert.

Ein String wird also mit einem symbolischen Namen beschrieben und steht für eine bestimmte Anzahl an Bytes mit einer abschließenden "0". Arrays werden in C in eckigen Klammern markiert. Innerhalb der eckigen Klammer steht eine Zahl, die die Größe des Arrays angibt:

char aVariable[10];

Hier handelt es sich also um die Variable mit dem Namen aVariable. Die Variable ist ein Array der Größe 10 und hat den Typ char. Die Variable bietet also Speicherplatz für 10 Bytes.