Win32asm обучение


Урок 6 - Структура файла


        Win32Asm Tutorial

       

назад 6- Структура файла вперед

6.0 - Структура файла

Исходные файлы разделены на секции, такие как код, данные, неинициализированные данные, константы, ресурс и смещение. Секция ресурса создается из файла ресурсов, подробнее об этом я расскажу позже. Секция смещений не важна для нас (она содержит информацию, PE-загрузчика, чтобы он мог загрузить программу в любое место в памяти). Важные секции это код, данные, неинициализированные данные и константы. Секция кода содержит, рабочий код программы. Секция данных содержит данные, доступные для чтения и записи. Вся секция данных включается в exe файл и может быть инициализирована данными.

Неинициализированные данные не имеют никакого содержания при запуске, и даже не включены в exe файл непосредственно, это только часть памяти, зарезервированной windows. Эта секция доступна для чтения и записи. Секция констант такае же как секция данных, но доступна только для чтения. Хотя эта секция может использоваться для констант, проще и быстрее объявлять константы в файлах для включения, и использовать их как непосредственные значения.

6.1 Идентификаторы секций

В ваших исходных файлах (*.asm), вы объявляете секции:

.code ; начало секции кода

.data ; начало секции данных

.data? ; начало секции неинициализированных данных

.const ; начало секции констант

Исполняемые файлы (*.exe, *.dll и другие) (в win32) это файлы в PE формате. Я не буду подробно объяснять о нем, а раскажу только о некоторых важных вещах. Разделы определены в PE-заголовке с некоторыми характеристиками:

Название секции, RVA, offset, raw size, virtual size и флаги.
RVA (relative virtual address) - PE-загрузчик использует значение в этом поле, когда загружает секцию в память. Если значение в этом поле равняется 1000h, а файл файл загружен в 400000h, секция будет загружена в 401000h.
Offset это файловое смещение на начало секции. PE-загрузчик использует это значение для того, чтобы найти ее начало.



- Начало -  - Назад -  - Вперед -



Книжный магазин