Einzelnen Beitrag anzeigen
Ungelesen 12.06.11, 20:18   #1
MaSydJun
Anfänger
 
Registriert seit: Jun 2011
Beiträge: 13
Bedankt: 0
MaSydJun ist noch neu hier! | 0 Respekt Punkte
Standard Reihenfolge des allozierten Speichers auf dem Stack stimmt nicht?

Hallo,

bin Backfrisch hier im Forum.

Hab folgende Frage bzw. kuriose Feststellung:

Ich definiere 2 Variablen (in C):

Code:
char flag = 0;
char buffer[5];
Im Debugger bekomme ich folgende Infos:
Code:
(gdb) x/x &flag
0xbffff39f:	0xfff3b400
(gdb) x/s buffer
0xbffff39a:	 "\374\267ȅ\004"
Nun, hier ist ja noch alles in Ordnung: `flag' ist vor `buffer' auf dem Stack

Wenn ich jetzt aber für den buffer mehr Speicher allozier wirds komisch:

Code:
char flag = 0;
char buffer[10];
GDB sagt:
Code:
(gdb) x/x &flag
0xbffff391:	0xd0bfff00
(gdb) x/s buffer
0xbffff392:	 "\377\277\320j\353\267\340\204", <incomplete sequence \374\267>
Jetzt ist `buffer' vor `flag' auf dem Stack. Das erscheint mir extrem verrückt.

Ich will nämlich eigentlich einen Buffer Overflow erzeugen und so die Variable `flag' überschreiben.

Warum werden die beiden Variablen in verschiedenen Reihenfolgen auf den Stack gelegt?

Vielen Dank für Müh und Not
MaSydJun ist offline   Mit Zitat antworten