1.

EXE ファイル(.exe)とは | Windows 実行ファイルの中身・PE 形式・コード署名

編集
この記事の要点
  • .exe は Windows の実行ファイル形式で、ダブルクリックでプログラムを起動できる最も身近なバイナリ
  • 内部構造は PE32 / PE32+(Portable Executable)で、先頭は MZ ヘッダ(マジック 4D 5A)から始まる
  • コード署名(Authenticode)と SmartScreen / Mark of the Web により、ダウンロード元の信頼性が検証される
  • Windows 以外では原則動かない。macOS/Linux で実行するには Wine 等の互換レイヤが必要
  • 不審な .exe は実行前にデジタル署名・発行元・ハッシュ値で確認するのが鉄則

概要

.exe(executable の略)は、Microsoft Windows でプログラムを実行するための最も基本的なファイル形式です。アプリケーションのインストーラ、ゲーム、ユーティリティ、自作のスクリプトを変換した実行ファイルまで、Windows 上で「ダブルクリックで動く」ものの大半は .exe としてパッケージされています。

歴史的には MS-DOS 時代に登場した古典的な MZ 形式(DOS EXE)にさかのぼり、Windows 3.x で NE(New Executable)、Windows NT 以降で PE(Portable Executable)へと進化しました。現在の Windows 10 / 11 で配布される .exe はほぼ例外なく PE32(32bit)または PE32+(64bit)です。互換性のため、PE ファイルの先頭には今でも MZ ヘッダが残されており、古い OS で実行すると「This program cannot be run in DOS mode」と表示される短い DOS スタブが埋め込まれています。

.exe は単体で動作するように見えますが、多くの場合は DLL(.dll) など外部ライブラリに依存しています。インストーラの実体である MSI(.msi) を内部にラップした セットアップ .exe も一般的です。

内部構造

PE 形式の .exe は、先頭から以下のように構造化されています。

  • DOS ヘッダ(IMAGE_DOS_HEADER): 先頭 2 バイトがマジックナンバー 4D 5A(ASCII で "MZ")。最後のフィールド e_lfanew が PE ヘッダの位置を指す
  • DOS スタブ: 「This program cannot be run in DOS mode.」と表示するだけの小さな 16bit プログラム
  • PE シグネチャ: 50 45 00 00("PE\0\0")
  • COFF ファイルヘッダ(IMAGE_FILE_HEADER): マシンタイプ(x86 / x64 / ARM64)、セクション数、タイムスタンプ等
  • オプショナルヘッダ(IMAGE_OPTIONAL_HEADER32 / 64): エントリポイント、イメージベース、サブシステム(GUI / Console)、必要 OS バージョン等。PE32 / PE32+ の区別はここで行う
  • セクションテーブル: .text(コード)、.data(初期化済みデータ)、.rdata(読み取り専用)、.rsrc(リソース)、.reloc(再配置情報)等
  • IMAGE_NT_HEADERS: PE シグネチャ + COFF ヘッダ + オプショナルヘッダをまとめた論理単位

セクション内には、文字列、アイコン、バージョン情報、マニフェスト XML(UAC レベルや DPI 設定)まで埋め込まれています。Resource Hacker や PE Explorer などのツールで覗くと、アイコン画像や多言語リソースが見えます。

主な用途

  • アプリケーション本体: notepad.exe、chrome.exe、explorer.exe など、Windows 上のあらゆる GUI/CUI アプリ
  • インストーラ: setup.exe、install.exe。内部に圧縮されたファイル群と展開ロジックを持ち、最終的に MSI を呼び出すパターンも多い
  • ゲーム / ランチャー: Steam クライアントや各ゲーム本体
  • ポータブルアプリ: インストール不要で USB メモリから起動できるタイプ。レジストリを汚さない
  • スクリプトのバイナリ化: PyInstaller / Nuitka(Python)、pkg(Node.js)、AutoHotkey 等で生成される単体 .exe

関連形式との比較

形式OS用途特徴
.exe (PE)Windows実行ファイルMZ ヘッダ + PE ヘッダ。GUI/CUI 両対応
.dllWindows動的リンクライブラリ同じ PE 形式だが単独実行不可
.msiWindowsインストーラOLE 構造化ストレージ。msiexec が解釈
ELFLinux/Unix実行ファイルマジック 7F 45 4C 46
Mach-OmacOS実行ファイル.app バンドル内に格納される

コマンド・ツール

  • signtool.exe: コード署名の付与・検証。signtool verify /pa app.exe
  • dumpbin.exe(Visual Studio 付属): PE ヘッダ、エクスポート、インポートを表示
  • PE-bear / CFF Explorer: PE 構造を GUI で可視化
  • Process Explorer: 起動中の .exe のロード DLL、ハンドル、署名状況を確認
  • PowerShell でハッシュ確認: Get-FileHash app.exe -Algorithm SHA256
  • Mark of the Web の解除: Unblock-File app.exe

注意点

  • マルウェアの主要媒体: トロイの木馬、ランサムウェアの多くが .exe として配布される。出所不明な .exe は実行しない
  • SmartScreen / Defender: インターネット経由でダウンロードした .exe には Mark of the Web(Zone.Identifier ADS)が付与され、初回実行時に警告が出る。これを軽率に解除しない
  • コード署名の確認: プロパティ → デジタル署名タブで発行元を確認。署名なし、または "Unknown Publisher" の場合は警戒
  • 互換性: 32bit .exe は 64bit Windows で WOW64 経由で動くが、64bit .exe は 32bit Windows で動かない
  • アンチウイルスとの相性: PyInstaller で作った自作 .exe が誤検知されることがある。署名 + 評判蓄積で改善
  • UAC(ユーザーアカウント制御): 管理者権限が必要な .exe は manifest に requireAdministrator を書き、起動時に昇格プロンプトが出る

関連リンク

編集
Post Share
子ページ

子ページはありません

同階層のページ
  1. EXE(.exe)
  2. DLL(.dll)
  3. MSI(.msi)
  4. DMG(.dmg)
  5. DEB(.deb)
  6. RPM(.rpm)
  7. APK(.apk)
  8. IPA(.ipa)
  9. AppImage(.appimage)
  10. app(.app)

最近更新/作成されたページ