This shows you the differences between two versions of the page.
so:laboratoare:laborator-07 [2020/04/01 11:22] razvan.crainea [Exercițiul 7 - Buffer overflow exploit] |
so:laboratoare:laborator-07 [2022/04/19 17:47] (current) teodor_stefan.dutu [Nice to Watch] |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Laborator 07 - Profiling & Debugging ====== | ====== Laborator 07 - Profiling & Debugging ====== | ||
- | ===== Materiale ajutătoare ===== | ||
- | |||
- | *[[http://elf.cs.pub.ro/so/res/laboratoare/lab07-slides.pdf | lab07-slides.pdf]] | ||
==== Nice to Watch ==== | ==== Nice to Watch ==== | ||
*[[http://www.youtube.com/watch?v=73IyVBMf2uY | Google I/O 2010 - Measure in milliseconds: Meet Speed Tracer]] | *[[http://www.youtube.com/watch?v=73IyVBMf2uY | Google I/O 2010 - Measure in milliseconds: Meet Speed Tracer]] | ||
- | *[[http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-172-performance-engineering-of-software-systems-fall-2010/video-lectures/lecture-5-performance-engineering-with-profiling-tools/ | MIT Lecture: Performance Engineering with Profiling Tools]] | + | *[[https://www.youtube.com/watch?v=7a89iFEEpTo&ab_channel=MITOpenCourseWare | MIT Lecture: Performance Engineering with Profiling Tools]] |
+ | *[[https://dspace.mit.edu/bitstream/handle/1721.1/122680/6-172-fall-2010/contents/video-lectures/lecture-5-performance-engineering-with-profiling-tools/MIT6_172F10_lec05.pdf|slides]] | ||
==== Latency Comparison Numbers ==== | ==== Latency Comparison Numbers ==== | ||
Line 267: | Line 265: | ||
====== Exerciții ====== | ====== Exerciții ====== | ||
- | <note important>Folosiți arhiva [[http://elf.cs.pub.ro/so/res/laboratoare/lab07-tasks.zip | lab07-tasks.zip]] aferentă laboratorului.</note> | + | <note important> |
+ | În cadrul laboratoarelor vom folosi repository-ul de git al materiei SO - https://github.com/systems-cs-pub-ro/so. Va trebui sa clonați repository-ul pe masinile virtuale folosind comanda: ''git clone https://github.com/systems-cs-pub-ro/so''. Dacă doriți să descărcați repositoryul în altă locație, folosiți comanda ''git clone https://github.com/systems-cs-pub-ro/so ${target}''. | ||
+ | |||
+ | Pentru a actualiza repository-ul, folosiți comanda ''git pull origin master'' din interiorul directorului în care se află repository-ul. Recomandarea este să îl actualizați cât mai frecvent, înainte să începeți lucrul, pentru a vă asigura că aveți versiunea cea mai recentă. În cazul în care gitul detectează conflicte la nivelul vreunui fişier, folosiți următoarele comenzi pentru a vă păstra modificările: | ||
+ | <code> | ||
+ | git stash | ||
+ | git pull origin master | ||
+ | git stash pop | ||
+ | </code> | ||
+ | |||
+ | Pentru mai multe informații despre folosirea utilitarului git, urmați ghidul de la https://gitimmersion.com. | ||
+ | </note> | ||
Line 280: | Line 289: | ||
<note important> | <note important> | ||
- | Pentru a putea face exercițiile e nevoie de utilitarul ''linux-tools''. Puteți verifica asta rulând comanda ''perf %%--%%help''. Dacă comanda nu e găsită, trebuie să instalați pachetul: | + | Pentru a putea face exercițiile e nevoie de pachetul ''linux-tools''. Puteți verifica asta rulând comanda ''perf %%--%%help''. Dacă utilitarul ''perf'' nu este găsit, trebuie să instalați pachetul folosind comenzile: |
<code bash> | <code bash> | ||
student@so:~$ sudo apt-get update | student@so:~$ sudo apt-get update | ||
+ | student@so:~$ sudo apt-get install linux-tools-generic | ||
+ | </code> | ||
+ | <hidden> | ||
+ | <code bash> | ||
+ | Pachetul de mai jos este prea vechi, cred că așa că am pus meta-pachetul generic | ||
student@so:~$ sudo apt-get install linux-tools-4.15.0-34-generic | student@so:~$ sudo apt-get install linux-tools-4.15.0-34-generic | ||
</code> | </code> | ||
+ | </hidden> | ||
</note> | </note> | ||
+ | |||
Line 358: | Line 373: | ||
</code> | </code> | ||
- | Observați că diferența între adresa variabilei ''access'' și adresa bufferului ''name'' este de 0x1c (28) octeți, ceea ce înseamnă că variabila ''access'' se află imediat la sfârșitul datelor din bufferul ''name''. | + | Observați că diferența între adresa variabilei ''access'' și adresa bufferului ''name'' este de 0x10 (16) octeți, ceea ce înseamnă că variabila ''access'' se află imediat la sfârșitul datelor din bufferul ''name''. |
<note important> | <note important> | ||
Line 418: | Line 433: | ||
/* [[http://elf.cs.pub.ro/so/res/laboratoare/lab12-sol.zip | lab12-sol.zip]] */ | /* [[http://elf.cs.pub.ro/so/res/laboratoare/lab12-sol.zip | lab12-sol.zip]] */ | ||
- | ====== Soluții ====== | ||
- | *[[http://elf.cs.pub.ro/so/res/laboratoare/lab07-sol.zip | Soluții laborator 7]] | ||
====== Resurse utile ====== | ====== Resurse utile ====== |