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


19

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

dumpbin /imports FILE.EXE

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

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


Ответы:


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]

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


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

Кажется, это только список библиотек, а не символов.
plugwash

5

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

readelf -s <file>


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

1

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

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.