Come elencare i simboli importati nell'eseguibile ELF?


Risposte:


16

Prova objdump -T 'ELF-file'


Pensavo che objdump -T lavorasse principalmente su librerie condivise ...
jim mcnamara,

bene ... non proprio, se lo faccio: objdump -t / bin / ls restituisce: "TABELLA DEI SIMBOLI: nessun simbolo", con -T (che elenca la TABELLA DEI SIMBOLI DINAMICI) restituisce molti dati, come: "00000000 DF UND 00000000 GLIBC_2.0 strchr "
Mr Shunz,

5

L'output di objdump è un po 'eccessivo per questo scopo e richiede un buon po' di analisi per trovare le importazioni effettive.

Preferisco leggermi per questo scopo:

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]

Come puoi vedere, le librerie richieste sono contrassegnate con "NECESSARIO".


Dipende solo dalla modalità in cui lo invochi. Prova objdump -p /path/to/binary | grep NEEDED.
Sherrellbc,

Questo sembra elencare solo le librerie, non i simboli.
plugwash

5

Io preferisco readelf.

readelf -s <file>


Questo elenca solo le librerie richieste. La domanda riguarda quali simboli vengono importati da tali librerie.
Alcaro,

1

Insieme alle altre risposte pubblicate qui, vorrei proporne un'altra. I contenuti stampati sono una funzione del formato del file, in cui ELF si presta bene alla risoluzione di questo problema.

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

Il grep estrae semplicemente il contenuto di Dynamic Section, ma è il formato objdump -pdell'output che lo rende una soluzione semplice.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.