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

19

Para executável PE, posso listar os símbolos importados usando

dumpbin /imports FILE.EXE

ou usando o utilitário depende, que é o aplicativo da GUI.

'nm ELF-binário' apenas retorna "sem símbolos".

Xiè Jìléi
fonte
ver também listar os símbolos em um arquivo .so
bartolo-otrit

Respostas:

16

Tente objdump -T 'arquivo ELF'

Mr Shunz
fonte
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".

CyberTech
fonte
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>

Grazfather
fonte
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.

sherrellbc
fonte