Portable Executableとは - わかりやすく解説 Weblio辞書 (original) (raw)

Portable Executable

拡張子 .acm, .ax, .cpl, .dll, .drv, .efi, .exe, .fon, .mui, .ocx, .scr, .sys, .tsp
MIMEタイプ application/vnd.microsoft.portable-executable[1]
マジック ナンバー MZ 0x00(×10) PE 0x00 0x00
開発者 マイクロソフト
種別 バイナリ実行可能オブジェクト共有ライブラリ
派生元 DOS MZ executableCOFF
テンプレートを表示

Portable ExecutablePE)は、主に32ビットおよび64ビット版のMicrosoft Windows上で使用される実行ファイル (EXE)、オブジェクトファイルDLL、SYS (デバイスドライバ)、FON フォントファイル等のファイルフォーマットである。PEフォーマットは実行コードを管理するためにWindows OSローダが必要とする情報をカプセル化するデータ構造である。エクステンシブル・ファームウェア・インターフェイス (EFI) の仕様ではPEをEFI環境における標準の実行形式としている[2]。このためUEFIアプリケーションや.NETアプリケーションのバイナリフォーマットとしても使用されている。マイクロソフト製OSとのマルチブート環境の構築を容易にする目的で、x86x86-64ARMアーキテクチャにおけるLinuxカーネル実行ファイル(EFI Boot Stub)[3]ブートローダなど、非Windows系OSのシステムファイルの一部でも用いられている。

Windows NTオペレーティングシステムでは、PEはIA-32IA-64x86x86-64 (AMD64/Intel 64)、ARMおよびARM64命令セットアーキテクチャ (ISA) がサポートされている。Windows 2000以前のWindows NTではMIPSAlphaおよびPowerPC命令セットアーキテクチャがサポートされていた。PEはWindows CEでも利用されていたため、MIPSのいくつかの種類、ARM (Thumbを含む)、SuperH命令セットアーキテクチャでもサポートが継続されている[4]

さまざまなCPUアーキテクチャに対応するため、内部に判別用のフラグを持っている。実行時にDLLを動的にリンクし、コンポーネントレベルでのバグフィックス、互換性の維持が行われるようになっている。また、リソース領域にアイコン等を格納でき、GUI上で表示された場合アイコンがグラフィカルに表示され、ソフトウェアが容易に判別できるようにできる。

PEと似たフォーマットとしてELFファイル(LinuxUnixで利用)や Mach-O (macOSiOSで利用)がある。

歴史

マイクロソフトはWindows NT 3.1オペレーティングシステムの登場とともにPEフォーマットに移行した。Windows 95/98/ME や Windows 3.1x上のWin32sをはじめとする、その後のWindowsはすべてPEをサポートしている。DOSとNTシステムのEXEフォーマットとの互換性を持たせるため、PE/COFFヘッダーにはDOSプログラムがバイナリの先頭に組み込まれている。PEバイナリをDOS上で起動させると、そのDOSプログラムのほうが実行される。特に指定の無い場合、「This program cannot be run in DOS mode.」のような「DOSでは実行できない」というメッセージが表示するだけのプログラムが組み込まれる[5]。DOSプログラムの後ろに、PE固有の識別子と、COFFに似たデータ構造があり、DOSヘッダによってそのオフセットが指されている。

引き続きファットバイナリの形式である。PEは.NET PE形式や、PE32+ (もしくはPE+)と呼ばれる64ビットバージョン、およびWindows CE形式など、Windowsプラットフォームの変更にも対応し続けている。

対応する命令セットアーキテクチャ

技術的詳細

他のオペレーティングシステムでの利用状況

PEフォーマットはWindowsとのバイナリ互換を謳っているReactOSでも利用されている。過去にはSkyOSBeOS R3等いくつかのオペレーティングシステムで利用されていたが、SkyOSもBeOSも最終的にはELFへ移行した。

Mono開発環境はMicrosoft .NET Frameworkとのバイナリ互換を謳っており、マイクロソフトの実装と同じPEフォーマットを利用している。

x86 Unix系 オペレーティングシステムでは、Windowsバイナリ(PEフォーマット)はWineを通して実行できる。HX DOS ExtenderもDOS 32ビットバイナリにPEフォーマットを利用しており、一部の既存WindowsバイナリをDOSで実行できるため、DOS版Wineとして利用できる。

IA-32x86-64Linuxでは、WindowsDLLをloadlibraryで利用できる[9]

Mac OS X 10.5はPEファイルの読み込みと解析が可能だが、Windowsとバイナリ互換はない[10]

UEFIとEFIファームウェアはPEとWindows ABIをアプリケーションで使っている。

