Analisi dinamica con GDB e pwndbg
Impostate breakpoint, ispezionate la memoria, tracciate le syscall e automatizzate le sessioni GDB con pwndbg.
Analisi dinamica con GDB e pwndbg è una lezione Cyber Security Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Cyber Security Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Cyber Security Academy include 4 lezioni in totale.
Che cos’è l’analisi dinamica
L’analisi dinamica esegue un binario e ne osserva il comportamento in tempo reale: contenuto della memoria, valori dei registri, chiamate di sistema e connessioni di rete. Completa l’analisi statica (Ghidra) mostrando i valori effettivi a runtime e il flusso di controllo.
Nozioni di base su GDB
GDB (GNU Debugger) è il debugger standard di Linux:
gdb ./vuln # load binary
gdb -p 1234 # attach to running process
run [args] # start execution
break main # set breakpoint at main
continue (c) # continue execution
next (n) # step over
step (s) # step intoPotenziamento con pwndbg
pwndbg è un plugin per GDB che aggiunge strumenti ausiliari per lo sviluppo di exploit:
- Visualizzazione dello stack e dei registri a ogni interruzione
- Generazione di pattern con
cyclic - Comando
heapper visualizzare l’heap - Ricerca di gadget ROP con
rop - Protezioni del binario con
checksec
git clone https://github.com/pwndbg/pwndbg && ./setup.shBreakpoint e watchpoint
Controllare l’esecuzione:
# Break at address:
break *0x401234
# Break at function:
break strncpy
# Watch memory address:
watch *0x7ffd1234 # break when value changes
# Conditional break:
break *0x401234 if $rax == 0
# List and delete:
info break
delete 1Esaminare memoria e registri
Ispezionare lo stato:
info registers # show all registers
print $rax # print register value
x/10xg $rsp # examine 10 qwords at RSP
x/s 0x402000 # examine as string
x/20i $rip # disassemble 20 instructions at RIP
pwndbg: telescope $rsp 20 # smart stack displayEseguire il codice passo per passo
Comandi di navigazione:
ni (nexti) # step over (instruction level)
si (stepi) # step into (instruction level)
finish # run until function returns
until 0x401234 # run until addressScripting con GDB
Automatizzare GDB con Python:
# GDB Python script:
gdb ./vuln << EOF
python
for i in range(10):
gdb.execute("continue")
gdb.execute("x/4xg $rsp")
end
EOFAnalizzare l’heap con pwndbg
Comandi di ispezione dell’heap in pwndbg:
heap # show all heap chunks
heap -a # show all allocations
bin # show free list bins
tcachebins # show tcache entries
vis_heap_chunks # visual heap mapTracciare le chiamate di sistema
Usare strace per tracciare le chiamate di sistema senza eseguire un debug completo:
strace ./vuln # trace all syscalls
strace -e trace=open,read,write ./vuln # filter syscalls
strace -f ./vuln # follow forks
# ltrace for library calls:
ltrace ./vulnConfigurare un ambiente di debug
Configurazione importante per lo sviluppo di exploit:
# Disable ASLR for testing:
echo 0 | sudo tee /proc/sys/kernel/randomize_va_space
# Or per-process:
setarch $(uname -m) -R gdb ./vuln
# Verify with:
ldd ./vuln # check libc baseEseguire il debug di binari privi di simboli
Molti binari di produzione non contengono più i simboli di debug. Tecniche:
- Usare
fileereadelfper analizzare il binario - Impostare breakpoint su indirizzi anziché su simboli
- Usare le firme delle funzioni per identificare le chiamate comuni alle librerie
- Caricare separatamente i simboli di libc, se disponibili
Verifica rapida: GDB
Quale comando in GDB imposta un breakpoint che si attiva solo quando viene soddisfatta una condizione specifica?
Riepilogo della lezione
GDB con pwndbg consente di eseguire analisi dinamiche: impostare breakpoint, esaminare registri e memoria e seguire l’esecuzione. Comandi principali: break, run, ni/si, x/format, info registers. pwndbg aggiunge la visualizzazione dell’heap, la visualizzazione telescopica dello stack e strumenti per i pattern. strace/ltrace tracciano le chiamate di sistema e le chiamate alle librerie senza dover configurare un ambiente di debug completo.
Impara Cyber Security Academy con un tutor IA — gratis
Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.
- Corsi
- 76
- Lezioni
- 303
Domande Frequenti
La lezione «Analisi dinamica con GDB e pwndbg» è gratuita?
Sì — il testo completo di «Analisi dinamica con GDB e pwndbg» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Cyber Security Academy, passa a CoddyKit PRO. Il corso Cyber Security Academy include 4 lezioni in totale.
Cosa imparerò in «Analisi dinamica con GDB e pwndbg»?
Impostate breakpoint, ispezionate la memoria, tracciate le syscall e automatizzate le sessioni GDB con pwndbg. Eserciti Cyber Security Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Cyber Security Academy?
Non è richiesta alcuna esperienza precedente. Cyber Security Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.
Quanto tempo richiede la lezione «Analisi dinamica con GDB e pwndbg»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Cyber Security Academy?
Sì. Ogni lezione Cyber Security Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Ghidra: navigazione e annotazione dei binari
- Fondamenti di assembly x86/x64 per il reverse engineering
- Analisi dinamica con GDB e pwndbg
- Deoffuscamento e tecniche anti-analisi