objdump・とは?初心者向け解説と使い方ガイド共起語・同意語・対義語も併せて解説!

  • このエントリーをはてなブックマークに追加
objdump・とは?初心者向け解説と使い方ガイド共起語・同意語・対義語も併せて解説!
この記事を書いた人

高岡智則

年齢: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 -Dobjdump -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)
動的リンク時の参照先を動的に解決するためのテーブル。

インターネット・コンピュータの人気記事

awstatsとは?初心者でもわかる使い方と基本解説共起語・同意語・対義語も併せて解説!
14193viws
bing・とは?初心者のための基本ガイド:検索エンジンの仕組みと使い方共起語・同意語・対義語も併せて解説!
2035viws
着信転送とは?初心者向けガイドで分かる使い方と設定のコツ共起語・同意語・対義語も併せて解説!
948viws
リマインドメールとは?初心者にもわかる基本ガイドと使い方のコツ共起語・同意語・対義語も併せて解説!
654viws
充電アダプターとは何かを徹底解説|初心者でも分かる基本と選び方のコツ共起語・同意語・対義語も併せて解説!
610viws
com端子・とは?初心者にも分かる基礎ガイド|シリアルポートの使い方と歴史を解説共起語・同意語・対義語も併せて解説!
605viws
pinロックとは?初心者が知っておくべき基本と使い方ガイド共起語・同意語・対義語も併せて解説!
545viws
asp・とは?初心者向けに徹底解説する基本と使い方ガイド共起語・同意語・対義語も併せて解説!
483viws
16進数カラーコード・とは?初心者でもつまずかない基礎と使い方ガイド共起語・同意語・対義語も併せて解説!
465viws
ローカルポート・とは?初心者にも分かる基本と使い方ガイド共起語・同意語・対義語も併せて解説!
445viws
7zファイル・とは?初心者でもわかる使い方と特徴を解説共起語・同意語・対義語も併せて解説!
425viws
差し込み印刷・とは?初心者でもすぐわかる使い方と仕組みガイド共起語・同意語・対義語も併せて解説!
392viws
全角文字とは?初心者向け解説|全角と半角の違いをやさしく学ぶ共起語・同意語・対義語も併せて解説!
383viws
ワンタイムコード・とは?初心者でも分かる基本と使い方ガイド共起語・同意語・対義語も併せて解説!
340viws
none とは?初心者にもやさしく解説する意味と使い方ガイド共起語・同意語・対義語も併せて解説!
338viws
select句・とは?初心者でも分かるSQLの基本と使い方共起語・同意語・対義語も併せて解説!
332viws
csvダウンロードとは?初心者が今すぐ使える基本ガイド共起語・同意語・対義語も併せて解説!
323viws
ダイレクトチャットとは?初心者向けガイドで使い方と注意点を徹底解説共起語・同意語・対義語も併せて解説!
311viws
解像度スケールとは?初心者でも分かる解像度スケールの基礎と使い方共起語・同意語・対義語も併せて解説!
277viws
sha256とは?初心者が知るべき暗号ハッシュの基礎と使い道共起語・同意語・対義語も併せて解説!
259viws

新着記事

インターネット・コンピュータの関連記事