objdump é um programa para exibir várias informações sobre arquivos objeto em sistemas do tipo Unix. Por exemplo, ele pode ser usado como um desmontador para exibir um executável no formato de montagem. Faz parte do GNU Binutils para controle refinado sobre executáveis e outros dados binários.

Por exemplo,

$ objdump -D -M intel arquivo.bin | grep main.: -A20

Isso realiza a desmontagem no arquivo «arquivo.bin», com o código de montagem mostrado na sintaxe da Intel. Em seguida, o redirecionamos para o grep, que pesquisa a função principal e exibe 20 linhas de seu código.

Exemplo de saída: 4004ed: 55 push rbp 4004ee: 48 89 e5 mov rbp,rsp 4004f1: c7 45 ec 00 00 00 00 mov DWORD PTR [rbp-0x14],0x0 4004f8: c7 45 f0 01 00 00 00 mov DWORD PTR [rbp-0x10],0x1 4004ff: c7 45 f4 02 00 00 00 mov DWORD PTR [rbp-0xc],0x2 400506: c7 45 f8 03 00 00 00 mov DWORD PTR [rbp-0x8],0x3 40050d: c7 45 fc 04 00 00 00 mov DWORD PTR [rbp-0x4],0x4 400514: c7 45 ec 00 00 00 00 mov DWORD PTR [rbp-0x14],0x0 40051b: eb 13 jmp 400530 <main+0x43> 40051d: 8b 05 15 0b 20 00 mov eax,DWORD PTR [rip+0x200b15] # 601038 <globalA> 400523: 83 e8 01 sub eax,0x1 400526: 89 05 0c 0b 20 00 mov DWORD PTR [rip+0x200b0c],eax # 601038 <globalA> 40052c: 83 45 ec 01 add DWORD PTR [rbp-0x14],0x1 400530: 8b 05 02 0b 20 00 mov eax,DWORD PTR [rip+0x200b02] # 601038 <globalA> 400536: 39 45 ec cmp DWORD PTR [rbp-0x14],eax 400539: 7c e2 jl 40051d <main+0x30> 40053b: 5d pop rbp 40053c: c3 ret 40053d: 0f 1f 00 nop DWORD PTR [rax]

O objdump usa a biblioteca BFD para ler o conteúdo dos arquivos objeto.

Utilitários semelhantes são o Borland TDUMP, o Microsoft DUMPBIN e o readelf.

Ver também GNU Binutils

Ligações externas

Binutils::Objdump - Interface Perl para o objdump

Categoria:Ferramentas de programação para Unix Categoria:Desmontadores