Рис. 1. Типовая структура PE файла
Типовая структура PE файла приведена на рисунке 1. В начале файла присутствует сигнатура и заголовок обыкновенного исполняемого файла MS-DOS. По смещению 3Ch хранится указатель на начало PE заголовка. Далее следует небольшая (как правило) программа, которая, в случае запуска под DOS выдаст сообщение о том, что программа способна работать только под управлением Windows. Эта программа называется «MS-DOS stub». Начало заголовка всегда выровнено на восьмибайтную границу. Заголовок состоит из двух частей: File Header и Optional Header. Первый имеет фиксированный размер. Размер второго указан в соответствующем поле в File Header. Структура File Header и Optional Header описана соответственно в таблицах 1 и 2. Optional Header для исполняемых файлов является обязательным, не смотря на его название. Начинается он с поля Magic Number. Если его значение равно 10Bh, файл имеет формат PE32. Наша программа работает только с ними.
Таблица 1. PEFileHeader
Смещение |
Размер (байт) |
Название поля |
Описание |
0 |
2 |
MachineType |
Число, идентифицирующее аппаратную платформу |
2 |
2 |
NumberOfSections |
Количество секций в файле |
4 |
4 |
TimeDateStamp |
Дата и время создания файла |
8 |
4 |
PointerToSymbolTable |
Смещение символьной таблицы в файле |
12 |
4 |
NumberOfSymbols |
Количество записей в символьной таблице |
16 |
2 |
SizeOfOptionalHeader |
Размер Optional Header |
18 |
2 |
Characteristics |
Флаги, описывающие свойства данного файла |
Некоторые термины, часто используемые при описании PE файлов, требуют пояснения. Виртуальный адрес — это адрес в 32-разрядном адресном пространстве данной программы. Относительный виртуальный адрес — это смещение в том же адресном пространстве относительно начала образа программы.
Таблица 2.PEOptionalHeader
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.