Análisis dinámico con GDB y pwndbg
Establezca puntos de interrupción, inspeccione la memoria, rastree llamadas al sistema y automatice sesiones de GDB con pwndbg.
Análisis dinámico con GDB y pwndbg es una lección gratuita de Cyber Security Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Cyber Security Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Cyber Security Academy incluye 4 lecciones en total.
¿Qué es el análisis dinámico?
El análisis dinámico ejecuta un binario y observa su comportamiento en tiempo real: contenido de la memoria, valores de los registros, llamadas al sistema y conexiones de red. Complementa el análisis estático (Ghidra) al mostrar los valores reales en tiempo de ejecución y el flujo de control.
Fundamentos de GDB
GDB (GNU Debugger) es el depurador estándar de 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 intoMejoras de pwndbg
pwndbg es un plugin de GDB que añade utilidades para desarrollar exploits:
- Visualización de la pila y los registros en cada pausa
- Generación de patrones con
cyclic - Comando
heappara visualizar el heap - Buscador de gadgets
rop - Protecciones del binario con
checksec
git clone https://github.com/pwndbg/pwndbg && ./setup.shPuntos de interrupción y watchpoints
Controle la ejecución:
# 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 1Examinar la memoria y los registros
Inspección del estado:
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 displayEjecutar el código paso a paso
Comandos de navegación:
ni (nexti) # step over (instruction level)
si (stepi) # step into (instruction level)
finish # run until function returns
until 0x401234 # run until addressCrear scripts para GDB
Automatice GDB con Python:
# GDB Python script:
gdb ./vuln << EOF
python
for i in range(10):
gdb.execute("continue")
gdb.execute("x/4xg $rsp")
end
EOFAnalizar el heap con pwndbg
Comandos de inspección del heap en 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 mapRastrear llamadas al sistema
Use strace para rastrear llamadas al sistema sin depurar por 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 ./vulnConfigurar un entorno de depuración
Configuración importante para desarrollar exploits:
# 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 baseDepurar binarios sin símbolos
Muchos binarios de producción tienen los símbolos de depuración eliminados. Técnicas:
- Use
fileyreadelfpara comprender el binario - Establezca puntos de interrupción en direcciones, no en símbolos
- Use firmas de funciones para identificar llamadas habituales a bibliotecas
- Cargue los símbolos de libc por separado si están disponibles
Comprobación rápida: GDB
¿Qué comando de GDB establece un punto de interrupción que solo se activa cuando se cumple una condición específica?
Resumen de la lección
GDB con pwndbg permite realizar análisis dinámico: establecer puntos de interrupción, examinar registros y memoria y rastrear la ejecución. Comandos clave: break, run, ni/si, x/format, info registers. pwndbg añade visualización del heap, visualización telescópica de la pila y herramientas de patrones. strace/ltrace rastrean llamadas al sistema y llamadas a bibliotecas sin necesidad de configurar una sesión completa de depuración.
Preguntas frecuentes
¿La lección «Análisis dinámico con GDB y pwndbg» es gratis?
Sí — el texto completo de «Análisis dinámico con GDB y pwndbg» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Cyber Security Academy, actualiza a CoddyKit PRO. El curso de Cyber Security Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Análisis dinámico con GDB y pwndbg»?
Establezca puntos de interrupción, inspeccione la memoria, rastree llamadas al sistema y automatice sesiones de GDB con pwndbg. Practicas Cyber Security Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Cyber Security Academy?
No se requiere experiencia previa. Cyber Security Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «Análisis dinámico con GDB y pwndbg»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Cyber Security Academy?
Sí. Cada lección de Cyber Security Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Ghidra: navegación y anotación de binarios
- Fundamentos de ensamblador x86/x64 para reversing
- Análisis dinámico con GDB y pwndbg
- Desofuscación y técnicas anti análisis