Cyber Security Academy · Lekcja

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.

Lekcja 3 z 413 kroki

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 into

Rozszerzenie 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 heap do wizualizacji sterty
  • Wyszukiwarka gadżetów rop
  • Sprawdzanie zabezpieczeń pliku binarnego za pomocą checksec
git clone https://github.com/pwndbg/pwndbg && ./setup.sh

Punkty 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 1

Badanie 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 display

Krokowe 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 address

Skrypty 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
EOF

Analizowanie 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 ./vuln

Konfigurowanie ś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 base

Debugowanie plików binarnych bez symboli

Wiele plików binarnych używanych produkcyjnie ma usunięte symbole debugowania. Techniki:

  • Należy użyć file i readelf, 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.

Bezpłatny start

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

  1. Ghidra: poruszanie się po plikach binarnych i ich opisywanie
  2. Podstawy assemblera x86/x64 dla osób analizujących pliki binarne
  3. Analiza dynamiczna z GDB i pwndbg
  4. Dekompilacja i techniki antyanalityczne
← Powrót do Cyber Security Academy