Dichiaro un array e poi metto a video l'identificatore dell'array:
#include<stdio.h> int mioArray[5]={1,2,3,4,5}; void main(){ printf("%x",mioArray); getc(stdin); }...curando di far stampare il valore in notazione esadecimale, con l'uso dello specificatore %x nell'istruzione printf. Ottengo:
1077000
Ora vado in OllyDbg, e guardo la finestra Dump:
01077000 >01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 ... ... ... ...
01077010 05 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 ....... ... ...
01077020 >01 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 ... ... .......
01077030 >FE FF FF FF 01 00 00 00 FF FF FF FF FF FF FF FF þÿÿÿ ...ÿÿÿÿÿÿÿÿ
01077040 00 00 00 00 4E E6 40 BB B1 19 BF 44 00 00 00 00 ....Næ@»± ¿D....
Perfetto! Quello marcato è il mio array!L'indirizzo di memoria al quale si trova è lo stesso risultato dato dal programma nel mettere a video l'identificatore dell'array.
Quindi l'identificatore di un array, contenendo l'indirizzo del primo elemento dell'array stesso, non è altro che un puntatore all'array!
Nessun commento:
Posta un commento