User Tools

Site Tools


laboratoare:laborator-08

Differences

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

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
laboratoare:laborator-08 [2015/12/02 07:03]
adrian.bogatu
laboratoare:laborator-08 [2015/12/02 12:31] (current)
vladimir.diaconescu OCD change
Line 1: Line 1:
-====== Laborator 8: Interfața în linia de comandă, analiza statică și dinamică ======+====== Laborator 08: Interfața în linia de comandă, analiza statică și dinamică ======
  
 După un scurt breviar care va explica noțiunile introduse în acest laborator, va urma o parte practică care alternează între secțiuni de tip tutorial, cu parcurgere pas cu pas și prezentarea soluției, și exerciții care trebuie să fie rezolvate. După un scurt breviar care va explica noțiunile introduse în acest laborator, va urma o parte practică care alternează între secțiuni de tip tutorial, cu parcurgere pas cu pas și prezentarea soluției, și exerciții care trebuie să fie rezolvate.
Line 27: Line 27:
 ===== Tutoriale și exerciții ===== ===== Tutoriale și exerciții =====
  
-În cadrul exercițiilor vom folosi arhiva de laborator.+În cadrul exercițiilor vom folosi ​{{laboratoare:​lab-08-tasks.zip|arhiva de laborator}}.
  
 Descărcați arhiva, decomprimați-o și accesați directorul aferent. Descărcați arhiva, decomprimați-o și accesați directorul aferent.
Line 199: Line 199:
  
 Haideți să adăugăm un breakpoint la label-ul ''​ok''​. Dacă dăm ''​continue'',​ vom observa că programul s-a oprit în breakpoint-ul tocmai creat. Haideți să adăugăm un breakpoint la label-ul ''​ok''​. Dacă dăm ''​continue'',​ vom observa că programul s-a oprit în breakpoint-ul tocmai creat.
 +<​note>​
 +Variaţii:​\\ ​
 +**break label** - breakpoint la labelul **label**\\ ​
 +**break *(label + <​offset>​)** - breakpoint la **label + offset**\\ ​
 +</​note>​
  
 === Parcurgerea instrucțiunilor === === Parcurgerea instrucțiunilor ===
Line 223: Line 228:
 <​note>​ <​note>​
 Dacă ați intrat într-o funcție lungă și nu vreți să dați de ''​nexti''​ de foarte multe ori, vă recomandăm instrucțiunea GDB ''​finish'',​ care "​termină"​ o funcție. **Atenție** la funcțiile recursive. Dacă ați intrat într-o funcție lungă și nu vreți să dați de ''​nexti''​ de foarte multe ori, vă recomandăm instrucțiunea GDB ''​finish'',​ care "​termină"​ o funcție. **Atenție** la funcțiile recursive.
 +</​note>​
 +<​note>​
 +**disassemble label, +<​length>​** - afişează <​length>​ bytes de cod dezasamblat începând de la labelul **label**.
 </​note>​ </​note>​
  
Line 283: Line 291:
  
 Deși pot fi multe de spus despre IDA, în cadrul acestui laborator ne vom limita doar la capabilitățile de analiză statică ale sale. Deși pot fi multe de spus despre IDA, în cadrul acestui laborator ne vom limita doar la capabilitățile de analiză statică ale sale.
 +<​note>​ 
 +IDA este destul de avansat încât are posibilitatea de a face tracking şi în Kernelul sistemului de operare. Motiv pentru care trebuie rulat cu drepturi de administrator pentru a putea dreptul la o resursă critică a sistemului. 
 +</​note>​
 ==== [2p] Bonus: Modificarea control-flow-ului unui program folosind GDB ==== ==== [2p] Bonus: Modificarea control-flow-ului unui program folosind GDB ====
  
Line 290: Line 300:
 ==== [2p] Bonus: Decompilarea unui program folosind IDA ==== ==== [2p] Bonus: Decompilarea unui program folosind IDA ====
  
 +Pornind de la fișierul obiect ''​decompile.obj'',​ treaba voastră este să reconstruiți codul sursa (scris în C) din care a provenit binarul. Puteți folosi orice utilitar de analiză statică, însă cel mai indicat pentru acest task este IDA, deoarece reprezintă foarte clar graful de control al execuției.
laboratoare/laborator-08.1449032588.txt.gz · Last modified: 2015/12/02 07:03 by adrian.bogatu