Dynamische Analyse mit GDB und pwndbg
Setzen Sie Breakpoints, untersuchen Sie Speicher, verfolgen Sie Systemaufrufe und automatisieren Sie GDB-Sitzungen mit pwndbg.
Dynamische Analyse mit GDB und pwndbg ist eine kostenlose Cyber Security Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Cyber Security Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Cyber Security Academy-Kurs umfasst insgesamt 4 Lektionen.
Was ist dynamische Analyse
Dynamische Analyse führt ein Binärprogramm aus und beobachtet sein Verhalten in Echtzeit: Speicherinhalte, Registerwerte, Systemaufrufe und Netzwerkverbindungen. Sie ergänzt die statische Analyse (Ghidra), indem sie tatsächliche Laufzeitwerte und den Kontrollfluss zeigt.
GDB-Grundlagen
GDB (GNU Debugger) ist der Standard-Debugger unter 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 intopwndbg-Erweiterung
pwndbg ist ein GDB-Plugin, das Hilfsfunktionen für die Exploit-Entwicklung ergänzt:
- Visuelle Anzeige von Stack und Registern bei jedem Breakpoint
- Erzeugung von
cyclic-Mustern heap-Befehl zur Heap-Visualisierungrop-Gadget-Finder- Binärprogrammschutz mit
checksec
git clone https://github.com/pwndbg/pwndbg && ./setup.shBreakpoints und Watchpoints
Ausführung steuern:
# 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 1Speicher und Register untersuchen
Zustand untersuchen:
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 displaySchrittweise durch den Code gehen
Navigationsbefehle:
ni (nexti) # step over (instruction level)
si (stepi) # step into (instruction level)
finish # run until function returns
until 0x401234 # run until addressGDB skripten
GDB mit Python automatisieren:
# GDB Python script:
gdb ./vuln << EOF
python
for i in range(10):
gdb.execute("continue")
gdb.execute("x/4xg $rsp")
end
EOFHeap mit pwndbg analysieren
Befehle zur Heap-Inspektion 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 mapSystemaufrufe verfolgen
Verwenden Sie strace, um Systemaufrufe ohne vollständiges Debugging zu verfolgen:
strace ./vuln # trace all syscalls
strace -e trace=open,read,write ./vuln # filter syscalls
strace -f ./vuln # follow forks
# ltrace for library calls:
ltrace ./vulnDebugging-Umgebung einrichten
Wichtige Einrichtungsschritte für die Exploit-Entwicklung:
# 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 baseStripped Binaries debuggen
Bei vielen Produktions-Binärprogrammen wurden die Debug-Symbole entfernt. Techniken:
- Verwenden Sie
fileundreadelf, um das Binärprogramm zu untersuchen - Setzen Sie Breakpoints an Adressen statt an Symbolen
- Verwenden Sie Funktionssignaturen, um gängige Bibliotheksaufrufe zu identifizieren
- Laden Sie libc-Symbole separat, falls verfügbar
Schnelltest: GDB
Welcher Befehl in GDB setzt einen Breakpoint, der nur ausgelöst wird, wenn eine bestimmte Bedingung erfüllt ist?
Zusammenfassung der Lektion
GDB mit pwndbg ermöglicht dynamische Analyse: Breakpoints setzen, Register und Speicher untersuchen und die Ausführung verfolgen. Wichtige Befehle: break, run, ni/si, x/format, info registers. pwndbg ergänzt Heap-Visualisierung, Stack-Telescoping und Musterwerkzeuge. strace/ltrace verfolgen Systemaufrufe und Bibliotheksaufrufe ohne vollständige Debugging-Einrichtung.
Häufig gestellte Fragen
Ist die Lektion „Dynamische Analyse mit GDB und pwndbg“ kostenlos?
Ja — der vollständige Text von „Dynamische Analyse mit GDB und pwndbg“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Cyber Security Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Cyber Security Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Dynamische Analyse mit GDB und pwndbg“?
Setzen Sie Breakpoints, untersuchen Sie Speicher, verfolgen Sie Systemaufrufe und automatisieren Sie GDB-Sitzungen mit pwndbg. Du übst Cyber Security Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Cyber Security Academy zu starten?
Keine Vorkenntnisse erforderlich. Cyber Security Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.
Wie lange dauert die Lektion „Dynamische Analyse mit GDB und pwndbg“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Cyber Security Academy-Lektion Code schreiben und ausführen?
Ja. Jede Cyber Security Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Ghidra: Binärdateien navigieren und annotieren
- Grundlagen der x86/x64-Assembly für Reverse Engineers
- Dynamische Analyse mit GDB und pwndbg
- Deobfuscation und Anti-Analyse-Tricks