Как вывести список импортированных символов в исполняемый файл ELF?

19

Для исполняемого файла PE я могу перечислить импортированные символы, используя

dumpbin /imports FILE.EXE

или используя утилиту зависимость, которая является приложением GUI.

«nm ELF-binary» просто возвращает «нет символов».

Xiè Jìléi
источник
см. также список символов в файле .so
bartolo-otrit

Ответы:

16

Попробуйте objdump -T 'ELF-файл'

Мистер Шунц
источник
Я думал, что objdump -T работает в основном с общими библиотеками ...
Джим Макнамара
ну ... не совсем, если я это сделаю: objdump -t / bin / ls возвращает: "ТАБЛИЦА СИМВОЛОВ: без символов", с -T (которая перечисляет ТАБЛИЦУ ДИНАМИЧНЫХ СИМВОЛОВ) выводит много данных, например: "00000000 DF UND 00000000 GLIBC_2.0 strchr "
г-н Шунц
5

Выходные данные objdump для этой цели немного излишни и требуют большого разбора для поиска фактического импорта.

Я предпочитаю 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]

Как видите, необходимые библиотеки помечены как «НЕОБХОДИМЫЕ».

CyberTech
источник
Это зависит только от режима, в котором вы вызываете его. Попробуй objdump -p /path/to/binary | grep NEEDED.
sherrellbc
Кажется, это только список библиотек, а не символов.
plugwash
5

Я предпочитаю readelf.

readelf -s <file>

Grazfather
источник
Это только перечисляет необходимые библиотеки. Вопрос в том, какие символы импортируются из указанных библиотек.
Алькаро
1

Наряду с другими ответами, размещенными здесь, я хотел бы предложить другой. Напечатанное содержимое является функцией формата файла, где ELF прекрасно подходит для решения этой проблемы.

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

Grep просто извлекает содержимое Dynamic Section, но это формат objdump -pвывода, который делает это простым решением.

sherrellbc
источник