EXE is a family of executable file formats. It includes the original MS-DOS EXE format, and a number of newer formats built on top of that format. Most of them use the same .exe file extension.
Although all members of the EXE family have a file signature of "MZ", it seems that the term "MZ format" is generally used to mean only MS-DOS EXE (i.e. files designed for MS-DOS).
EXE files designed for operating systems other than MS-DOS usually contain a short program (called a DOS stub) which, when executed by DOS, prints a message like "This program cannot be run in DOS mode" or "This program requires Microsoft Windows", and immediately exits. Some programs contain a more functional DOS stub, e.g. the Windows 9x registry editor.
This is an incomplete outline of the EXE family of formats.
- MS-DOS EXE
- NE (New Executable, 16-bit)
- Linear Executable
- LE (mixed 16/32-bit)
- LX (32-bit)
- PE (Portable Executable)
- PE32 (32-bit Windows)
- PE32+ (64-bit Windows)
All EXE formats start with ASCII signature "
MZ" or, rarely, "
ZM". The byte at offset 3 is
0x01 (as it is the high byte of a field whose valid values are 0 through 511).
The starting point for identifying extended formats is the field at offset 60, which if present, points to an extended header.
- Ralf Brown's Interrupt List, INT 21h, Function 4Bh, describes lots of the "older" style EXE formats
- EXE Explorer utility
See also the articles for the specific EXE formats.