📖
Introducao à segurança digital
  • Introdução à Segurança Digital
  • Introdução a Linux
  • Criptografia
    • Introdução
    • Definições e Objetivos
    • Criptografia Clássica
    • Criptografia Moderna
    • Guia de Python para criptografia
  • Redes
    • Ataques
      • Arp Cache Poisoning
      • DNS Cache Poisoning
      • Slow Loris
      • Syn Flood
      • WPA Cracking
      • Deauth
    • Ferramentas
      • Resumo das Ferramentas
      • Suíte Aircrack
      • Wireshark
      • Netcat
      • Nmap
      • Netstat
      • Kathará
    • Pacote & Protocolo
    • Camada de Rede
    • Camada de Transporte
    • IANA
    • Three-way Handshake
    • DHCP
    • DNS
    • NAT
    • Pentest
      • FTP
      • SMB
      • SSH
      • VPN
    • Avançado
  • Web
    • Semana 1
      • Introdução à Web
      • Entendendo as URLs
      • Introdução ao HTML e ao CSS
      • Directory Traversal
      • Introdução ao Javascript
      • Cross Site Scripting (XSS)
      • Cookies e sessões
      • Protocolo HTTP
      • Protocolo HTTPS
      • 2020 - XML External Entities (XML) Injection
    • Semana 2
      • Servidores Web
      • PHP (Programação server-side)
      • Command Injection
      • Cookie Poisoning
      • Bancos de Dados
      • SQL Injection
      • Insecure Direct Object Reference (IDOR)
      • 2020 - Portas e Serviços
      • 2020 - API's e Serviços Rest
  • CTF
  • Engenharia Reversa
    • Arquivos
    • Registradores e tipos de dados
    • Hello World em x86
    • Pilha
    • GDB
    • Ghidra
  • Pwning
    • Integer Overflow
    • Buffer Overflow
    • Pwntools
    • Shellcode
    • Proteções
  • Hardware
    • Introdução ao Hardware Hacking
    • Introdução ao Infravermelho
Powered by GitBook
On this page
  • Rodando e obtendo o Assembly (Disassembling)
  • GDB - Principais Comandos

Was this helpful?

  1. Engenharia Reversa

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 nomeDoPrograma

Por 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 intel

Para 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ço
  • del

     Remove todos os breakpoints
  • si

     Executa a instrução atual
  • ni

     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
  end

Registradores

  • info registers

     Mostra o valor dos registradores do programa
  • x/wx $reg

     Mostra o conteúdo de "reg" em hexadecimal
  • x/s $reg

     Mostra o conteúdo de "reg" em ascii
  • x/24wx $esp

     Mostra parte da stack do programa \(24 words, no exemplo\)
  • x/2i $eip

     Mostra as próximas duas instruções
  • x NomeDaFunção

     Mostra o endereço da função
  • p NomeDaFunção

     Mostra o endereço e o tipo de retorno da função
  • info proc mappings

     Mostra o mapa da memória
PreviousPilhaNextGhidra

Last updated 5 years ago

Was this helpful?