Jak wyświetlić listę importowanych symboli w pliku wykonywalnym ELF?

19

W przypadku plików wykonywalnych PE mogę wyświetlić listę importowanych symboli za pomocą

dumpbin /imports FILE.EXE

lub za pomocą narzędzia zależnego, które jest aplikacją GUI.

`nm ELF-binary 'zwraca tylko„ brak symboli ”.

Xiè Jìléi
źródło
zobacz także listę symboli w pliku .so
bartolo-otrit,

Odpowiedzi:

16

Wypróbuj objdump -T 'plik ELF'

Pan Shunz
źródło
Myślałem, że objdump -T działał głównie na bibliotekach współdzielonych ...
jim mcnamara
cóż ... nie bardzo, jeśli to zrobię: objdump -t / bin / ls zwraca: „TABELA SYMBOLI: bez symboli”, z -T (która wyświetla TABELĘ SYMBOLI DYNAMICZNEJ) wyświetla dużo danych, na przykład: „00000000 DF UND 00000000 GLIBC_2.0 strchr "
Pan Shunz
5

Dane wyjściowe z objdump są w tym celu nieco nadmierne i wymagają sporej analizy, aby znaleźć rzeczywisty import.

W tym celu wolę readelf :

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]

Jak widać, wymagane biblioteki są oznaczone jako „POTRZEBNE”.

CyberTech
źródło
To zależy tylko od trybu, w którym je wywołujesz. Spróbować objdump -p /path/to/binary | grep NEEDED.
sherrellbc
Wydaje się, że to tylko lista bibliotek, a nie symboli.
plugwash
5

Wolę readelf.

readelf -s <file>

Grazfather
źródło
Zawiera tylko wymagane biblioteki. Pytanie dotyczy tego, jakie symbole są importowane z tych bibliotek.
Alcaro,
1

Wraz z innymi zamieszczonymi tutaj odpowiedziami chciałbym zaproponować inną. Wydrukowana zawartość jest funkcją formatu pliku, w którym ELF ładnie nadaje się do rozwiązania tego problemu.

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

Grep po prostu wyodrębnia zawartość Dynamic Section, ale jego format objdump -pwyjściowy sprawia, że ​​jest to proste rozwiązanie.

sherrellbc
źródło