テストはLinux32ビットで行われます。
このコマンドを使用して、.text
.rodata
および.data
セクション:
objdump -s -j .text elf_binary objdump -s -j .rodata elf_binary objdump -s -j .data elf_binary
ただし、基本的にこれを使用して.bss
セクションのコンテンツを取得しようとすると、常に次のエラーが発生します。
objdump -s -j .bss elf_binary objdump: section ".bss" mentioned in a -j option, but not found in any input file
基本的に、ELFバイナリから.bss
セクションのコンテンツを取得するにはどうすればよいですか?
回答
.bss
にはコンテンツがありません。これは、プログラムの開始時にスペースを事前に割り当てるためのローダーへの単なるヒントです。実行時にはすべて0になり、プログラムが書き込むまで有用な情報を保持しません。その後、デバッガーを使用してメモリーをダンプし、その内容を調べることができます。
詳細については、Wikipedia ページを確認してください。 p>
回答
.bss
ブロックはシンボルで開始(初期化されていないデータセグメントとも呼ばれます-bss
は古いIBMチップ上の古いアセンブリ命令です)セクションにはglobal variables
と
初期化されていないか、0またはNULLに初期化されています。 .bss
セクションは通常、プログラムの実行が開始されるまで存在しません。そのため、「コンテンツを静的に取得することはできません。このセクションはプログラムの削減に役立つことに注意してください」。 sサイズ&を使用すると、読み込みが速くなります。