Истории о вирусах

Формат заголовка 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 - записываемый объект

Содержание раздела