Wie liste ich importierte Symbole in der ELF-Datei auf?

19

Für ausführbare PE-Dateien kann ich die importierten Symbole mit auflisten

dumpbin /imports FILE.EXE

oder mit dem Hilfsprogramm depend, das die GUI-Anwendung ist.

nm ELF-binary gibt nur "keine Symbole" zurück.

Xiè Jìléi
quelle
siehe auch liste die symbole in einer .so datei auf
bartolo-otrit 20.08.16

Antworten:

15

Versuchen Sie objdump -T 'ELF-Datei'

Herr Shunz
quelle
Ich dachte, objdump -T arbeitete hauptsächlich an gemeinsam genutzten Bibliotheken ...
Jim Mcnamara
na ja ... nicht wirklich, wenn ich es tue: objdump -t / bin / ls gibt es zurück: "SYMBOL TABLE: no symbols", mit -T (das DYNAMIC SYMBOL TABLE auflistet) werden viele Daten ausgegeben, wie: "00000000 DF UND 00000000 GLIBC_2.0 strchr "
Mr Shunz
5

Die Ausgabe von objdump ist zu diesem Zweck etwas zu umfangreich und erfordert ein gutes Parsing, um die tatsächlichen Importe zu ermitteln.

Ich lese mich lieber für diesen Zweck:

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]

Wie Sie sehen, sind die benötigten Bibliotheken mit "NEEDED" gekennzeichnet.

CyberTech
quelle
Es hängt nur von dem Modus ab, in dem Sie es aufrufen. Versuchen Sie es objdump -p /path/to/binary | grep NEEDED.
Sherrellbc
Dies scheint nur Bibliotheken aufzulisten, keine Symbole.
Plugwash
5

Ich ziehe readelf.

readelf -s <file>

Grazvater
quelle
Das listet nur die benötigten Bibliotheken auf. Die Frage ist, welche Symbole aus diesen Bibliotheken importiert werden.
Alcaro
1

Zusammen mit den anderen hier geposteten Antworten möchte ich noch eine vorschlagen. Die gedruckten Inhalte sind eine Funktion des Dateiformats, in dem sich ELF gut zur Lösung dieses Problems eignet.

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

Das grep extrahiert einfach den Inhalt des Dynamic Section, aber es ist das Format der objdump -pAusgabe, das dies zu einer einfachen Lösung macht.

sherrellbc
quelle