İçe aktarılabilir semboller ELF yürütülebilir dosyasında nasıl listelenir?


Yanıtlar:


16

Objdump -T 'ELF-dosyasını' deneyin


Ben objdump -T çoğunlukla paylaşılan kütüphaneler üzerinde çalıştı düşündüm ...
jim mcnamara

iyi ... değil gerçekten, eğer yaparsam: objdump -t / bin / ls döndürür: "SEMBOL TABLOSU: sembol yok", -T (DİNAMİK SEMBOL TABLOSU listeler) ile, "00000000 DF UND 00000000 GLIBC_2.0 strchr "
Bay Shunz

5

Objdump'tan elde edilen çıktı bu amaç için biraz fazladır ve gerçek ithalatı bulmak için biraz ayrıştırma gerektirir.

Ben tercih readelf bu amaçla:

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]

Gördüğünüz gibi gerekli kütüphaneler "GEREKLİ" ile işaretlenmiştir.


Sadece onu çağırdığınız moda bağlıdır. Deneyin objdump -p /path/to/binary | grep NEEDED.
sherrellbc

Bu sadece kütüphaneleri listeliyor gibi görünüyor, sembolleri değil.
plugwash

5

Ben tercih ederim readelf.

readelf -s <file>


Bu sadece gerekli kütüphaneleri listeler. Soru, söz konusu kütüphanelerden hangi sembollerin içe aktarıldığıyla ilgilidir.
Alcaro

1

Burada yayınlanan diğer cevapların yanı sıra başka bir öneri de istiyorum. Basılan içerikler, dosya biçiminin bir işlevidir ve burada ELF bu sorunu çözmek için güzel bir şekilde uygundur.

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

Grep sadece içeriğini çıkarır Dynamic Section, ancak objdump -pbunu basit bir çözüm yapan çıktı formatıdır .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.