Analiza dynamiczna z GDB i pwndbg
Ustawią Państwo punkty przerwania, zbadają pamięć, prześledzą wywołania systemowe i zautomatyzują sesje GDB za pomocą pwndbg.
Analiza dynamiczna z GDB i pwndbg to bezpłatna lekcja Cyber Security Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Cyber Security Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Cyber Security Academy zawiera 4 lekcji w sumie.
Czym jest analiza dynamiczna?
Analiza dynamiczna uruchamia plik binarny i obserwuje jego działanie w czasie rzeczywistym: zawartość pamięci, wartości rejestrów, wywołania systemowe i połączenia sieciowe. Uzupełnia analizę statyczną (Ghidra), pokazując rzeczywiste wartości w czasie wykonywania oraz przepływ sterowania.
Podstawy GDB
GDB (GNU Debugger) to standardowy debugger systemu 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 intoRozszerzenie pwndbg
pwndbg to wtyczka do GDB dodająca pomocnicze funkcje do tworzenia exploitów:
- Wizualne wyświetlanie stosu i rejestrów przy każdym zatrzymaniu
- Generowanie wzorców za pomocą
cyclic - Polecenie
heapdo wizualizacji sterty - Wyszukiwarka gadżetów
rop - Sprawdzanie zabezpieczeń pliku binarnego za pomocą
checksec
git clone https://github.com/pwndbg/pwndbg && ./setup.shPunkty przerwania i punkty obserwacyjne
Kontrolowanie wykonywania programu:
# 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 1Badanie pamięci i rejestrów
Sprawdzanie stanu programu:
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 displayKrokowe wykonywanie kodu
Polecenia nawigacji:
ni (nexti) # step over (instruction level)
si (stepi) # step into (instruction level)
finish # run until function returns
until 0x401234 # run until addressSkrypty GDB
Automatyzowanie GDB za pomocą języka Python:
# GDB Python script:
gdb ./vuln << EOF
python
for i in range(10):
gdb.execute("continue")
gdb.execute("x/4xg $rsp")
end
EOFAnalizowanie sterty za pomocą pwndbg
Polecenia pwndbg do badania sterty:
heap # show all heap chunks
heap -a # show all allocations
bin # show free list bins
tcachebins # show tcache entries
vis_heap_chunks # visual heap mapŚledzenie wywołań systemowych
Za pomocą strace można śledzić wywołania systemowe bez pełnego debugowania:
strace ./vuln # trace all syscalls
strace -e trace=open,read,write ./vuln # filter syscalls
strace -f ./vuln # follow forks
# ltrace for library calls:
ltrace ./vulnKonfigurowanie środowiska debugowania
Ważne elementy konfiguracji na potrzeby tworzenia exploitów:
# 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 baseDebugowanie plików binarnych bez symboli
Wiele plików binarnych używanych produkcyjnie ma usunięte symbole debugowania. Techniki:
- Należy użyć
fileireadelf, aby poznać plik binarny - Należy ustawiać punkty przerwania pod adresami, a nie symbolami
- Należy używać sygnatur funkcji do identyfikowania typowych wywołań bibliotek
Szybki test: GDB
Które polecenie w GDB ustawia punkt przerwania uruchamiany tylko wtedy, gdy spełniony jest określony warunek?
Podsumowanie lekcji
GDB z pwndbg umożliwia analizę dynamiczną: ustawianie punktów przerwania, badanie rejestrów i pamięci oraz śledzenie wykonywania programu. Najważniejsze polecenia to: break, run, ni/si, x/format, info registers. pwndbg dodaje wizualizację sterty, rozwijanie stosu i narzędzia do pracy ze wzorcami. strace/ltrace śledzą wywołania systemowe i wywołania bibliotek bez konieczności konfigurowania pełnego środowiska debugowania.
Ucz się Cyber Security Academy dzięki korepetycjom AI — za darmo
Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.
- Kursy
- 76
- Lekcje
- 303
Często zadawane pytania
Czy lekcja „Analiza dynamiczna z GDB i pwndbg” jest bezpłatna?
Tak — pełny tekst „Analiza dynamiczna z GDB i pwndbg” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Cyber Security Academy, przejdź na CoddyKit PRO. Kurs Cyber Security Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Analiza dynamiczna z GDB i pwndbg”?
Ustawią Państwo punkty przerwania, zbadają pamięć, prześledzą wywołania systemowe i zautomatyzują sesje GDB za pomocą pwndbg. Ćwiczysz Cyber Security Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Cyber Security Academy?
Nie wymagamy żadnego doświadczenia. Cyber Security Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.
Ile czasu zajmuje lekcja „Analiza dynamiczna z GDB i pwndbg”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Cyber Security Academy?
Tak. Każda lekcja Cyber Security Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Ghidra: poruszanie się po plikach binarnych i ich opisywanie
- Podstawy assemblera x86/x64 dla osób analizujących pliki binarne
- Analiza dynamiczna z GDB i pwndbg
- Dekompilacja i techniki antyanalityczne