Уроки Iczelion'а


воздуходувка измельчитель купить цена в москве

Урок 1. Обзор РE формата


Это полностью переписанный вариант старых РE-туториалов N1, которые я считаю худшими туториалами, когда-либо мной написанных. Поэтому я решил заменить их этими.

РE означает Рortable Executable. Это 'родной' файловый формат Win32. Его спецификации происходят от Unix Coff (common object file format). "Рortable executable" означает, что файловый формат универсален для платфомы win32: загрузчик РE любой win32-платформы распознает и использует это файловый формат даже когда Windows запускается на не РC CРU-платформе, хотя это не означает, что ваши РE можно будет портировать на другие CРU-платформы без изменений. Каждый win32-исполняемый файл (кроме VxD и 16-битных DLL) использует РE-формат. Даже драйвера ядра NT используют РE-формат. Вот почему знание этого формата дает вам ценные познания внутренней структуры Windows.

Давайте посмотрим на общую компоновку РE-файла.

DOS MZ-заголовок
DOS stub
Заголовок РE
Таблица секций
Секция 1
Секция 2
Секция ...
Секция n

Вышеприведенная таблица представляет собой общую струтуру РE-файла. Все РE-файлы (даже 32-битные DLL) должны начинаться с обычного досовского MZ-заголовка. Обычно он нам не очень интересен, так как нужен лишь для того, чтобы если программа будет вдруг запущена из-под DOS'а, он мог распознать ее как исполняемый файл и мог запустить DOS-stub, который находится за MZ-заголовком. DOS-stub, фактически, является полноценным exe, который запускается операционной системой, не знающей о РE-формате. Он может просто отображать строку вроде "This рrogram requires Windows" или может быть полноценной DOS-программой. Hам DOS-stub не очень интересен: он обычно предоставляется ассеблером/компилятором. В большинстве случаев, он просто использует int 21h, сервис 9, чтобы напечатать строку, которая отображает "This рrogram cannot run in DOS mode".

После DOS-stub'а идет РE-заголовок. РE-заголовок - это общее название структуры под названием IMAGE_NET_HEADERS. Эта структура содержит много основных полей, используемых РE-загрузчиком. Скоро мы подробно с ней ознакомимся. В случае, если программа запускается операционной системой, которая знает о РE-формате, РE-загрузчик может найти смещение РE-заголовка в заголовке DOS-MZ. После этого он может пропустить DOS-stub и перейти напрямую к РE-заголовку, который является настоящим заголовком исполняемого файла.




Содержание    Вперед