GDB
Um manual de referência para o gdb
Gdb é o acrônimo para Gnu Project Debugger. Ele é, como o nome diz, um debugger (depurador), que pode ser utilizado em engenharia reversa para obter o assembly e analisar arquivos binários.
Rodando e obtendo o Assembly (Disassembling)
Para abrir o programa, execute:
gdb nomeDoProgramaPor padrão, o gdb utiliza a sintaxe AT&T. Como nós vamos utilizar principalmente a sintaxe da Intel, podemos alterar usando:
set disassembly-flavor intelPara obter o assembly de uma função (por exemplo, a 'main'), devemos usar:
disassemble mainÉ importante notar que o programa será mostrado do jeito que está em memória, porém podemos utilizar outros softwares para visualizar melhor o fluxo do programa.
GDB - Principais Comandos
Apertar somente 'Enter' é equivalente a digitar e rodar o último comando novamente. (é bem útil quando precisamos repetir o mesmo comando diversas vezes).
Controle de Fluxo
run arg1, arg2...
Roda o programa, passando os argumentos arg1, arg2... (pode ser utilizado sem os argumentos também)break *address
Define um breakpoint no endereço dado. Pode também ser utilizado passando o nome da função ao invés do endereçodel
Remove todos os breakpointssi
Executa a instrução atualni
Igual o si, porém não mostra a execução de chamadas de função (caso a instrução seja uma chamada de função, ele continua executando até o retorno da chamada)set $eax=x
Define o valor do registrador \(eax por exemplo\) para o valor dado 'x'define hook-stop
Define uma ação para acontecer sempre que a execução parar (um 'stop'), como o exemplo: define hook-stop
info registers
x/24wx $esp
x/2i $eip
endRegistradores
info registers
Mostra o valor dos registradores do programax/wx $reg
Mostra o conteúdo de "reg" em hexadecimalx/s $reg
Mostra o conteúdo de "reg" em asciix/24wx $esp
Mostra parte da stack do programa \(24 words, no exemplo\)x/2i $eip
Mostra as próximas duas instruçõesx NomeDaFunção
Mostra o endereço da funçãop NomeDaFunção
Mostra o endereço e o tipo de retorno da funçãoinfo proc mappings
Mostra o mapa da memóriaLast updated
Was this helpful?