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


Réponses:


16

Essayez objdump -T 'ELF-file'


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


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>


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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.