Domanda

Ho usato objdump guardare codice assembly nei binari ELF Linux.

A volte c'è un salto indiretta attraverso una tabella di salto che è memorizzato nella sezione di rodata (dati di sola lettura).

Come arrivare objdump o qualsiasi altro strumento di mostrarmi i contenuti di questa sezione dati?

ho potuto eseguire il programma ed esaminare gli indirizzi rilevanti nel debugger, ma io non voglio farlo perché deve essere fatto in modo interattivo.

La risposta ideale identificherà uno strumento che non solo mi mostra il contenuto, ma mi permette di controllare il formato di visualizzazione, più od fa.

È stato utile?

Soluzione

objdump -s -j .rodata exefile

dà un esagono / stampabile scarico ASCII side-by-side dei contenuti della sezione rodata come:

Contents of section .rodata:
 0000 67452301 efcdab89 67452301 efcdab89  gE#.....gE#.....
 0010 64636261 68676665 64636261 68676665  dcbahgfedcbahgfe

Non sembra che ci sia qualcosa in là per controllare la formattazione, ma è un inizio. Si può sempre undump l'esagono e dei mangimi a OD, suppongo:)

Altri suggerimenti

readelf -x .rodata hello_world.o

dà:

Hex dump of section '.rodata':
  0x00000000 48656c6c 6f20776f 726c6421 0a       Hello world!.

Si dovrebbe preferire readelf quando possibile, in quanto objdump semplicemente non mostra alcune sezioni come .symtab: Perché objdump non mostrano .bss, .shstratab, .symtab e sezioni .strtab?

È anche possibile estrarre i byte prime con le tecniche menzionate in: come si fa a estrarre solo il contenuto di una sezione ELF e come detto da ysdx .

È possibile ottenere il RAW (non Hexdump-ndr) Sezione ELF con:

# To a file:
objcopy file /dev/null --dump-section .text=text.data
# To stdout:
objcopy file /dev/null --dump-section .text=/dev/stdout | cat

Qui sto usando | cat al fine di costringere stdout ad essere un tubo. /dev/stdout potrebbe funzionare in modo imprevisto se stdout è un file. .text=- non invia a stdout, ma al file -.

objcopy e objdump avere alcune carenze (perché si basano su BFD che astrae diversi formati eseguibili).

Aggiornamento: ho scritto uno strumento rel="noreferrer"> per fare questo che non si basa su BFD.

scroll top