脚注

  1. ^ Andersson, Henrik (2015年4月23日). “application/vnd.microsoft.portable-executable” (英語). IANA. 2017年3月26日閲覧。
  2. ^UEFI 仕様書 version 2.4”. 2019年7月17日閲覧。,p.18のノートに「このイメージ形式を選択することでUEFIイメージにThumbおよびThumb-2命令セットを含めつつEFIインターフェイス自身をARMモードにする」とある。
  3. ^The EFI Boot Stub”. The Linux Kernel Archives. 2019年7月17日閲覧。
  4. ^PE Format (Windows)”. 2017年10月21日閲覧。
  5. ^PE Format” (2019年3月18日). 2019年7月17日閲覧。 “The linker places a default stub here, which prints out the message "This program cannot be run in DOS mode" when the image is run in MS-DOS.”
  6. ^ 西川和久 (1996年5月7日). “技術者必見!!Part2 Windows NT 4.0のあまり知られていない事実”. Impress PC Watch. 2019年7月17日閲覧。
  7. ^ Myria (2004年11月25日). “[PATCH] Xbox PE subsystem support”. Narkive. 2019年7月17日閲覧。 “It is known that Microsoft's own Xbox Development Kit (XDK) compiles developers' games into standard PE format, with subsystem 14. The resulting PE file is later converted to the PE-like "XBE" format.”
  8. ^ Vanik, Ben (2011年2月28日). “Building an Xbox 360 Emulator, part 3: Feasibility/OS”. Various Oddities. 2019年7月17日閲覧。 “On the 360 these are XEX files, which are packages that contain a bunch of resources detailing a game as well as an embedded PE-formatted EXE/DLL file containing the actual code.”
  9. ^ https://github.com/taviso/loadlibrary
  10. ^ Chartier, David (2007年11月30日). “Uncovered: Evidence that Mac OS X could run Windows apps soon”. Ars Technica. 2007年12月3日閲覧。 “... Steven Edwards describes the discovery that Leopard apparently contains an undocumented loader for Portable Executables, a type of file used in 32-bit and 64-bit versions of Windows. More poking around revealed that Leopard's own loader tries to find Windows DLL files when attempting to load a Windows binary.”

関連項目

外部リンク

Windows コンポーネント
管理ツール アプリインストーラ コマンドプロンプト コントロールパネル アプレット デバイスマネージャ ディスク クリーンアップ デフラグ Driver Verifier DxDiag イベントビューア IExpress 管理コンソール Netsh パフォーマンスモニタ リソースモニタ 設定 Sysprep システム構成 システム ファイル チェッカー システム情報 システムポリシーエディター システムの復元 タスクマネージャ Windows エラー報告 Windows Ink Windowsインストーラ PowerShell Windows Update Windows Insider WinRE WMI スキャンディスク CHKDSK 問題の報告と解決
アプリ 3Dビューアー アラーム & クロック 電卓 カメラ 外字エディタ Clipchamp Copilot Edge FAX とスキャン フィードバック Hub サポートに問い合わせる 拡大鏡 メール/カレンダー 地図 メッセージング 映画&テレビ モビリティセンター ナレーター メモ帳 OneDrive OneNote ペイント アドレス帳 People フォト フォト ビューアー クイック アシスト スマホ同期 Snipping Tool 切り取り & スケッチ 音声認識 Sticky Notes Microsoft Store メディア プレーヤー Windows Media Player Legacy ボイスレコーダ ワードパッド WinSAT 文字コード表 リモート アシスタンス Windows DVD プレイヤー
シェル Aero ClearType エクスプローラ Windows サーチ スタートメニュー タスクバー 特殊フォルダ 関連付け シェル名前空間(英語版
サービス サービス コントロール マネージャー CLFS BITS Wireless Zero Configuration シャドウ コピー 自動再生 タスク スケジューラ マルチメディア クラス スケジューラ
ファイルシステム CDFS DFS exFAT FAT12 FAT16 FAT32 IFS NTFS ジャンクション マウント ポイント リパース ポイント シンボリック リンク TxF EFS ReFS UDF
サーバ Active Directory DFS レプリケーション DNS IIS MSDTC NAP AD RMS SharePoint Windows Media Services WSUS 移動ユーザー プロファイル グループ ポリシー ドメイン リモート デスクトップ サービス (Remote Desktop Protocol)
アーキテクチャ NT系のアーキテクチャ スタートアップ プロセス (Vista) CSRSS DLL EXE HAL I/O Ntoskrnl.exe Svchost.exe WinPE NTLDR/ブート マネージャー アイドル プロセス カーネル パッチ保護 レジストリ IRP KTM LSASS SMSS Windows リソース保護 オブジェクト マネージャー Win32コンソール Winlogon セキュリティアカウントマネージャー(SAM)(英語版) 論理ディスク マネージャー
セキュリティ Defender ファイアウォール 悪意のあるソフトウェアの削除ツール Safety Scanner DEP MIC UAC UIPI KPP セキュリティとメンテナンス BitLocker
互換性 互換モード COMMAND.COM 仮想DOSマシン WOW WOW64 Windows Subsystem for Linux
API .NET Framework COM OLE OLE オートメーション(英語版DCOM ActiveX 構造化ストレージ MTS DirectX DWM GDI Protected Media Path(英語版PlayReady Windows Imaging Component Windows Imaging Format Windows Script Host VBScript JScript
開発終了 ゲーム リバーシ ピンボール インクボール Chess Titans Mahjong Titans Purble Place スパイダ ソリティア ソリティア ハーツ フリーセル マインスイーパ アプリ Windowsアドレス帳 Anytime Upgrade Windows Calendar(Vista) CardSpace DVD メーカー Grooveミュージック Internet Explorer Windows Journal 画像とFAXビューア(XP) Windows Mail(Vista) Media Center Messenger Microsoft ActiveSync Windows Mobile デバイス センター NetMeeting Outlook Express ペイント3D Cortana Pay Skype WinHelp Write Security Essentials サウンド レコーダー デスクトップ ガジェット ハイパーターミナル バックアップと復元センター ファイルマネージャー フォト ギャラリー プログラムマネージャ ミーティング スペース ムービー メーカー リソースメーター その他 UNIX サブシステム Interix Video for Windows
カテゴリ