Comment lister les symboles importés dans l'exécutable ELF?

19

Pour PE exécutable, je peux lister les symboles importés en utilisant

dumpbin /imports FILE.EXE

ou en utilisant l'utilitaire depend qui est une application GUI.

`nm ELF-binary 'renvoie juste" pas de symboles ".

Xiè Jìléi
la source
voir aussi lister les symboles dans un fichier .so
bartolo-otrit

Réponses:

16

Essayez objdump -T 'ELF-file'

M. Shunz
la source
Je pensais qu'objdump -T travaillait principalement sur des bibliothèques partagées ...
jim mcnamara
eh bien ... pas vraiment, si je le fais: objdump -t / bin / ls il retourne: "SYMBOL TABLE: pas de symboles", avec -T (qui répertorie DYNAMIC SYMBOL TABLE) sort beaucoup de données, comme: "00000000 DF UND 00000000 GLIBC_2.0 strchr "
M. Shunz
5

La sortie de objdump est un peu excessive à cet effet et nécessite une bonne analyse pour trouver les importations réelles.

Je préfère me lire à cet effet:

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]

Comme vous pouvez le voir, les bibliothèques requises sont marquées "NEEDED".

CyberTech
la source
Cela dépend simplement du mode dans lequel vous l'invoquez. Essayez objdump -p /path/to/binary | grep NEEDED.
sherrellbc
Cela ne semble lister que les bibliothèques, pas les symboles.
plugwash
5

Je préfère readelf.

readelf -s <file>

Grazfather
la source
Cela répertorie uniquement les bibliothèques requises. La question est de savoir quels symboles sont importés de ces bibliothèques.
Alcaro
1

Avec les autres réponses affichées ici, je voudrais en proposer une autre. Le contenu imprimé est fonction du format de fichier, où ELF se prête bien à résoudre ce problème.

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

Le grep extrait simplement le contenu du Dynamic Section, mais c'est le format de la objdump -psortie qui en fait une solution simple.

sherrellbc
la source