Skip to content

Лабораторная работа 3

Inspirate789 edited this page Mar 16, 2022 · 1 revision

EXE-файлы.

Исполняемые файлы с расширением EXE, используемые в ОС DOS и Windows (и некоторых других).

Может быть нескольких форматов:

  • MZ - 16-битный формат, основной для DOS;
  • NE - 16-битный формат старых версий Windows;
  • LE, LX - формат OS/2;
  • PE - 32- и 64-битный формат современных Windows (начиная с Windows 95).

MZ — стандартный формат 16-битных исполняемых файлов с расширением .EXE для DOS.

Назван так по сигнатуре — ASCII-символам MZ (4D 5A) в первых двух байтах. Эта сигнатура — инициалы Марка Збиковски, одного из создателей MS-DOS. Формат был разработан как замена устаревшему формату .COM. Исполняемые файлы MZ включают метаданные, могут иметь размер больше 64 Кбайт и использовать несколько сегментов памяти различного типа (кода, данных и стека), точка входа в программу также может быть в любом месте (в файлах .COM выполнение команд всегда начинается непосредственно с начала файла). Метод загрузки исполняемого файла определяется по сигнатуре: при её наличии обрабатывается MZ-заголовок, при отсутствии файл запускается как .COM — независимо от расширения файла (например, в последних версиях MS-DOS интерпретатор командной строки COMMAND.COM на самом деле является EXE-файлом).

Исполняемые файлы более поздних форматов для Windows начинаются с MZ-заглушки.

Обычно заглушка, добавляемая компиляторами, выводит сообщение наподобие «This program cannot be run in DOS mode» («Эту программу невозможно запустить в режиме DOS»). (https://ru.wikipedia.org/wiki/MZ_(%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82))

EXE-файлы состоят из заголовка и собственно загружаемой части (тела файла).

Залоговок MS-DOS (размер 40H байт):

Адрес Тип Имя Описание
00h word Сигнатура Магическая сигнатура DOS-файла - два символа "MZ"
02h word Extra bytes Количество байт на последней странице файла
04h word Pages Количество страниц в файле
06h word Relocation items Количество релокейшенов
08h word Header size Размер заголовка в параграфах
0Ah word Minimum allocation Мин. выделение памяти в параграфах
0Ch word Maximum allocation Макс. выделение памяти в параграфах
0Eh word Initial SS Начальное (относительное) значение регистра SS
10h word Initial SP Начальное значение регистра SP
12h word CheckSum Контрольная сумма
14h word Initial IP Начальное значение регистра IP
16h word Initial CS Начальное (относительное) значение регистра CS
18h word Relocation table Адрес на релокейшены и программу-заглушку
1Ah word Overlay Количество оверлеев
1Ch word Overlay information Зарезервировано
24h word OEMIdentifier Для OEMInfo
26h word OEMInfo Информация о программе
28h word Res1[10] Зарезервировано
3Ch dword PEHeaderAddr Адрес в файле заголовка PE

(http://mzc.narod.ru/Creating/Step008.htm, https://wiki.osdev.org/MZ)