Como listar símbolos importados no executável ELF?


Respostas:


16

Tente objdump -T 'arquivo ELF'


Pensei objdump -T trabalhou principalmente em bibliotecas compartilhadas ...
McNamara jim

bem ... na verdade, se eu fizer: objdump -t / bin / ls, ele retorna: "SYMBOL TABLE: no symbols", com -T (que lista DYNAMIC SYMBOL TABLE) gera muitos dados, como: "00000000 DF UND 00000000 GLIBC_2.0 strchr "
Sr. Shunz 09/07/10

5

A saída do objdump é um pouco excessiva para esse propósito e requer uma boa análise para encontrar as importações reais.

Prefiro- me para este fim:

readelf -d dynamic-buffer-test

Dynamic section at offset 0x630a8 contains 23 entries:
 Tag                Type                 Name/Value
 0x0000000000000001 (NEEDED)             Shared library: [libstdc++.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [libm.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [libgcc_s.so.1]

Como você pode ver, as bibliotecas necessárias estão marcadas com "NECESSÁRIO".


Depende apenas do modo em que você o invoca. Tente objdump -p /path/to/binary | grep NEEDED.
precisa saber é o seguinte

Isso parece apenas listar bibliotecas, não símbolos.
Plug

5

Eu prefiro readelf.

readelf -s <file>


Isso lista apenas as bibliotecas necessárias. A questão é sobre quais símbolos são importados das referidas bibliotecas.
Alcaro

1

Juntamente com as outras respostas postadas aqui, gostaria de propor outra. O conteúdo impresso é uma função do formato do arquivo, onde o ELF se presta bem para resolver esse problema.

objdump -p /path/to/binary | grep NEEDED

O grep simplesmente extrai o conteúdo do arquivo Dynamic Section, mas é o formato da objdump -psaída que torna essa uma solução simples.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.