Формат заголовка PE-executable EXE-файла
В состав старого заголовка входят:
- обычный ЕХЕ-заголовок (Таблица А-8);
- зарезервированная часть;
Таблица А-8. Формат обычного ЕХЕ-заголовка в PE-executable ЕХЕ-файле.
Смещ. |
Описание |
+00h |
DOS-заголовок |
+20h |
Резерв |
+3Ch |
Смещение начала РЕ-заголовка |
+40h |
DOS-программа (STUB) |
Таблица А-9. Формат РЕ-заголовка.
—————г Смещ. |
— — — - — — — 1— — — — —•— —-—!—————————1 Описание |
+00h |
РЕ' • Сигнатура |
+04h |
Тип процессора: OOOh - неизвестный тип 14Ch - 80386 14Dh - 80486 14Eh - 80586 |
+06h |
Количество входов в таблице объектов |
+08h |
Время и дата создания или модификации файла линкером |
+OCh |
Зарезервировано |
+14h |
Количество необходимых байт в NT-заголовке |
+16h |
Флаги: OOOOh - программные данные 0002h - запускаемый код (если этот бит не включен, значит во время линковки произошли ошибки) 0200h - если код не может быть загружен с базы кода, то его не надо загружать 2000h - библиотечные данные |
+18h |
Зарезервировано |
+lAh |
Версия и подверсия линковщика, создавшего данный файл |
+lCh |
Зарезервировано |
+28h |
Виртуальный адрес точки входа или процедуры инициализации библиотеки |
+2Ch |
Зарезервировано |
+34h |
Смещение первого файла данных в файле |
+38h |
Выравнивание объектов. Содержит величину степени 2 числа, на которое должны быть выровнены объекты. Число может быть в диапазоне между 512 и 256 Мбайт. По умолчанию - 64 Кбайт |
+3Ch |
Выравнивание файла. Содержит величину степени 2 числа, на которое должны быть выровнены страницы. Число может быть в диапазоне между 512 и 64 Кбайт |
+40h |
Номера версии и подверсии операционной системы, необходимой для запуска данной программы |
+44h |
Номера пользовательской версии и подверсии. Устанавливаются во время |
Таблица А-9. Формат РЕ-эаголовка. (Продолжение)
Смещ. |
Описание |
+48h |
Номера версии и подверсии подсистемы NT, необходимой для запуска данной программы |
+4Ch |
Зарезервировано |
+50h |
Виртуальный размер данных программы (в байтах) |
+54h |
Полный размер заголовка (в байтах), включая DOS-заголовок (старый), РЕ-заголовок и таблицу объектов |
+58h |
Контрольная сумма файла для запуска. Устанавливается линковщиком в ноль |
+5Ch |
NT подсистема, необходимая для запуска данной программы: OOOOh - неизвестная 0002h - графический интерфейс Windows ОООЗЬ - консоль Windows 0005h - консоль OS/2 0007h - консоль Posix |
+5Eh |
Флаги DLL: 000 lh - процесс инициализации библиотеки 0002h - процесс завершения библиотеки 0004h - поток инициализации библиотеки OOOSh - поток завершения библиотеки |
+60h |
Размер стека, необходимый программе |
+64h |
Обязательный размер стека |
+68h |
Размер локальной кучи, резервируемый для программы |
+6Ch |
Обязательный размер локальной кучи |
+70h |
Зарезервировано |
+74h |
Размер массива смещений/размеров, расположенного ниже |
+78h |
Смещение таблицы экспорта. Смещение отсчитывается от значения поля 34h (смещение первого байта данных в файле) |
+7Ch |
Полный размер таблицы экспорта |
+80h |
Смещение таблицы импорта. Смещение отсчитывается от значения поля 34h (смещение первого байта данных в файле) |
+84h |
Полный размер таблицы импорта |
+88h |
Смещение таблицы ресурсов. Смещение отсчитывается от значения поля 34h (смещение первого байта данных в файле) |
+8Ch |
Полный размер таблицы ресурсов |
Таблица А-9. Формат РЕ-заголовка. /Окончание)
- указатель на РЕ-заголовок (если в ЕХЕ-заголовке в начале таблицы
перемещаемых элементов - по смещению 18h - стоит 40h или боль-
ше, то слово, расположенное по смещению 3Ch, содержит смещение
начала РЕ-заголовка);
- DOS-программа (STUB).
В состав нового заголовка входят:
- РЕ-заголовок (Таблица А-9);
- таблица объектов (Таблица А-10);
- таблицы ресурсов, импортируемых и экспортируемых имен, на-
стройки адресов.
Таблица А-10. Формат таблицы объектов.
Смещ. |
Описание |
+00h |
Имя объекта в формате ASCII, дополненное до восьми байт нулями |
+08h |
Виртуальный размер объекта. Размер памяти, который необходимо выделить перед загрузкой объекта |
+OCh |
Смещение объекта в файле. Смещение отсчитывается от значения поля 34h в РЕ-заголовке (смещение первого байта данных в файле) |
+10h |
Физический размер инициализированных данных объекта. |
+14h |
Физическое смещение первой страницы объекта в файле. Смещение отсчитывается от начала ЕХЕ-файла |
+18h |
Зарезервировано |
+24h |
Флаги объекта: 00000020h - объект кода 00000040h - объект инициализированных данных OOOOOOSOh - объект неинициализированных данных 04000000h - объект не должен быть кеширован OSOOOOOOh - объект не должен быть разбит на страницы lOOOOOOOh - объект общего доступа 20000000h - выполняемый объект 40000000h - читаемый объект SOOOOOOOh - записываемый объект |