Bagaimana cara membuat daftar simbol yang diimpor dalam eksekusi ELF?

19

Untuk PE yang dapat dieksekusi, saya dapat membuat daftar simbol yang diimpor menggunakan

dumpbin /imports FILE.EXE

atau menggunakan utilitas dependen yang merupakan aplikasi GUI.

`nm ELF-binary 'hanya mengembalikan" no simbol ".

Xiè Jìléi
sumber
lihat juga daftar simbol dalam file .so
bartolo-otrit

Jawaban:

16

Coba objdump -T 'ELF-file'

Tuan Shunz
sumber
Saya pikir objdump -T bekerja terutama di perpustakaan bersama ...
jim mcnamara
baik ... tidak juga, jika saya lakukan: objdump -t / bin / ls ia mengembalikan: "SYMBOL TABLE: no simbol", dengan -T (yang berisi DYNAMIC SYMBOL TABLE) menampilkan banyak data, seperti: "00000000 DF UND 00000000 GLIBC_2.0 strchr "
Mr Shunz
5

Output dari objdump sedikit berlebihan untuk tujuan ini, dan membutuhkan sedikit penguraian untuk menemukan impor yang sebenarnya.

Saya lebih suka membaca sendiri untuk tujuan ini:

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]

Seperti yang Anda lihat, perpustakaan yang diperlukan ditandai dengan "DIPERLUKAN".

CyberTech
sumber
Itu hanya tergantung pada mode di mana Anda memintanya. Coba objdump -p /path/to/binary | grep NEEDED.
sherrellbc
Ini sepertinya hanya daftar perpustakaan, bukan simbol.
plugwash
5

Saya lebih suka readelf.

readelf -s <file>

Grazfather
sumber
Itu hanya daftar perpustakaan yang diperlukan. Pertanyaannya adalah tentang simbol apa yang diimpor dari perpustakaan tersebut.
Alcaro
1

Bersamaan dengan jawaban lain yang diposting di sini saya ingin mengusulkan yang lain. Konten yang dicetak adalah fungsi dari format file, di mana ELF cocok untuk memecahkan masalah ini.

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

Grep hanya mengekstraksi isi dari Dynamic Section, tetapi format objdump -poutput yang membuat ini solusi sederhana.

sherrellbc
sumber