В состав старого заголовка входят:
- обычный ЕХЕ-заголовок (Таблица А-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 |
Полный размер таблицы ресурсов |
Смещ. |
Описание |
+00h |
Имя объекта в формате ASCII, дополненное до восьми байт нулями |
+08h |
Виртуальный размер объекта. Размер памяти, который необходимо выделить перед загрузкой объекта |
+OCh |
Смещение объекта в файле. Смещение отсчитывается от значения поля 34h в РЕ-заголовке (смещение первого байта данных в файле) |
+10h |
Физический размер инициализированных данных объекта. |
+14h |
Физическое смещение первой страницы объекта в файле. Смещение отсчитывается от начала ЕХЕ-файла |
+18h |
Зарезервировано |
+24h |
Флаги объекта: 00000020h - объект кода 00000040h - объект инициализированных данных OOOOOOSOh - объект неинициализированных данных 04000000h - объект не должен быть кеширован OSOOOOOOh - объект не должен быть разбит на страницы lOOOOOOOh - объект общего доступа 20000000h - выполняемый объект 40000000h - читаемый объект SOOOOOOOh - записываемый объект |