Что такое формат файла EXE?
Файл с расширением .exe содержит скомпилированную программу и ее ресурсы для Microsoft Windows, DOS или (исторически) OS/2. Файлы .exe могут хранить приложения, игры, установщики или вредоносное ПО. Их можно запускать из командной строки или через графический интерфейс двойным щелчком мыши. Файлы .exe зависят от системы - они хранят данные в бинарном формате, а их внутренняя сигнатура определяет подтип исполняемого файла.
Каждый .exe начинается с двухбайтовой «магической» сигнатуры MZ (hex 4D 5A) со смещением 0, названной в честь ее соразработчика Марка Збиковски (Mark Zbikowski). Современные исполняемые файлы Windows дополнительно содержат сигнатуру PE\0\0 по смещению, хранящемуся в позиции 0x3C, что подтверждает принадлежность файла к формату Portable Executable. Существует пять основных исторических подформатов .exe:
MZ- 16-битный формат, родной для DOS.NE- 16-битный формат «New Executable», использовавшийся в 16-битных Windows (1.x-3.x) и OS/2 1.x; не может работать в чистом DOS, но поддерживается слоями совместимости 32-битных Windows и OS/2.LX- 32-битный формат для OS/2 2.0 и более поздних версий.LE- 16/32-битный формат, в основном использовавшийся для драйверов VxD в старых системах Windows (выпущенных до 2000 года).PE- «Portable Executable», охватывающий как 32-битные (PE32), так и 64-битные (PE32+) версии; представлен в Windows NT и является доминирующим форматом сегодня. Варианты ARM и ARM64 расширяют PE для устройств Windows на базе ARM.
Файлы .exe могут хранить ресурсы, такие как иконки, диалоговые окна, информацию о версии, аудио и манифесты приложений. Важно помнить, что не все типы файлов .exe могут быть исполнены в конкретной системе, так как такие файлы платформозависимы. Для запуска .exe в другой операционной системе требуется соответствующий инструмент эмуляции, такой как Wine или CrossOver. Самораспаковывающиеся архивы также используют расширение .exe, начинаясь с заглушки MZ/PE и неся внутри полезную нагрузку в виде архива ZIP, 7z или CAB.
Современные файлы .exe для Windows обычно имеют цифровую подпись Authenticode для проверки личности издателя, а ОС применяет функции безопасности, включая ASLR, DEP/NX и Control Flow Guard. Импорт из файлов .dll разрешается во время загрузки загрузчиком Windows PE. С файлами .exe из неизвестных или ненадежных источников следует обращаться с осторожностью, так как при выполнении они несут риск заражения вредоносным ПО.
Безопасность и защита
РИСК: HIGHEXE - это вектор вредоносного ПО №1 в Windows: он может запускать любой код с вашими привилегиями, поэтому вирусы, трояны, шифровальщики и «кряки/кейгены» обычно являются EXE-файлами. Контрольный список безопасности: запускайте EXE только от официального поставщика или из доверенного магазина; перед запуском проверьте цифровую подпись (правой кнопкой мыши → Свойства → Цифровые подписи) - легитимное ПО подписано кодом, и имя издателя совпадает; относитесь с большим подозрением к EXE, присланным по электронной почте, в чатах или в комплекте с «бесплатными» загрузками. Предупреждения Windows SmartScreen и антивируса на неопознанный EXE следует воспринимать серьезно. Чтобы проверить загрузку без выполнения, откройте ее как архив в 7-Zip или просканируйте на VirusTotal. Остерегайтесь двойных расширений, таких как «invoice.pdf.exe», и EXE, замаскированных иконками документов.
Детали формата
в двух словахПрограммы, открывающие файлы EXE
Технические подробности
глубокая спецификация| Магические байты | MZ (4D 5A) со смещением 0; сигнатура PE PE\0\0 (50 45 00 00) появляется по смещению, хранящемуся в заглушке MZ по адресу 0x3C |
| MIME-тип | application/vnd.microsoft.portable-executable |
| Поддержка архитектур | x86 (32-бит), x86-64/AMD64 (64-бит), ARM, ARM64; целевая машина закодирована в поле Machine заголовка COFF File Header |
| Варианты подформатов | MZ (MS-DOS 16-бит), NE (16-бит Windows/OS/2 1.x), LX (OS/2 2.x 32-бит), LE (драйверы VxD), PE32 (32-бит Windows), PE32+ (64-бит Windows) |
| Структура секций PE | Секции включают .text (исполняемый код), .data (инициализированные данные), .rdata (данные только для чтения), .rsrc (ресурсы) и .reloc (базовые перемещения) |
| Точка входа | Относительный виртуальный адрес (RVA) первой инструкции, хранящийся в AddressOfEntryPoint в опциональном заголовке PE |
| Таблица импорта | Список DLL и именованных или порядковых экспортов функций, необходимых бинарному файлу; разрешается загрузчиком Windows при запуске |
| Таблица экспорта | Опционально предоставляет функции или символы данных для использования другими исполняемыми файлами или DLL; присутствует в основном в DLL, но иногда и в EXE |
| Секция ресурсов (.rsrc) | Встраивает иконки, растровые изображения, диалоги, таблицы строк, информацию о версии и манифесты приложений в дерево с типизацией, именованием и языковыми тегами |
| Подпись кода | Цифровая подпись Authenticode (PKCS#7/CMS), хранящаяся в каталоге безопасности; проверяется Windows SmartScreen, UAC и ядром при загрузке драйвера |
| Меры безопасности | Флаги DllCharacteristics в опциональном заголовке включают ASLR, DEP/NX, Control Flow Guard (CFG), SafeSEH и High-Entropy VA для 64-битных бинарных файлов |
| Контрольная сумма PE | Четырехбайтовое поле CheckSum в опциональном заголовке; проверяется загрузчиком Windows для драйверов режима ядра и системных файлов |
| Типы подсистем | Windows GUI, консоль Windows (CUI), native (режим ядра), приложение EFI, драйвер загрузочного сервиса EFI, драйвер рантайма EFI |
| Использование в самораспаковывающихся архивах | Пакеты SFX встраивают полезную нагрузку ZIP, 7z или CAB после заглушки PE; файл запускается как обычный исполняемый файл и распаковывается автоматически |
| Выпущен | 1985 (MS-DOS MZ); PE format since Windows NT 3.1, 1993 |
| Спецификация | learn.microsoft.com |