EXEMS-DOSWindowsEXE "executable"WindowsWindowsEXEWindows".exe"[1]

ファイルフォーマット

編集

0x5A4DASCII'MZ'[2]MS-DOS 2.0Mark Zbikowski

.exeWindowsOS/2OSOSMS-DOSPortable Executable (PE) New Executable (NE), Linear Executable (LE, LX) 
16ビット DOS MZ executable
元々の DOS 実行ファイルフォーマットである。ファイルの先頭にはASCIIコードで "MZ" の文字があり、これで識別できる。
16ビット New Executable
マルチタスクのMS-DOS 4.0で導入され、16 ビットの OS/2 と Windows で使われた。NEはASCIIコードの"NE"で識別できる。

32 Linear Executable

OS/2 2.0ASCII "LX" OS/2 2.0 [3] DOS

16/32 Linear Executable

OS/2 2.0ASCII "LE" Windows 3.xOS/2Windows 9xVxD使DOS

Windows

編集

1632WindowsWindowsNEPEDOSMZ[4][5]DOS"This program cannot be run in DOS mode"[6] WinZIP (MZ-NE  MZ-PE)DOS[7]
32ビット Portable Executable
Windows NTで導入され、ASCIIコードの "PE" で特定できる。(ただし、ファイルの先頭はPEではなく"MZ"である)[8]
64ビット Portable Executable (PE32+)
64ビットバージョンのWindowsで導入され、より多くのフィールドを持つPEファイルである。多くの場合、コードは32ビットか64ビットかのいずれかのPEファイルとして動作する[9]

その他のファイルフォーマット

編集

EXEMicrosoft Windows 3.x386WIN386.EXEMicrosoft Windows 95VMM386.VXDDOSWIN386.EXEW3, VMM386.VXDW4W3 (LEWIN386.EXE)W4 (LEVMM32.VXD) DLMPP2P3 (3Phar Lap DOS使)[10]

COMファイルとの比較

編集

MS-DOSCOMCOM0x100COMEXE



ヘッダー形式の例

編集

C言語による表記は以下の通りである。尚、この定義はWineで使われているヘッダファイル (winnt.h) の定義から引用した。WORDは16ビット整数であり、DWORDは32ビット整数である。

typedef struct _IMAGE_DOS_HEADER {
   WORD  e_magic;      /* 00: MZ Header signature */
   WORD  e_cblp;       /* 02: Bytes on last page of file */
   WORD  e_cp;         /* 04: Pages in file */
   WORD  e_crlc;       /* 06: Relocations */
   WORD  e_cparhdr;    /* 08: Size of header in paragraphs */
   WORD  e_minalloc;   /* 0a: Minimum extra paragraphs needed */
   WORD  e_maxalloc;   /* 0c: Maximum extra paragraphs needed */
   WORD  e_ss;         /* 0e: Initial (relative) SS value */
   WORD  e_sp;         /* 10: Initial SP value */
   WORD  e_csum;       /* 12: Checksum */
   WORD  e_ip;         /* 14: Initial IP value */
   WORD  e_cs;         /* 16: Initial (relative) CS value */
   WORD  e_lfarlc;     /* 18: File address of relocation table */
   WORD  e_ovno;       /* 1a: Overlay number */
   WORD  e_res[4];     /* 1c: Reserved words */
   WORD  e_oemid;      /* 24: OEM identifier (for e_oeminfo) */
   WORD  e_oeminfo;    /* 26: OEM information; e_oemid specific */
   WORD  e_res2[10];   /* 28: Reserved words */
   DWORD e_lfanew;     /* 3c: Offset to extended header */
} IMAGE_DOS_HEADER, *PIMAGE_DOS_HEADER;


脚注

編集


(一)^ .EXE File Extension. FileInfo - The File Extensions Database. Sharpened Productions. 2019816

(二)^ WORD0x4D, 0x5A

(三)^ OS/2 Operating System. operating system documentation project (200443). 2014213

(四)^ /STUB (MS-DOS Stub File Name) Linux/Mac cannot run an exe file.. MSDN. Microsoft. 2014110

(五)^ Sedory, Daniel B. (20041012). DOS Stub Program. The Starman's Realm. Self-published. 2014110

(六)^ Using Registry Editor in Real Mode. Support. Microsoft (20061115). 20141152014110

(七)^ Ellermann, Frank (2014122). dostub.exe. Purl.net. 2014124

(八)^ PE Format. Windows Dev Center. Microsoft (2019825). 2019816

(九)^ Pietrek, Matt (February 2002). An In-Depth Look into the Win32 Portable Executable File Format. MSDN Magazine (Microsoft). https://msdn.microsoft.com/en-us/magazine/bb985992(printer).aspx. 

(十)^ Brown, Ralf (2000716). Int 21/AH=4Bh. Ralf Brown's Interrupt List. 20181030

関連項目

編集

外部リンク

編集