x64dbg を使うと、ソースコードのない Windows の実行ファイルを、動かしながら途中で止めて中身を調べられます。この記事では、自分で書いてコンパイルした小さなプログラムを題材に、デバッガーの基本操作を説明します。
この記事は、C などで簡単なプログラムを書いたことがあり、実行中のプログラムの中で何が起きているかを見てみたい人に向けています。読み終えると、次のことができるようになります。
- x64dbg をダウンロードして起動する
- 自作のプログラムを開き、ブレークポイントで止める
- ステップ実行しながら、命令とレジスターの変化を見る
x64dbg でできること
x64dbg は、Windows 用のオープンソースのデバッガーです。公式 README は、ソースコードのない実行ファイルの解析や、マルウェア解析を主な用途に挙げています。公式サイトによると、次の機能があります。
- EXE と DLL をデバッグする
- 逆アセンブル画面、メモリマップ、シンボル、スレッド、グラフの表示
- 命令の書き換え(パッチ)と、ファイルへの書き出し
- スクリプトによる操作の自動化
- C++ で書くプラグインによる拡張
- コメントやラベルを JSON のデータベースに残す機能
32 ビットと 64 ビットの両方のプログラムを、同じ画面と操作で扱えます。ただし起動する実行ファイルは分かれていて、32 ビットのプログラムには x32dbg.exe、64 ビットのプログラムには x64dbg.exe を使います。
外と行う通信
調べた範囲では、次のとおりです。
- 更新の確認は、自動では行われません。ソースコードで更新確認を呼び出していたのは、バージョン情報の画面のボタンと、メニューの更新確認の項目だけでした。押すと
https://update.x64dbg.com/releases.jsonに問い合わせます。 - シンボル(関数名などの手がかり)の取得は、
symdownloadコマンドか、画面の「Download Symbols for This Module」を選んだときに行われます。取得先の既定値は Microsoft のシンボルサーバー(https://msdl.microsoft.com/download/symbols)です。設定画面で変えられます。 - ヘルプやプラグイン一覧のメニューは、ブラウザーで公式サイトを開きます。
- 解析対象のプログラムの通信は、x64dbg では止まりません。対象がネットワークに接続する作りなら、デバッグ中もそのまま通信します。
ここに挙げたのは、ソースコードと公式ドキュメントで確認できた範囲です。すべてのコードを読み切ったわけではありません。
必要なもの
| 項目 | 内容 |
|---|---|
| 対象 OS | Windows。公式 README に「Windows 用」と書かれています |
| Windows のバージョン | ソースコードは、ビルド番号が 10000 未満の Windows(Windows 10 より前)で、未対応の警告を出します。今後の更新は動かなくなると書かれています |
| CPU | ARM64 のエミュレーション上は未対応です。同じ警告で「Intel/AMD の CPU に切り替える」よう求めています |
| 配布形態 | zip ファイルを展開して使います。インストーラーはありません |
| メモリ・ディスク | 公式の記載は確認できませんでした |
最新の配布ファイルは、GitHub のリリース 2026.05.27 の snapshot_2026-05-27_12-11.zip です(2026-10-27 に確認)。
安全な試し方:自分のプログラムをデバッグする
- 公式のリリースページから、
snapshot_<日付>.zipを入手します。symbols-snapshotやx64dbg-pluginsdkで始まるファイルは本体ではないので選びません。 - 自分のユーザーが書き込める場所に展開します。README が、この条件を示しています。
Program Filesの下には置かないでください。 - 展開したフォルダの
x96dbg.exeを実行し、使う種類(32 ビットか 64 ビット)を選びます。x32\x32dbg.exeとx64\x64dbg.exeを直接実行しても構いません。x96dbg.exeが出すシェル拡張やデスクトップのショートカットの登録は、この記事では使いません。 - 練習用に、文字列を表示するだけの小さな C プログラムを自分で書き、64 ビットでコンパイルします。
- x64dbg の で、コンパイルしたファイルを開きます。
- 最初の停止位置は、 の Events で選べます。システムブレークポイント(プロセスの初期化中)や、エントリブレークポイント(実行ファイルの入口)などがあります。
- 逆アセンブル画面で、気になる命令を選び F2 を押します。ブレークポイントを置けます。
- F9 で実行を再開します。ブレークポイントに届くと止まります。
- 止まったら F7(ステップイン)か F8(ステップオーバー)で、1 命令ずつ進めます。レジスターの値が、命令ごとにどう変わるかを見ましょう。
- 元のソースコードと見比べて、C の文がどんな命令になったかを確かめます。
自分のプログラムで慣れてから、CTF の練習問題など、解析してよいと明記された教材に進むとよいでしょう。
主な使い方
既定のショートカットキーは、ソースコードの設定に書かれています。
| 操作 | 既定のキー |
|---|---|
| 実行(Run) | F9 |
| ステップイン | F7 |
| ステップオーバー | F8 |
| 一時停止 | F12 |
| 関数の戻りまで実行 | Ctrl+F9 |
| ブレークポイントの切り替え | F2 |
| 再起動 | Ctrl+F2 |
| メモリマップを開く | Alt+M |
| ブレークポイント一覧を開く | Alt+B |
| パターン検索(Find Pattern) | Ctrl+B |
動いているプロセスに接続する Attach もあります。接続できるのは、x64dbg と同じ種類(32 ビットか 64 ビット)のプロセスだけです。32 ビット版の x32dbg では、64 ビットのプロセスに接続できません。
下のコマンド欄からは、コマンドで操作できます。条件付きブレークポイントやログ出力も使えます。詳しくは公式ヘルプの Introduction を読んでください。
Ghidra との違い
| x64dbg | Ghidra | |
|---|---|---|
| 主な使い方 | プログラムを動かしながら止めて調べる | 取り込んだファイルを逆アセンブルし、逆コンパイルして読む |
| 見えるもの | 実行中のレジスター、メモリ、スレッド | 関数の構造と、C 言語風の復元結果 |
| 動作する OS | Windows | Windows、macOS、Linux |
まず Ghidra で全体の構造を読み、動きを確かめたい箇所を x64dbg で追うと、読み進めやすくなります。
注意点
- デバッガーは対象を実行します。出どころの分からないファイルやマルウェアの検体は、必ず仮想マシンなどの隔離した環境で開いてください。普段使いのパソコンで動かさないでください。ネットワークにつなぐかどうかも、検証の目的に合わせて決めます。作り方は安全な検証環境の作り方にまとめています。
- 他人が作ったソフトウェアを解析する前に、利用規約や使用許諾契約を確認してください。リバースエンジニアリングを禁じている製品があります。著作権法などの法律にも注意が必要です。ライセンス認証の回避には使わないでください。判断に迷う場合は、自分のプログラムと解析してよい教材だけを使ってください。
- 管理者権限は、普段は要りません。管理者権限が要る実行ファイルを開くと、x64dbg が「管理者として再起動するか」を聞きます。 を選ぶと、x64dbg と解析中の対象が、どちらも管理者権限で再起動します。必要なときだけ使いましょう。
x96dbg.exeのシェル拡張の登録は、レジストリのクラスのキー(HKEY_CLASSES_ROOT)に書き込みます。ソースコードでは、昇格(runas)して実行し直す作りです。使わなければ、この変更は起きません。- プラグインは、外から取得して追加するプログラムです。入れる前に、提供元を確認してください。
- 本体は、公式の GitHub リリースページか、公式サイトからたどれる配布先から入手してください。
次に読む
出典
- 公式リポジトリ README(概要・インストールと使い方)github.com/x64dbg/x64dbg/blob/development/README.md
- 公式サイト(機能一覧・GPLv3・利用ライブラリ)x64dbg.com
- ライセンス(GNU GPL v3)github.com/x64dbg/x64dbg/blob/development/LICENSE
- リリース:2026.05.27(配布ファイル)github.com/x64dbg/x64dbg/releases/tag/2026.05.27
- 公式ヘルプ:File メニュー(Open・Attach・Restart as Admin)help.x64dbg.com/en/latest/gui/menus/File.html
- 公式ヘルプ:Debug メニュー(実行・ステップ実行)help.x64dbg.com/en/latest/gui/menus/Debug.html
- 公式ヘルプ:Events(停止するイベントの設定)help.x64dbg.com/en/latest/gui/settings/Events.html
- 公式ヘルプ:symdownload コマンド(シンボルの取得)help.x64dbg.com/en/latest/commands/analysis/symdownload.html
- ソース:更新確認のコード(UpdateChecker.cpp)github.com/x64dbg/x64dbg/blob/development/src/gui/Src/Utils/UpdateChecker.cpp
- ソース:シンボルの取得(symbolinfo.cpp)github.com/x64dbg/x64dbg/blob/development/src/dbg/symbolinfo.cpp
- ソース:設定画面のシンボルストア(SettingsDialog.cpp)github.com/x64dbg/x64dbg/blob/development/src/gui/Src/Gui/SettingsDialog.cpp
- ソース:未対応環境の警告(MainWindow.cpp)github.com/x64dbg/x64dbg/blob/development/src/gui/Src/Gui/MainWindow.cpp
- ソース:管理者権限が要る対象の扱い(debugger.cpp)github.com/x64dbg/x64dbg/blob/development/src/dbg/debugger.cpp
- ソース:ランチャー(x64dbg_launcher.cpp)github.com/x64dbg/x64dbg/blob/development/src/launcher/x64dbg_launcher.cpp
- ソース:既定のショートカットキー(Configuration.cpp)github.com/x64dbg/x64dbg/blob/development/src/gui/Src/Utils/Configuration.cpp
確認日 2026-10-27
似たツール
Ghidra
影響範囲 手元だけ米国 NSA が開発し、オープンソースで無料公開しているリバースエンジニアリングの道具一式。コンパイル済みのプログラムを逆アセンブル・逆コンパイルして、中身を読めるようにします。
- 用途
- 学習
- 形式
- デスクトップアプリ
- 難易度
- 上級
- ライセンス
- 自由に使えるApache-2.0
- 分類
- リバースエンジニアリング/学習・演習環境
Wireshark
影響範囲 外に届くネットワークを流れるパケットを記録し、中身をプロトコルごとに分解して見せるパケットアナライザー。
- 用途
- 学習
- 形式
- デスクトップアプリ
- 難易度
- 初級
- ライセンス
- 条件つきGPL-2.0
- 分類
- ネットワーク/フォレンジック