Comprensione del comando Readelf Linux

Comprensione del comando Readelf Linux
Quando si lavora con programmi e compilatori diversi come il GCC, finisci spesso per compilare i programmi in un formato binario che sono eseguibili. Il file dell'oggetto generato è comprensibile solo dalla macchina e l'unico modo in cui gli umani possono funzionare e comprenderne il contenuto è l'uso del lettura comando. Con Readelf, è possibile estrarre le informazioni dai file ELF (formati eseguibili e collegamenti). Il programma di lettura è quasi simile a objdump. Ma con Readelf, ottieni dettagli più specifici e, a differenza di Objdump, non si basa sul Bfd biblioteca.

Lavorare con il comando Readelf Linux

Prima di iniziare a utilizzare il comando readelf, installalo utilizzando il comando seguente:

$ sudo APT Installa binutili

Una volta installato, è possibile aprire la sua pagina di aiuto digitando il suo nome sul terminale.

$ readelf

Esistono diverse opzioni da utilizzare con Readelf. Cercheremo di coprire la maggior parte di loro usando gli esempi. Innanzitutto, assicurati di avere un file ELF da utilizzare per il campione.

Per il nostro esempio, useremo a C Codice del programma con cui compileremo GCC Per convertirlo in elfo, come mostrato nel seguente:

Utilizzare la seguente sintassi per verificare che il file sia in formato ELF.

$ file file file

Se il file è elfo, dovrebbe restituire come elfo nel suo output, come mostrato nella seguente immagine:

Visualizzando le intestazioni del file elfo

Il lettura offre il -H Flag che elenca tutte le intestazioni nell'elfo specificato. Nel nostro caso, possiamo elencare tutte le intestazioni nel elfo-file1 come mostrato nel seguente:

$ readelf -h elf -file1

Visualizzazione delle intestazioni del programma ELF

Se si desidera visualizzare le intestazioni del programma del file, usa il flag -l.

Allo stesso modo, puoi ottenere le intestazioni della sezione usando il flag -s. L'output mostra le diverse sezioni contenute nello spazio degli indirizzi dei processi:

Visualizzazione della tabella dei simboli

Un file elfo contiene tabelle di simboli. Puoi estrarre le loro informazioni utilizzando il flag -s.

È possibile notare le diverse voci nelle sezioni della tabella dei simboli del tuo file come nell'output precedente.

Inoltre, è possibile restringere l'output e specificare quale sezione tra le intestazioni della sezione ottenere i suoi dettagli. La sintassi per questo è:

$ readelf -p [section-name] [file-name]

Ad esempio, usiamo il .strtab.

La nostra produzione sarebbe:

L'output precedente è più comprensibile e specifico per la sezione.

Visualizzazione delle note fondamentali

Se il file ha segmenti o sezioni di note, il -N La flag visualizza il contenuto. Puoi usarlo come nella seguente immagine di esempio:

Alcuni dei contenuti visualizzati includono i dettagli del proprietario e la dimensione dei dati.

Visualizzazione dell'istogramma

È possibile rappresentare le lunghezze dell'elenco dei bucket in un istogramma quando si visualizza il contenuto della tabella dei simboli. IL -IO l'opzione viene utilizzata o -istogramma.

Visualizzazione della sezione di trasferimento

Se il file ELF ha sezioni di trasferimento, è possibile ottenere il contenuto utilizzando il -R O -RELOCS bandiera.

Inoltre, se il file ha sezioni dinamiche, il contenuto della sezione può essere recuperato utilizzando il -D bandiera.

I contenuti includono il tag, il tipo e il nome o il valore per ciascun contenuto.

La quantità di informazioni sul file ELF che è possibile estrarre utilizzando il comando Readelf Linux è infinita. La pagina Man offre più opzioni che puoi utilizzare per attività diverse. Tutto ciò di cui hai bisogno è cercare un'opzione che raggiunga ciò per cui intendi e usarlo.

Conclusione

Abbiamo coperto il comando readelf Linux, come installarlo e come iniziare a utilizzare lo strumento. Se stai cercando uno strumento per visualizzare le diverse informazioni sui file ELF, Readelf è perfetto per il lavoro. Ha molte opzioni e la cosa buona è che è facile da usare, come abbiamo visto negli esempi indicati. Provalo!