Optional-Header
Magic: имеет разные значения для приложений, собранных для 32 и 64-разрядных
систем
SizeOfCode: общий размер всех секций кода
AddressOfEntryPoint: RVA-адрес точки входа (функции старта программы)
BaseOfCode: RVA-адрес на начало секции кода
BaseOfData: RVA-адрес на начало секции данных
ImageBase: предпочтительный базовый адрес загрузки программы
SectionAligment: размер выравнивания секции при выгрузке в виртуальную память.
FileAligment: размер выравнивания секции внутри файла
SizeOfImage: размер файла в памяти, включая все заголовки. Должен быть кратен SectionAligment.
SizeOfHeaders: размер всех заголовков (DOS, DOS-Stub, PE, Section) выравненный на FileAligment.
NumberOfRvaAndSizes: количество каталогов в таблице директорий (ниже сама таблица). Всегда равно константе IMAGE_NUMBEROF_DIRECTORY_ENTRIES (16).
DataDirectory – массив структур, описывающих директории данных разных типов
typedef struct _IMAGE_OPTIONAL_HEADER {
WORD Magic;
…
DWORD SizeOfCode;
…
DWORD AddressOfEntryPoint;
DWORD BaseOfCode;
DWORD BaseOfData;
DWORD ImageBase;
DWORD SectionAlignment;
DWORD FileAlignment;
…
DWORD SizeOfImage;
DWORD SizeOfHeaders;
…
DWORD NumberOfRvaAndSizes;
IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES];
} IMAGE_OPTIONAL_HEADE R, *PIMAGE_OPTIONAL_HEADER;