Differences

This shows you the differences between two versions of the page.

Link to this comparison view

so:laboratoare:laborator-07 [2019/04/10 09:47]
razvan.nitu1305 [Alte utilitare]
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>​
  
-==== Exercițiul 0 - Joc interactiv ====+Pentru mai multe informații despre folosirea utilitarului git, urmați ghidul de la https://​gitimmersion.com. 
 +</​note>​
  
-  * Detalii desfășurare [[http://​ocw.cs.pub.ro/​courses/​so/​meta/​notare#​joc_interactiv|joc]]. 
  
  
Line 284: 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 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 363: Line 374:
  
 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''​. 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>​
 +Este posibil ca diferența dintre ''​access''​ și ''​name''​ să difere în funcție de arhitectura pe care lucrați. Calculați diferența dintre cele două adrese folosind valorile printate de ''​gdb''​
 +</​note>​
  
 Folosindu-vă de informațiile obținute, construiți un input convenabil pe care să îl oferiți executabilului ''​exploit'',​ astfel încât acesta să vă afișeze stringul "Good job, you hacked me!". Folosindu-vă de informațiile obținute, construiți un input convenabil pe care să îl oferiți executabilului ''​exploit'',​ astfel încât acesta să vă afișeze stringul "Good job, you hacked me!".
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 ======
so/laboratoare/laborator-07.1554878824.txt.gz · Last modified: 2019/04/10 09:47 by razvan.nitu1305
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0