2012-05-07 12 views
5

Dove il formato ELF memorizza i nomi delle funzioni importate? È sempre possibile enumerare tutti i nomi di importazione, come per gli eseguibili PE?Importare nomi nel binario ELF

Ad esempio, se un binario utilizza printf è possibile dirlo, solo mediante l'analisi statica del file binario stesso?

risposta

7

In ELF vengono chiamati simboli non definiti. È possibile visualizzare l'elenco dei simboli non definiti da:

  • nm -D <file>|grep -w U

  • objdump -T <file>|grep "\*UND\*"

file ELF non si specifica quali simboli provengono dalle quali biblioteche; aggiunge semplicemente un elenco di librerie condivise per collegarsi al binario ELF e consente al linker di trovare i simboli nelle librerie.

+0

non possiamo ottenere da quale libreria condivisa abbiamo ottenuto quelle funzioni? –

+0

Si noti che è possibile importare anche un simbolo definito. È necessario esaminare le tabelle di rilocazione per vedere quali simboli vengono utilizzati. – ysdx

+0

@AnwarMohamed: no perché non sono legati a una specifica libreria condivisa in ELF. – ysdx