

高岡智則
年齢:33歳 性別:男性 職業:Webディレクター(兼ライティング・SNS運用担当) 居住地:東京都杉並区・永福町の1LDKマンション 出身地:神奈川県川崎市 身長:176cm 体系:細身〜普通(最近ちょっとお腹が気になる) 血液型:A型 誕生日:1992年11月20日 最終学歴:明治大学・情報コミュニケーション学部卒 通勤:京王井の頭線で渋谷まで(通勤20分) 家族構成:一人暮らし、実家には両親と2歳下の妹 恋愛事情:独身。彼女は2年いない(本人は「忙しいだけ」と言い張る)
objdump・とは?初心者向け解説と使い方ガイド
objdump は GNU binutils に含まれるコマンドの一つです。実行ファイルやオブジェクトファイルの中身を人が読める形で表示してくれるツールです。プログラムがどのように動くのかを探るときや、デバッグの手がかりを得たいときに役立ちます。
初心者の方は難しそうに感じるかもしれませんが、まずは基本的な役割を知ることから始めましょう。objdump は「バイナリと呼ばれる機械語の命令を人間が読める文字列に変換する窓口」と考えると理解しやすいです。これにより、ソフトウェアがどの命令を実行しているかや、どの関数が外部から呼ばれているかを確認できます。
基本的な使い方の考え方は次のとおりです。まず分析したいファイルを用意します。対象が ELF 形式の実行ファイルであれば objdump はそのエントリポイントや命令列を表示します。出力は長くなることが多いので、必要な情報を絞って出力させるオプションを使うと見やすくなります。
基本的なオプションとその意味
以下の表は初心者が覚えておくと便利な代表的なオプションです。表内は使い方の感覚をつかむための要約であり、実際の使用時には man ページや公式ドキュメントを参照してください。
| オプション | 説明 |
|---|---|
| -d | ディスアセンブリのみを表示します。機械語を人間の命令に置き換えた表示です。 |
| -D | 全セクションをディスアセンブルします。ファイル全体の命令を確認できます。 |
| -x | ヘッダ情報やセクション情報、シンボルテーブルなどファイルのメタ情報を表示します。 |
| -t | シンボルテーブルを表示します。外部から参照されている関数名などがわかります。 |
実際の使い方はとてもシンプルです。例えば objdump -d 実行ファイル名 と入力すると、実行ファイルの中身を命令レベルで確認できます。もう少し詳しく知りたい場合は objdump -D や objdump -x などの組み合わせを試してみましょう。
出力の読み方と注意点
objdump の出力は機械語の並びと対応する命令、そして関数の入り口やシンボルの名前が並びます。初心者は最初は何が何だか分からなくても大丈夫です。段階的に読み方を覚えるのがコツです。特に関数の呼び出しやループの流れを追うとき、ディスアセンブリ表示は非常に役立ちます。
ただし バイナリを許可なく分析することは法的に問題になる場合がある点に注意してください。自分が所有者のソフトウェアや分析が許可されているファイルだけを扱い、他者の著作権や利用規約を尊重してください。
実践のヒント
初心者向けの実践ヒントです。まずは小さな実行ファイルを用意して、-d や -D の結果を見比べてみましょう。出力の中で関数名と命令の対応をメモする習慣をつけると、プログラムの構造理解が早くなります。さらに静的ライブラリの中身や、エントリポイントの位置を調べたいときにも objdump は強力な味方になります。
objdumpの同意語
- objdump
- GNU Binutilsに含まれるディスアセンブリ表示ツール。オブジェクトファイルや実行ファイルの機械語をアセンブリ語に変換して表示します。
- オブジェクトダンプ
- オブジェクトファイルをダンプして中身を表示する、日本語での表現。実務ではobjdumpの機能を指すことが多いです。
- オブジェクトファイルダンプ
- オブジェクトファイルの内容を人間が読める形式で表示する機能を指す表現。
- オブジェクトファイルディスアセンブリ表示ツール
- オブジェクトファイルをディスアセンブルして表示するツールの説明表現。
- ディスアセンブリツール
- 機械語をアセンブリに変換して表示するツールの総称。objdumpは代表例です。
- 逆アセンブリツール
- 機械語をアセンブリへ逆変換するツールの総称。objdumpの機能を含みます。
- アセンブリ表示ツール
- バイナリのアセンブリコードを表示するためのツール。
- バイナリダンプツール
- バイナリファイルの中身をダンプして表示するツールの一般名。
- ELFディスアセンブリツール
- ELFファイルをディスアセンブルして表示するツールの一種。
- GNU Binutilsディスアセンブリ表示コマンド
- GNU Binutilsに含まれる、ディスアセンブルを表示するコマンドの名称(objdumpの説明表現)。
- 機械語をアセンブリへ変換するツール
- 機械語を人が読めるアセンリ言語へ変換して表示する機能を持つツール。
- リバースエンジニアリングツールのディスアセンブリ機能
- リバースエンジニアリング時に用いられるディスアセンブリ機能を指す表現。
- コマンドラインディスアセンブリツール
- 端末のコマンドライン上で動作し、ディスアセンブリを表示するツールの総称。
objdumpの対義語・反対語
- アセンブル
- アセンブリ言語を機械語へ翻訳してオブジェクトファイルを作る作業。objdumpがバイナリを人が読める形に変換して表示するのとは、反対の方向の作業です。
- コンパイル
- 高水準言語のソースコードを機械語へ翻訳して実行可能ファイルを作る作業。データの源を機械が実行できる形に変える、つまりソース→バイナリの過程です。
- ビルド
- ソースやライブラリ、資源を組み合わせて実行可能ファイルやライブラリを作る一連の工程。objdumpの出力(低レベルの表示)とは別の、完成物を作る段階を指します。
- ソースコード表示
- 高水準言語の元のソースコードを直接表示・読解すること。低レベルのアセンブリ表示に対する“元のコードを読む”行為です。
- 高水準コード表示
- C/C++/Javaなどの高水準言語のコードを示すこと。低レベルのアセンブリ表記を補足する対比的な概念です。
- デコンパイル
- バイナリを高水準言語に近い表現へ変換する作業。objdumpが出力するアセンブリ表示の対を成す、より高レベルな復元を目指す手法です。
objdumpの共起語
- GNU Binutils
- objdump は GNU Binutils というツールセットの一部で、バイナリの表示・解析を行うツール群の総称です。
- バイナリファイル
- 機械語データを格納したファイル形式で、実行ファイルやライブラリの元になります。
- オブジェクトファイル
- コンパイル中間のファイルで、リンク前の状態です。
- ELF
- Executable and Linkable Format の略で、Linux や多くの Unix 系の実行ファイル・ライブラリの標準フォーマットです。
- Mach-O
- Mach-O は macOS の実行ファイル・オブジェクトファイルのフォーマットです。
- COFF
- Common Object File Format の略で、Windows や一部の Unix 系で使われるオブジェクトファイル/実行ファイルのフォーマットです。
- セクション
- プログラムを構成する領域で、コードやデータなどが格納されます。
- セクションヘッダ
- 各セクションの名前・サイズ・属性を定義する情報のまとまりです。
- ヘッダ情報
- ファイル全体の基本情報(マジック、エンディアン、アーキテクチャ、エントリポイントなど)を含みます。
- アーキテクチャ
- 対象 CPU の命令セットや設計仕様を指します。
- x86_64
- 64-bit の x86 アーキテクチャ、長さ64ビットのレジスタと命令セットを持ちます。
- i386
- 32-bit の x86 アーキテクチャ、古くから使われる代表的な命令セットです。
- ARM
- ARM 系の命令セットを指し、モバイル機器などで広く使われます。
- ディスアセンブリ
- 機械語を人が読めるアセンブリ言語へ翻訳して表示する作業です。
- 逆アセンブル
- ディスアセンブリと同義で、機械語をアセンブリへ変換することを指します。
- ダンプ
- ファイルの内容を人が読める形で表示する出力、ヘッダ・セクションの情報も含みます。
- シンボルテーブル
- 関数名・変数名などのシンボル情報を一覧化した表で、リンクやデバッグに役立ちます。
- 動的シンボルテーブル
- 動的リンクに使われるシンボルの一覧で、共有ライブラリの解決に関わります。
- DWARF
- DWARF はデバッグ情報の標準フォーマットで、ソースコードの行番号・変数情報などを提供します。
- エンディアン
- データのバイト順序のこと。リトルエンディアンとビッグエンディアンの違いがあります。
- リロケーション
- 参照先が relocations テーブルで指示され、実行時のアドレス再配置に使われます。
- デバッグ情報
- デバッグ作業に使われる情報全般で、ソースと実行ファイルを対応づける情報を含みます。
objdumpの関連用語
- objdump
- GNU Binutils に含まれるツールのひとつで、オブジェクトファイルや実行ファイルの中身を人が読める形に変換して表示する。ディスアセンブリ表示、セクション・ヘッダ情報の表示などができる。
- GNU Binutils
- GNU プロジェクトが提供する一連のツール群。objdump のほかにも as(アセンブラ)、ld(リンカ)などが含まれる。
- ELF
- Linux などで広く使われる実行可能ファイル・オブジェクトファイルのフォーマット。セクション表やプログラムヘッダ、シンボルテーブルを持つ。
- Mach-O
- macOS で使われる実行可能ファイル・オブジェクトファイルのフォーマット。
- PE/COFF
- Windows の実行ファイルフォーマット。PE は Portable Executable、COFF を基に設計されている。
- アセンブリ言語
- CPU の命令を人間が書いたり読んだりしやすい表現。objdump はこのアセンブリ表現を表示する。
- 逆アセンブリ
- 機械語を人間が読めるアセンブリ言語に変換して表示する作業。objdump の主機能のひとつ。
- オペコード
- 命令を表す機械語のコード部分。命令の操作を指示する部分。
- ISA (命令セットアーキテクチャ)
- CPU が理解する命令と動作の定義。x86-64、ARM、MIPS などがある。
- x86-64 (AMD64)
- 64bit の x86 系 ISA。現代のPCで最も一般的なCPUアーキテクチャのひとつ。
- i386
- 32bit の x86 ISA。古いPCやレガシーソフトでよく使われる。
- ARM
- 低消費電力で広く使われる ISA。モバイル機器や組み込み機で多い。
- AArch64
- ARMv8 の 64bit ISA。近代的な ARM アーキテクチャの標準。
- MIPS
- MIPS 系の ISA。教育用途や組み込み機器で使われることがある。
- PowerPC
- PowerPC アーキテクチャの ISA。昔のMacや組み込み機器で使われた。
- AT&T 構文
- UNIX系ツールでよく見られる命令表現。レジスタ名やオペランドの順序が特徴。
- Intel 構文
- x86 の別表記法。通常は mov eax, 1 のように書く。objdump では -M intel で表示を切替えることができる。
- ディスアセンブリ表示
- 機械語をアセンブリ言語に変換して表示すること。命令のアセンブリ表記を確認できる。
- セクション
- 実際のデータを格納する区画。コードは .text、データは .data、未初期化データは .bss など。
- .text
- 実行可能コード(命令)が格納されるセクション。
- .data
- 初期化されたデータが格納されるセクション。
- .bss
- 未初期化データを格納するセクション。
- .rodata
- 読み取り専用データ(定数など)を格納するセクション。
- .plt
- 遅延解決のためのプラットフォーム・ルーチンテーブル。動的リンク時に使われる。
- .got
- グローバルオフセットテーブル。動的リンク時の参照先を指すテーブル。
- セクションヘッダ
- セクションのメタ情報を記録している部分。名前・サイズ・アドレスなどを含む。
- プログラムヘッダ
- 実行時にメモリへ読み込む時の配置情報を示す。各セクションのメモリ配置や属性を記述する。
- シンボルテーブル
- 関数名や変数名と、それらのアドレスを対応づけて記録する表。
- ダイナミックシンボルテーブル
- 動的リンクで使われるシンボル情報を格納する表。主に共有ライブラリの参照先を扱う。
- リロケーション
- 実行時にアドレスを再配置するための情報。コード中の参照先アドレスを正しい位置に調整する。
- REL (Relocation)
- リロケーションの形式のひとつ。オフセットに対して基準アドレスを加算する方式。
- RELA (Relocation with Addend)
- リロケーションの形式のひとつ。追加値(加算値)を明示的に保持する方式。
- DWARF
- デバッグ情報を格納する標準フォーマット。変数名・型・行番号などを含む。
- STABS
- 古いデバッグ情報フォーマットの一種。DWARF と並ぶデバッグ情報の表現形式。
- デバッグ情報
- ソースコードと実行ファイルを結びつける情報。変数名や行番号などを提供する。
- エンディアン (Endianness)
- データのバイト順序。リトルエンディアンとビッグエンディアンがある。
- アドレス
- メモリ上の位置を示す番号。オブジェクトファイル内の参照先を特定する。
- オフセット
- ファイル内の相対的な位置。セクション内のデータ位置を表す。
- シンボル
- 関数名・変数名などの識別子と、それらのアドレスを結びつける情報。
- readelf
- ELF/オブジェクトファイルの中身を閲覧・分析するためのツール。
- nm
- シンボルテーブルの内容を表示するツール。関数名・変数名のアドレスを確認できる。
- strings
- バイナリから可読文字列を抽出するツール。デバッグの手掛かりになることがある。
- strip
- 実行ファイルからデバッグ情報や未使用シンボルを削除してファイルサイズを小さくするツール。
- as
- GNU アセンブラ。アセンブリコードをオブジェクトファイルへ変換する。
- ld
- リンカ。複数のオブジェクトファイルを結合して実行ファイルを作成する。
- binutils
- objdump を含む一連のツールの総称。オブジェクトファイルの作成・解析・デバッグを支援する。
- PIE (Position-Independent Executable)
- 位置独立実行可能ファイル。実行時にアドレス空間をランダム化するための機構をサポートする。
- ASLR (Address Space Layout Randomization)
- アドレス空間のレイアウトを毎回ランダム化するセキュリティ機構。デバッグ時には注意が必要。
- PLT (Procedure Linkage Table)
- 遅延解決を実現するための間接呼び出し表。
- GOT (Global Offset Table)
- 動的リンク時の参照先を動的に解決するためのテーブル。



















