This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
secure-low-level-programming:capitole:02-spatii-de-adrese [2018/12/17 08:51] razvan |
secure-low-level-programming:capitole:02-spatii-de-adrese [2018/12/17 17:06] (current) razvan [Spațiul de adrese] |
||
---|---|---|---|
Line 22: | Line 22: | ||
</code> | </code> | ||
- | ==== Exercițiu 1 ==== | + | ==== Spațiul de adrese ==== |
- | Accesăm directorul ''lalala/'' din arhiva de suport. | + | Accesăm directorul ''address-space/'' din arhiva de suport. |
- | TODO | + | Urmăriți conținutul fișierului ''prog.c'' și rulați executabilul ''prog''. |
- | ==== Exercițiu 2 ==== | + | Într-o altă consolă rulați comanda |
+ | <code> | ||
+ | pmap -p $(pidof prog) | ||
+ | </code> | ||
+ | Comanda afișează spațiul virtual de adrese al procesului. | ||
- | Accesăm directorul ''lalala/'' din arhiva de suport. | + | Dacă doriți să urmăriți continuu (automat) spațiul virtual de adrese al procesului, rulați comanda |
+ | <code> | ||
+ | watch -d -n 1 pmap -p $(pidof prog) | ||
+ | </code> | ||
- | TODO | + | Treceți prin fiecare pas în program și rulați comanda de mai sus la fiecare pas pentru a vedea cum se modifică (sau nu) zonele din spațiul virtual de adrese al procesului. |
- | ==== Exercițiu 3 ==== | + | Faceți o modificare ca să alocați (într-o buclă, cel mai simplu) de 10 ori memorie de fiecare fel. |
- | Accesăm directorul ''lalala/'' din arhiva de suport. | + | ==== Acces read-write ==== |
- | TODO | + | Accesăm directorul ''read-write-areas/'' din arhiva de suport. |
+ | |||
+ | Urmăriți conținutul fișierului ''prog.c'' și rulați executabilul ''prog''. Generați accesarea de fiecare tip (//read// sau //write//) a fiecărei zone de mari de memorie a unui proces. De ce la unele primiți //segmentation fault//? | ||
+ | |||
+ | ==== Acces peste limite ==== | ||
+ | |||
+ | Accesăm directorul ''over-the-edge/'' din arhiva de suport. | ||
+ | |||
+ | Urmăriți conținutul fișierului ''vuln.c'' și rulați executabilul ''vuln''. Observați cum accesarea dincolo de limitele buffer-ului nu generează //segmentation fault//. | ||
+ | |||
+ | Modificați programul pentru a vedea la ce index din cadrul fiecărei zone (''data'', ''stack'', ''heap'') obțineți //segmentation fault//. | ||