GDB
Entre no GDB antes de continuar. Para acessar, basta executar o comando gdb. Caso queira instale também o peda, para deixar o GDB com um visual mais amigável.
Outro recurso que podemos utilizar para deixar o GDB mais amigável é executando os comandos abaixo:
gdb -q <file> -tui
# Código Assembly
layout asm
# x Registradores
layout regsNOTA: Caso queira utilizar uma ferramenta GUI, utilize o edb, com o seguinte comando: edb --run <file>
Configurando o gdb
Para deixarmos o gdb configurado para abrir sempre em formato Intel, execute os comandos:
gdb -q
set disassembly-flavor intel
quit
echo "set disassembly-flavor intel" >> ~/.gdbinitComandos Básicos
Exibindo o código fonte
IMPORTANTE: Essa opção provavelmente não estará disponível, pois ninguém quer deixar um programa compilado que deixe exibir o códgo fonte. Para deixar essa leitura disponível, utilize o seguinte comando para compilar: gcc -g <file.c> -o <file>
Exibindo as variáveis
Vendo as functions do binário
Abaixo, algumas maneiras de executar o programa de forma normal, com parâmetros ou sem:
Executando o programa em modo debug
Vendo o Disasseble completo de um trecho (no exemplo abaixo, usamos o main)
Visualiza os endereços de memória que o programa está ocupando
Definindo novos valores paras os registadores
Argumentos
Registradores
Examine
O comando Examine (usamos o atalho x para executá-lo), serve para examinar determinado endereço de memória de várias maneiras. Este comando espera 2 argumentos, sendo eles o local da memória a ser examinado e o segundo é como exibir essa memória. Assim como o Examine utiliza uma abreviação (x), o formato de exibição também trabalha com abreviações, sendo elas:
Por exemplo, para exibirmos determinado endereço de memória em Hexadecimal, execute
Breakpoints
Inserindo Breakpoints
Deletando todos os breakpoints
Indo para a próxima instrução com NI (Next Instruction) e SI (Step Instruction)
Indo para o próximo breakpoint
Executando Determinada Função
Mesmo sem o programa chegar a determinada função, podemos forçar a sua execução. Com o padrão call((<type_return>(*)()) <method_name>)(<params>), podemos fazer isso, como no exemplo abaixo:
Sites
Last updated
Was this helpful?