¿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 ".


Respuestas:


16

Prueba objdump -T 'ELF-file'


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".


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>


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.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.