русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Заголовок РЕ файла.


Дата добавления: 2013-12-23; просмотров: 1939; Нарушение авторских прав


Формат 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 используют плоскую модель памяти, однако в них используется условное деление на секции и разделы. Каждая секция содержит или код или данные.

.reloc   .idata   .edata   .data   .text   таблица секций   ………………………………..   РЕ\0\0   DOS “MZ – заголовок”  



 

 

 
 

 

 


База данных модуля

 

смещение

 
 


 

Заголовок – это набор полей, который определяет как будет выглядеть остальная часть файла.

Несколько сотен байт РЕ файлов заняты под заглушку (‘This program must be run under Windows’). В DOS MZ заголовке находится указатель RVA на заголовок РЕ файла. База данных модуля начинается с сигнатуры, спомощью которой определяется тип файла.

РЕ - исполняемый Win32

NE - исполняемый Win16

LE - драйверы

LX - исполняемый OS/2

В базе данных модуля содержатся следующие поля:

1. Тип процессора для которого предназначен файл.

2. Время, когда файл был создан компоновщиком (ехе) или компилятором (obj). В этом поле указывается количество секунд, прошедших с 16:00 31 декабря 1969 года.

3. Версия компоновщика, который создал данный файл в формате minor/major, то есть х.х.

 

Лекция № 14 (27.04.02)

 

4. Суммарный размер программных секций, округлённых к верхней границе. Обычно это одна секция. Верхняя граница составляет 4 Кб.

5. Общий размер всех секций, состоящий из инициализированных данных, то есть глобальные переменные и константы, начальные значения которых определены.

6. Адрес, с которого начинается выполнение программного кода.

7. RVA, с которого начинаются программные секции файла. RVA обычно равен для ехе файлов 1000h.

 
 

 


RVA

 

8. RVA, с которого начинается секция данных.

9. Адрес, с которого файл должен отображаться в виртуальное адресное пространство. Для Windows 95,98 это 400000h, для Windows NT/2000 – это 010000h.

10. Самая старая версия ОС, которая может использовать данный файл в формате х.х.

11. Размер заголовка РЕ файла и таблица секций.

12. Объём виртуальной памяти, которая резервируется под начальный стек потока.

13. Количество памяти, которое изначально выделяется под стек потока.

14. Объём виртуальной памяти, резервируемый под кучу процесса по умолчанию.

15. Объём физической памяти, который выделяется под кучу и другие поля.

После заголовка идёт таблица секций. Она содержит информацию о каждой секции файла. Записи в таблице секций упорядочиваются по стартовому адресу. Каждая запись в таблице секций состоит из следующих полей:

1. 8 байтовое имя секции в стандарте ASCII. Имена секций присваиваются обычно компилятором. Мы можем и сами создать секцию (надо уметь использовать ASM).

Пример (MS Visual C).

#pragma code_seg <имя>

#pragma data_seg <имя>

Если имя секции занимает 8 байт, то отсутствует завершающий нуль.

2. RVA, когда загрузчик должен отобразить секцию.

3. Размер секции, выровненный на ближайшую верхнюю границу размера файла. Файл делится на области, кратные 512 байт.



<== предыдущая лекция | следующая лекция ==>
Структура MODREF. | Импортирование РЕ файлов.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.003 сек.