86

私はobjdumpLinuxELFバイナリのアセンブリコードを調べるために使用してきました。

rodata(読み取り専用データ)セクションに格納されているジャンプテーブルを介した間接ジャンプがある場合があります。

このデータセクションの内容を表示するための取得方法objdumpやその他のツールはありますか?

プログラムを実行してデバッガーで関連するアドレスを調べることはできますが、インタラクティブに実行する必要があるため、実行したくありません。

理想的な答えは、コンテンツを表示するだけでなく、表示形式を制御できるツールを特定することですod

4

3 に答える 3

111
objdump -s -j .rodata exefile

rodata次のようなセクションの内容の16進数/印刷可能なASCIIダンプを並べて表示します。

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

フォーマットを制御するものがそこにあるようには見えませんが、それは始まりです。あなたはいつでもそのヘクスをアンダンプしてodに送ることができます、私は推測します:)

于 2009-11-06T04:58:13.393 に答える
37
readelf -x .rodata hello_world.o

与えます:

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

次のようないくつかのセクションが単に表示されないreadelfため、可能な場合は優先する必要があります。objdump.symtab

ELF セクションのコンテンツのみをどのように抽出するか、およびysdxで言及されている手法を使用して、生のバイトを抽出することもできます。

于 2015-05-26T07:42:04.043 に答える