9.4. Особенности внутреннего устройства исполняемых файлов в 32-битовых версиях Windows | Телекоммуникации вчера, сегодня, завтра

Последовательность действий при создании объекта радиосвязи

Бланк формы №1 ТАКТИКО-ТЕХНИЧЕСКИЕ ДАННЫЕ РЭС

Поставка оборудования обеспеченного радиочастотами

Витрина



9.4. Особенности внутреннего устройства исполняемых файлов в 32-битовых версиях Windows

Не вдаваясь слишком глубоко в детали формата Portable Executable, отметим только те элементы, которые наиболее часто подвергаются воздействию в процессе защиты.

Заголовок РЕ-файла содержит очень большое число различных полей и таблиц. Одно из полей определяет так называемую точку входа (Entry Point) — то место в программе, куца будет передано управление после загрузки программы в память. В DLL управление передается на точку входа не только при загрузке библиотеки, но и при ее выгрузке из памяти, а также при создании и уничтожении потоков выполнения внутри программы.

Обычно исполняемый файл состоит из нескольких секций (точное количество секций указано в РЕ-заголовке). Редактор связей (Linker), как правило, объединяет в одну секцию однотипную информацию.

Типичный исполняемый файл содержит секции кода, статических и динамических данных и секцию ресурсов. Каждая секция описывается именем, размером и положением в файле и в памяти, а также набором атрибутов (двоичных флагов): код или данные в секции, данные инициализированы или нет, разрешено ли исполнение, чтение или запись и т. д.

В секции кода помещаются собственно команды процессора, исполняемые в ходе работы программы. Эта секция имеет атрибуты, разрешающие исполнение кода и запрещающие запись.

Статические данные не изменяются после загрузки программы в память, поэтому для секции статических данных обычно не устанавливается атрибут, разрешающий запись. Попытка записи в эту секцию в момент выполнения программы приведет к выработке исключительной ситуации (exception). Атрибуты секции динамических данных, напротив, разрешают запись в нее.

Секция ресурсов также не должна изменяться в процессе выполнения программы, и поэтому она не имеет атрибута, разрешающего запись.

Разумеется, выше была приведена лишь одна из возможных схем разбиения содержимого исполняемого файла по секциям, и каждое средство разработки, создающее РЕ-файльг, вправе самостоятельно решать, какая информация в какой секции окажется. Более того, вся программа может размещаться в одной секции и быть при этом вполне работоспособной.

Кроме описания секций в заголовке РЕ-файла присутствует специальный каталог (РЕ Directory), описывающий размер и положение служебных структур, необходимых для правильной загрузки программы в память. Эти структуры определяют, в каком месте программы хранятся ресурсы, как искать адреса экспортируемых функций, как настраивать ссылки на импортируемые функции и т. д.


Рис. 9 .1 .Таблицы импорта
N

Импортируемые функции, т. е. функции, код которых находится в других исполняемых модулях, но используется во время работы программы, описываются посредством таблиц импорта. Это четыре связанных между собой таблицы: каталог импорта (Import Directory Table), таблица ссылок на имена функций (Lookup Table), таблица имен функций (Hint-Name Table) и таблица адресов импортированных функций (Import Address Table, IAT).

Таблицы импорта предназначены для того, чтобы правильно заполнить все значения в таблице адресов импортированных функций. Каждое из этих значений представляет собой адрес определенной функции во внешней библиотеке после ее загрузки в адресное пространство процесса (рис. 9.1).

РЕ-файлы содержат еще много разных таблиц и атрибутов. Более подробная информация может быть найдена в технической документации на этот формат.



Поиск по сайту


Смотрите также