Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по ОС рулез.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
630.27 Кб
Скачать

Структура modref.

С помощью структуры MODREF создаётся список модулей для каждого процесса, что позволяет процессам не знать о модулях, загруженных другими процессами.

Структура MODREF создаётся для exe файла и для каждой dll, используемой файлом. Память для каждой MODREF выделяется из кучи kernel32.

Рассмотрим список MODREF для файла my.exe, который использует kernel32.dll и bar.dll.

PDB

my.exe

pModuleTableArray Таблица модулей

MODREF

0

0

4

6

kernel32.dll

индекс в IMTE

т аблице

м

4

my.exe

одулей

6

bar.dll

Структура MODREF содержит недокументированные поля:

  1. Указатель на структуру PDB для обеспечения обратной связи.

  2. Индекс в таблице модулей, то есть индекс в глобальной таблице модулей.

  3. Указатель на следующую структуру MODREF.

Конец списка обозначается 00000000.

Все модуль-зависимые функции просматривают только структуры MODREF для конкретного процесса. Модуль-зависимые функции:

GetProcAddress(…) – получив идентификатор модуля и идентификатор функции (это её имя или порядковый номер экспорта) возвращает адрес точки входа этой функции.

GetModuleFileName(…) – по идентификатору модуля возвращает полный путь к exe или dll файлам.

GetModuleHandle(…) – по имени файла возвращает идентификатор этого модуля.

Файлы. Формат pe файла.

Фирма Microsoft разработала переносимый формат файла Portable Executable для использования во всех ОС. Эта же фирма разработала новый формат для объектных (obj) и для библиотечных (lib) файлов.

В ОС UNIX же использовался другой формат. (VAX VMS).

При разработке Windows NT в Microsoft перешли разработчики ОС UNIX. Они использовали привычные структуры. Форматы файлов, с которыми работали разработчики файлов назывались COFF (Common Object File Format).

РЕ файлы явились усовершенствованием формата COFF. Этот формат назывался переносимым, потому что все реализации Windows NT в различных системах (MIPS, Alpha, Intel и т.д.) используют один и тот же формат файла.

С вводом нового формата Microsoft использовала OMF (Object Module Format).

В результате разработчики объектных и библиотечных файлов вынуждены были поставлять различные версии своих файлов.

Особенности ре формата:

  1. Исполняемый файл на диске и модуль, получаемый после загрузки практически идентичны. Загрузчик должен создать из файла процесс без усилий механизмом проецирования в память.

  2. Использование относительного виртуального адреса (RVA – Relation Virtual Address). Многие поля в РЕ используют RVA. Смещение данного элемента по отношению к адресу, с которого начинается отображение файлов в память. Например, загрузчик Windows. Отобразим РЕ файл, начиная с адреса 400000h. Некоторая таблица начинается с адреса 40146h. Тогда RVA=1464h, то есть, чтобы перевести RVA в указатель нужно перевести RVA к базовому адресу.

  3. Понятие раздела или секции. Все exe файлы Windows 95 используют плоскую модель памяти, однако в них используется условное деление на секции и разделы. Каждая секция содержит или код или данные.