gdb
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| gdb [2023/11/15 17:26] – kresimir | gdb [2025/12/01 11:40] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 4: | Line 4: | ||
| Njime je moguće izvesti disassemble nad strojnim kodom, odnosno, | Njime je moguće izvesti disassemble nad strojnim kodom, odnosno, | ||
| - | U svrhe debuggiranja programa, izvorni kod se može kompilirati | + | U svrhe debuggiranja programa, izvorni kod se može kompilirati |
| postavljanjem tzv. debugging simbola unutar simboličke tablice binarne datoteke. Time je vidljiv kroz debugging alate poput gdb-a. | postavljanjem tzv. debugging simbola unutar simboličke tablice binarne datoteke. Time je vidljiv kroz debugging alate poput gdb-a. | ||
| Npr. | Npr. | ||
| gcc –g –o example example.c // (kompiliranje izvornog koda pisanog u c-u u svrhe debuggiranja radi se zastavicom –g) | gcc –g –o example example.c // (kompiliranje izvornog koda pisanog u c-u u svrhe debuggiranja radi se zastavicom –g) | ||
| - | U slučaju analize binarne izvršne datoteke u svrhe binarne eksploatacije, | + | U slučaju analize binarne izvršne datoteke u svrhe binarne eksploatacije, |
| #Sintaksa za naredbe: naziv_naredbe(kratica) | #Sintaksa za naredbe: naziv_naredbe(kratica) | ||
| Line 17: | Line 17: | ||
| gdb < | gdb < | ||
| - | Korisnik je predstavljen | + | Korisnik je predstavljen |
| Poruka: (No debugging symbols found in binarna_datoteka) je pokazatelj da datoteka nije kompilirana s –g, time izvorni kod neće biti dostupan. | Poruka: (No debugging symbols found in binarna_datoteka) je pokazatelj da datoteka nije kompilirana s –g, time izvorni kod neće biti dostupan. | ||
| Line 32: | Line 32: | ||
| *run< | *run< | ||
| - | *Pokreće program | + | *Pokreće program |
| *break(b) function/ | *break(b) function/ | ||
| Line 118: | Line 118: | ||
| Pokretanje: | Pokretanje: | ||
| gdb main | gdb main | ||
| - | |||
| - | {{binary: | ||
| Prikaz funkcije main: | Prikaz funkcije main: | ||
| disas main | disas main | ||
| + | {{gdbdisas.png}} | ||
| Postavljanje breakpointa na adresu main + 49 (mov edi, 0x405098): | Postavljanje breakpointa na adresu main + 49 (mov edi, 0x405098): | ||
| b *main + 49 | b *main + 49 | ||
| + | {{gdbbreak.png}} | ||
| Pokretanje programa: | Pokretanje programa: | ||
| r | r | ||
| + | {{gdbrun.png}} | ||
| Ispis vrijednosti registra edi: | Ispis vrijednosti registra edi: | ||
| i r edi //Rezultat je 0x407120 | i r edi //Rezultat je 0x407120 | ||
| + | {{gdbiredi.png}} | ||
| Izvođenje sljedeće instrukcije (mov edi, 0x405098) | Izvođenje sljedeće instrukcije (mov edi, 0x405098) | ||
| ni | ni | ||
| + | {{gdbni.png}} | ||
| Ponovni ispis vrijednosti registra edi: | Ponovni ispis vrijednosti registra edi: | ||
| i r edi //Rezultat je 0x405098 | i r edi //Rezultat je 0x405098 | ||
| + | {{gdbiredi2.png}} | ||
| Ispis funkcije provjeri_lozinku: | Ispis funkcije provjeri_lozinku: | ||
| disas provjeri_lozinku | disas provjeri_lozinku | ||
| + | {{gdbdisas2.png}} | ||
| - | Postavljanje breakpointa na provjeri_lozinku + 58 | + | Postavljanje breakpointa na provjeri_lozinku + 58: |
| b *provjeri_lozinku + 107 | b *provjeri_lozinku + 107 | ||
| Line 151: | Line 156: | ||
| Password: " | Password: " | ||
| + | |||
| + | {{gdbbreak2.png}} | ||
| Ispis framea: | Ispis framea: | ||
| i f | i f | ||
| + | {{gdbif.png}} | ||
| Ispis memorije na stogu: | Ispis memorije na stogu: | ||
| x/20xb $rsp | x/20xb $rsp | ||
| + | {{gdbexamine.png}} | ||
| Ispis stringa na vrhu stoga: | Ispis stringa na vrhu stoga: | ||
| x/s $rsp | x/s $rsp | ||
| + | {{gdbexamine2.png}} | ||
| Prekid proces: | Prekid proces: | ||
| k | k | ||
| + | {{gdbkill.png}} | ||
| Izlazak: | Izlazak: | ||
gdb.1700069215.txt.gz · Last modified: 2025/12/01 11:40 (external edit)