Win32asm обучение


Урок 6 - Структура файла - часть 2


Raw size это размер секции, выравненный согласно установкам в PE-заголовке. PE-загрузчик проверяет это значение, чтобы знать, сколько байт он должен загрузить в память.

Virtual size это размер, занимаемый в памяти.
Флаги определяют характеристики (только чтение/запись/исполняемый и т.д.).

6.2 Пример программы

Имеется пример программы:

.data

Number1 dd 12033h

Number2 dw 100h,200h,300h,400h

Number3 db "blabla",0


.data?

Value dd ?


.code

mov eax, Number1

mov ecx, offset Number2

add ax, word ptr [ecx+4]

mov Value, eax

Эта программа не будет транслирована, но это не важно.

В секции данных (.data) есть 3 метки: Number1, Number2, Number3. Эти метки используются как указатели на то место в программе, где они расположены.

Директивы db, dw и dd используются для определения и инициализации основных единиц памяти, байт (db), слово (dw) и двойное слово (dd), на которую будет указывать метка стоящая перед этой директивой. Метка заменяет численное значение адреса распределенных единиц памяти символическим именем.
С директивой db, вы также можете определить строку, потому, что строка это фактически порядок байт, соответствующих символам в строке.

Секция данных (из примера выше) в памяти будет выглядеть вот-так: 33,20,01,00,00,01,00,02,00,03,00,04,62,6c,61,62,6c,61,00
(все числа шестнадцатиричные)

Я выделил цветами некоторые числа. Метка Number1 указывает на место в памяти, где синий байт 33, метка Number2 указывает на место в памяти, где красный 00, Number3 на зеленый 62.
Теперь, если вы мспользуете это в своей программе:

mov ecx, Number1

Это фактически будет означать:

mov ecx, dword ptr [место в памяти, где расположена dword 12033h]

А это:

mov ecx, offset Number1

означает:

mov ecx, место в памяти, где расположена dword 12033h

В первом примере, ecx получит значение, которое находится в памяти указанной меткой Number1. Во втором, ecx станет указателем на то место в памяти, на которое указывает метка Number1.
Эти два примера ниже, имеют тот же самый эффект:




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



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