Análise Dinâmica com GDB e pwndbg
Defina pontos de interrupção, inspecione a memória, rastreie chamadas de sistema e automatize sessões do GDB com pwndbg.
Análise Dinâmica com GDB e pwndbg é uma aula grátis de Cyber Security Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Cyber Security Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Cyber Security Academy inclui 4 aulas no total.
O que é análise dinâmica
A análise dinâmica executa um binário e observa seu comportamento em tempo real: conteúdo da memória, valores dos registradores, chamadas de sistema e conexões de rede. Ela complementa a análise estática (Ghidra) ao mostrar valores reais durante a execução e o fluxo de controle.
Noções básicas de GDB
O GDB (depurador do GNU) é o depurador padrão do 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 intoAprimoramento com pwndbg
O pwndbg é uma extensão do GDB que adiciona recursos auxiliares para o desenvolvimento de explorações:
- Exibição visual da pilha e dos registradores a cada interrupção
- Geração de padrões
cyclic - Comando
heappara visualizar a memória dinâmica - Localizador de sequências ROP
rop - Proteções do binário com
checksec
git clone https://github.com/pwndbg/pwndbg && ./setup.shPontos de interrupção e de observação
Controle a execução:
# 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 memória e registradores
Inspecionando o 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 displayExecutar o código passo a passo
Comandos de navegação:
ni (nexti) # step over (instruction level)
si (stepi) # step into (instruction level)
finish # run until function returns
until 0x401234 # run until addressCriar scripts para o GDB
Automatize o GDB com Python:
# GDB Python script:
gdb ./vuln << EOF
python
for i in range(10):
gdb.execute("continue")
gdb.execute("x/4xg $rsp")
end
EOFAnalisar a memória dinâmica com pwndbg
Comandos de inspeção da memória dinâmica no 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 chamadas de sistema
Use strace para rastrear chamadas de sistema sem realizar uma depuração completa:
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 um ambiente de depuração
Configuração importante para o desenvolvimento de explorações:
# 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 binários sem símbolos
Muitos binários de produção têm os símbolos de depuração removidos. Técnicas:
- Use
fileereadelfpara entender o binário - Defina pontos de interrupção em endereços, não em símbolos
- Use assinaturas de funções para identificar chamadas comuns de bibliotecas
- Carregue os símbolos da libc separadamente, se estiverem disponíveis
Verificação rápida: GDB
Qual comando no GDB define um ponto de interrupção que só é acionado quando uma condição específica é atendida?
Recapitulação da lição
O GDB com pwndbg permite realizar análise dinâmica: definir pontos de interrupção, examinar registradores e memória e rastrear a execução. Comandos principais: break, run, ni/si, x/format e info registers. O pwndbg adiciona visualização da memória dinâmica, visualização detalhada da pilha e ferramentas de padrões. strace/ltrace rastreiam chamadas de sistema e chamadas de bibliotecas sem exigir uma configuração completa de depuração.
Perguntas Frequentes
A aula “Análise Dinâmica com GDB e pwndbg” é grátis?
Sim — o texto completo de “Análise Dinâmica com GDB e pwndbg” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Cyber Security Academy, atualize para CoddyKit PRO. O curso de Cyber Security Academy inclui 4 aulas no total.
O que vou aprender em “Análise Dinâmica com GDB e pwndbg”?
Defina pontos de interrupção, inspecione a memória, rastreie chamadas de sistema e automatize sessões do GDB com pwndbg. Você pratica Cyber Security Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Cyber Security Academy?
Nenhuma experiência prévia é necessária. Cyber Security Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “Análise Dinâmica com GDB e pwndbg”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Cyber Security Academy?
Sim. Cada aula de Cyber Security Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Ghidra: Navegação e Anotação de Binários
- Fundamentos de Assembly x86/x64 para Engenharia Reversa
- Análise Dinâmica com GDB e pwndbg
- Desofuscação e Técnicas Antianálise