Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Data
BSS
Heap Direzione di
crescita Heap
Direzione di
Stack crescita Stack
Code
Mappa della memoria
Data
BSS
Heap Direzione di
crescita Heap
Direzione di
Stack crescita Stack
Code
a (4 byte)
Call Stack
void funzione2(int a){
char b[10];
…
}
a (4 byte)
Call Stack
void funzione3(int a){
char b[8];
char c[16];
…
}
b (8 bytes)
a (4 bytes)
Stack Buffer Overflow
…
0x2345 C
0x2346 i
0x2347 a
0x2348 o
0x2349 \0
…
Un char* è un puntatore ad un’area di memoria (buffer) che memorizza la stringa
Copia di stringhe
b (4 bytes)
a (4 bytes)
Call Stack char* a = “aaa”;
a = 0x2345
void funzione4(char* a){
char b[4];
char c[4];
strcpy(c, a);
}
b (8 bytes)
Frame Pointer (4 bytes)
Espansione
Canarino dello Stack
Valgrind/DRMemory
Analisi del codice compilato
Disassembler e Debugger
Ollydbg, IDA, gdb
Metasploit