Як перерахувати імпортовані символи у виконаному ELF?


20

Для виконуваного PE я можу перерахувати імпортовані символи, використовуючи

dumpbin /imports FILE.EXE

або за допомогою утиліти, яка залежить від програми GUI.

`nm ELF-binary 'просто повертає" без символів ".


Відповіді:


16

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


Я думав, що objdump -T працював переважно над спільними бібліотеками ...
jim mcnamara

ну ... не дуже, якщо я роблю: 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.