¿Cómo enumerar los símbolos importados en el ejecutable ELF?

19

Para el ejecutable de PE, puedo enumerar los símbolos importados usando

dumpbin /imports FILE.EXE

o usando la utilidad depende que es la aplicación GUI.

`nm ELF-binary 'simplemente devuelve" sin símbolos ".

Xiè Jìléi
fuente
vea también la lista de símbolos en un archivo
.so

Respuestas:

16

Prueba objdump -T 'ELF-file'

Señor shunz
fuente
Pensé que objdump -T funcionaba principalmente en bibliotecas compartidas ...
jim mcnamara
bueno ... no realmente, si lo hago: objdump -t / bin / ls devuelve: "TABLA DE SÍMBOLOS: sin símbolos", con -T (que enumera la TABLA DE SÍMBOLOS DINÁMICOS) genera muchos datos, como: "00000000 DF UND 00000000 GLIBC_2.0 strchr "
Sr. Shunz
5

El resultado de objdump es un poco excesivo para este propósito, y requiere un buen análisis para encontrar las importaciones reales.

Prefiero readelf para este propósito:

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 puede ver, las bibliotecas requeridas están marcadas con "NECESARIO".

CyberTech
fuente
Solo depende del modo en que lo invoques. Tratar objdump -p /path/to/binary | grep NEEDED.
sherrellbc
Esto solo parece enumerar bibliotecas, no símbolos.
lavar el
5

Yo prefiero readelf.

readelf -s <file>

Abuelo
fuente
Eso solo enumera las bibliotecas requeridas. La pregunta es sobre qué símbolos se importan de dichas bibliotecas.
Alcaro
1

Junto con las otras respuestas publicadas aquí, me gustaría proponer otra. El contenido impreso es una función del formato de archivo, donde ELF se presta muy bien para resolver este problema.

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

El grep simplemente extrae el contenido del Dynamic Section, pero es el formato de la objdump -psalida lo que hace que esta sea una solución simple.

sherrellbc
fuente