O comando Objdump Linux

O comando Objdump Linux

“O Objdump é um utilitário de linha de comando usado para exibir informações sobre um objeto em sistemas do tipo Unix. O comando, quando usado, obtém as informações de um arquivo de objeto, mesmo quando você não tem seu código -fonte. Portanto, pode ser uma ferramenta de depuração para arquivos de objeto, especialmente ao trabalhar com programas do compilador.”

Este guia abrange os diferentes usos do comando Objdump com exemplos. Confira.

Usos do comando Objdump

O Objdump tem 6 propósitos principais:

  • Para depurar o arquivo de objeto
  • Recuperando cabeçalhos de arquivo
  • Obtendo o BFDName
  • Recuperando o cabeçalho do arquivo
  • Recebendo compensações de um arquivo
  • Desmontando um arquivo de objeto

Sua sintaxe básica é:

$ objdump

Existem muitas opções para usar com o comando Objdump e você pode ver a página de ajuda para vê -los.

$ objdump -Help

Este artigo usará o /Bin /Echo como nosso arquivo de objeto para nossos exemplos. No entanto, você pode usar outros arquivos de objeto, como os programas C. O uso ainda é o mesmo.

Trabalhando com Objdump

Exibir cabeçalhos de arquivo do arquivo de objeto

A opção -f, quando usada com o comando Objdump, recupera todos os cabeçalhos de arquivo associados a um determinado arquivo de objeto, como mostrado abaixo. Lembre -se, estamos usando o /bin /eco, que é um arquivo executável binário para o comando Echo como nosso objeto neste caso.

$ objdump -f /bin /echo

A saída resultante que exibe os cabeçalhos do arquivo será:

Você pode observar o formato e os cabeçalhos do arquivo de objeto da saída.

Para obter os cabeçalhos de arquivo específicos para objetos

Se você precisar exibir cabeçalhos de arquivo específicos para o arquivo de objeto que você está usando, use a opção -p.

$ objdump -p /bin /eco

Exibir conteúdo do cabeçalho da seção

Cada arquivo tem diferentes cabeçalhos de seção. Se você precisar exibir o conteúdo de cada um dos cabeçalhos da seção, use a opção -h.

$ objdump -h /bin /eco

Nesse caso, a saída foi:

A partir da saída, você pode notar que os diferentes cabeçalhos de seção são numerados de 1 e cada cabeçalho da seção tem seu tamanho, VMA, LMA, arquivo desligado e Algn.

Tamanho: representa o tamanho da seção carregada.

VMA: representa o endereço de memória virtual

Lma: representa o endereço de memória lógica

Arquivar: representa o deslocamento da seção desde o início do arquivo.

Algn: representa o alinhamento da seção.

Os outros detalhes, como aloc, dados, leitura e conteúdo, são os diferentes sinalizadores que representam se a seção for reado ou carregada.

Exibir informações de todos os cabeçalhos

Você também pode obter todas as informações sobre os cabeçalhos no arquivo de objeto. Para fazer isso, use a opção -x.

$ objdump -x /bin /echo

Neste exemplo, a saída parcial para o comando acima será:

Para obter o conteúdo do assembler da seção executável

Para obter o conteúdo do assembler da seção executável, use a opção -d.

$ objdump -d /bin /eco

Neste exemplo, a saída parcial é:

A saída é dividida em seções executáveis ​​e, para cada uma, seus conteúdos de assembler são exibidos como mostrado. Por exemplo, você pode ver a seção “.init ”e seu conteúdo correspondente do assembler abaixo dele antes de prosseguir para a próxima seção executável do arquivo de objeto.

Obtenha o conteúdo do assembler de cada seção

O -d exibe o conteúdo do assembler apenas das seções executáveis. No entanto, use a opção D se precisar do conteúdo para todas as seções de arquivo.

$ objdump -d /bin /eco

Para obter todo o conteúdo de todas as seções

Para isso, use a opção -s

$ objdump -s /bin /eco

A saída para todas as seções e seu conteúdo será:

Exibir informações de depuração

A opção -g exibe todas as informações de depuração disponíveis do arquivo de objeto.

$ objdump -g /bin /echo

Exibir conteúdo da tabela de símbolos

Se o arquivo de objeto tiver uma tabela de símbolos, você poderá exibir seu conteúdo usando a opção -t

$ objdump -t /bin /echo

Conclusão

Um comando Objdump é uma ferramenta útil para programadores que lidam com compiladores. O comando tem vários usos e cobrimos o exemplo mais comum de uso. Você também pode verificar a página do homem para obter mais detalhes sobre como usar a ferramenta. Além disso, o comando pode ficar um pouco esmagador. Então, continue praticando mais. Tudo de bom!