Dynaaminen analyysi GDB:llä ja pwndbg:llä
Asetatte keskeytyspisteitä, tutkitte muistia, seuraatte järjestelmäkutsuja ja automatisoitte GDB-istuntoja pwndbg:llä.
Dynaaminen analyysi GDB:llä ja pwndbg:llä on ilmainen Cyber Security Academy-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Cyber Security Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Cyber Security Academy-kurssilla on yhteensä 4 oppituntia.
Mitä dynaaminen analyysi on
Dynaaminen analyysi suorittaa binaarin ja tarkkailee sen toimintaa reaaliajassa: muistin sisältöä, rekisterien arvoja, järjestelmäkutsuja ja verkkoyhteyksiä. Se täydentää staattista analyysiä (Ghidra) näyttämällä todelliset ajonaikaiset arvot ja ohjausvuon.
GDB:n perusteet
GDB (GNU Debugger) on Linuxin vakiomuotoinen debuggeri:
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-laajennus
pwndbg on GDB-laajennus, joka lisää exploit-kehityksen apuvälineitä:
- Visuaalinen pino-/rekisterinäyttö jokaisella pysäytyksellä
cyclic-kuvioiden generointiheap-komento keon visualisointiinrop-gadgettien etsintä- Binaarin suojaukset komennolla
checksec
git clone https://github.com/pwndbg/pwndbg && ./setup.shKeskeytys- ja tarkkailupisteet
Suorituksen hallinta:
# 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 1Muistin ja rekisterien tarkastelu
Suorituksen tilan tarkastelu:
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 displayKoodin suorittaminen askel kerrallaan
Siirtymiskomennot:
ni (nexti) # step over (instruction level)
si (stepi) # step into (instruction level)
finish # run until function returns
until 0x401234 # run until addressGDB:n skriptaus
Automatisoikaa GDB Pythonilla:
# GDB Python script:
gdb ./vuln << EOF
python
for i in range(10):
gdb.execute("continue")
gdb.execute("x/4xg $rsp")
end
EOFHeapin analysointi pwndbg:llä
Heapin tarkastelukomennot pwndbg:ssä:
heap # show all heap chunks
heap -a # show all allocations
bin # show free list bins
tcachebins # show tcache entries
vis_heap_chunks # visual heap mapJärjestelmäkutsujen jäljitys
Käyttäkää strace-työkalua järjestelmäkutsujen jäljittämiseen ilman täydellistä debuggausta:
strace ./vuln # trace all syscalls
strace -e trace=open,read,write ./vuln # filter syscalls
strace -f ./vuln # follow forks
# ltrace for library calls:
ltrace ./vulnDebuggausympäristön määrittäminen
Tärkeitä valmisteluja exploit-kehitystä varten:
# 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 baseStripattujen binaarien debuggaus
Monista tuotantobinaareista debug-symbolit on poistettu. Menetelmiä:
- Selvittäkää binaarin rakenne komennoilla
filejareadelf - Asettakaa keskeytyspisteet osoitteisiin symbolien sijaan
- Tunnistakaa yleiset kirjastokutsut funktioiden allekirjoitusten avulla
- Ladatkaa libc:n symbolit erikseen, jos ne ovat saatavilla
Pikatarkistus: GDB
Mikä GDB:n komento asettaa keskeytyspisteen, joka aktivoituu vain tietyn ehdon täyttyessä?
Oppitunnin yhteenveto
GDB ja pwndbg mahdollistavat dynaamisen analyysin: keskeytyspisteiden asettamisen, rekisterien ja muistin tarkastelun sekä suorituksen jäljittämisen. Keskeisiä komentoja ovat break, run, ni/si, x/format ja info registers. pwndbg lisää heapin visualisoinnin, pinon läpikäynnin ja kuviotyökalut. strace ja ltrace jäljittävät järjestelmä- ja kirjastokutsuja ilman täydellistä debuggausympäristön määritystä.
Opi Cyber Security Academy tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 76
- Oppitunnit
- 303
Usein kysytyt kysymykset
Onko oppitunti ”Dynaaminen analyysi GDB:llä ja pwndbg:llä” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Cyber Security Academy-oppimispolun 3 oppituntia, myös oppitunnin “Dynaaminen analyysi GDB:llä ja pwndbg:llä”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Cyber Security Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Dynaaminen analyysi GDB:llä ja pwndbg:llä”?
Asetatte keskeytyspisteitä, tutkitte muistia, seuraatte järjestelmäkutsuja ja automatisoitte GDB-istuntoja pwndbg:llä. Harjoittelet Cyber Security Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Cyber Security Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Cyber Security Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.
Kuinka kauan ”Dynaaminen analyysi GDB:llä ja pwndbg:llä”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Cyber Security Academy-oppitunnilla?
Kyllä. Jokainen Cyber Security Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Ghidra: binaarien selaaminen ja kommentointi
- x86/x64-assemblyn perusteet käänteisanalyysissä
- Dynaaminen analyysi GDB:llä ja pwndbg:llä
- Hämärtyksen purkaminen ja analyysin estämisen keinot