Читаем Кибероружие и кибербезопасность. О сложных вещах простыми словами полностью

Portable Executable (РЕ, «переносимый исполняемый») — общепринятый формат исполняемых файлов, объектного кода и динамических библиотек, используемый в 32- и 64-разрядных версиях операционной системы Microsoft Windows. Формат РЕ представляет собой структуру данных, содержащую всю информацию, необходимую PE-загрузчику для отображения файла в память. Исполняемый код включает в себя ссылки для связывания динамически загружаемых библиотек, таблицы экспорта и импорта API функций, данные для управления ресурсами и данные локальной памяти потока (TLS). В операционных системах семейства Windows NT формат РЕ используется для EXE, DLL, SYS (драйверов устройств) и других типов исполняемых файлов [1–8].

Формат РЕ также используется системой ReactOS, поскольку ReactOS предназначена для того, чтобы быть полностью совместимой с Windows на уровне кода. Кроме того, он исторически использовался и многими другими операционными системами, включая SkyOS и BeOS R3. Однако как известно, и SkyOS, и BeOS в конечном счёте перешли на формат ELF.

Поскольку широко используемая платформа разработки Mono намеревается быть по определению совместимой с Microsoft.NET, она использует тот же формат РЕ, что и в реализации Microsoft.

Надо отметить, что на платформе х86 в Unix-подобных операционных системах некоторые двоичные файлы Windows (в формате РЕ) могут быть выполнены с помощью Wine. НХ DOS Extender также использует формат РЕ для собственных 32-разрядных двоичных файлов DOS, кроме того, может в некоторой степени выполнить существующие двоичные файлы Windows в DOS, действуя, таким образом, как Wine для DOS.

Mac OS X 10.5 также имеет возможность загружать и интерпретировать PE-файлы, однако они не являются полностью совместимыми с Windows.

РЕ представляет собой модифицированную версию COFF формата файла для Unix. PE/COFF — это часто используемые альтернативный термин при разработке Windows.

На операционных системах семейства Windows NT формат РЕ поддерживает следующие архитектуры наборов команд: IA-32, IA-64, и х86-64 (AMD64/Intel64). До Windows 2000 Windows NT (таким образом, и РЕ) поддерживал MIPS, Alpha, и PowerPC. Поскольку РЕ используется на Windows СЕ, он продолжает поддерживать несколько разновидностей MIPS, ARM (включая Thumb), и SuperH.

Основные «конкуренты» РЕ — ELF (используемый в Linux и большинстве других версий Unix) и Mach-O (используемый в Mac OS X).

С появлением операционной системы очередного поколения Windows NT 3.1 Microsoft перешла на формат РЕ. Все более поздние версии Windows, включая Windows 95/98/МЕ, поддерживают этот формат. Формат сохранил ограниченную поддержку существующего (MZ) для преодоления разрыва между системами, основанными на DOS, и системами NT. Например, заголовки РЕ/COFF всё ещё включают исполняемую программу MS-DOS, которая по умолчанию является заглушкой, выводящей на экран простое сообщение «This program cannot be run in DOS mode» — «Эта программа не может быть выполнена в режиме DOS» (или подобное). РЕ продолжает служить изменяющейся платформе Windows. Некоторые расширения включают формат PE.NET (см. ниже), 64-разрядную версию под названием РЕ32+ (иногда РЕ+), и спецификацию для Windows СЕ.

А теперь рассмотрим основные технические детали, касающиеся назначения и структуры этих PE-файлов. На рис х.х. представлена упрощенная структура стандартных 32-разрядных РЕ-файлов.


Рис. 8.19. Структура 32-разрядного РЕ-файла

Здесь первые 2 байта РЕ файла содержат сигнатуру 0x4D 0x5 А-«MZ» (как наследник MZ-формата). Далее двойное слово по смещению 0x3 С содержит адрес PE-заголовка. Последний начинается с сигнатуры 0x50 0x45 — «РЕ».

Типовая структура файл РЕ состоит из нескольких заголовков и секций, которые указывают динамическому компоновщику, как отображать файл в память. Исполняемый образ состоит из нескольких различных областей (секций), каждая из которых требует различных прав доступа к памяти; таким образом, начало каждой секции должно быть выровнено по границе страницы. Например, обычно секция. text, которая содержит код программы, отображена как ис-полняемая/доступная только для чтения, а секция. data, содержащая глобальные переменные, отображена как неисполняемая/доступная для чтения и записи. Однако, чтобы не тратить впустую пространство на жёстком диске, различные секции на нём на границу страницы не выровнены. Часть работы динамического компоновщика состоит в том, чтобы отобразить каждую секцию в память отдельно и присвоить корректные права доступа получившимся областям согласно указаниям, содержащимся в заголовках.

Надо отметить, что Платформа. NET корпорации Microsoft расширила формат РЕ с помощью функций, которые поддерживают общеязыковую среду исполнения (Common Language Runtime — CLR). Среди дополнений — заголовок CLR и секция данных CLR. После загрузки двоичного файла загрузчик ОС приводит к выполнению CLR через ссылку в таблице импорта PE/COFF. Затем CLR загружает заголовок CLR и секции данных.

Перейти на страницу:

Похожие книги

Компьютер для тех, кому за…
Компьютер для тех, кому за…

В наш век высоких технологий без компьютера не обходится практически ни один человек. Но что делать, если вам уже за…, а компьютер вы так и не освоили? Не стоит отчаиваться! Эта книга была написана специально для тех, кто по каким-то причинам не смог освоить его раньше. Легким и доступным языком в книге изложены основные принципы работы на компьютере. Вы узнаете, как создать документ в текстовом редакторе, выстроить таблицы и диаграммы в экселе, освоите графический редактор, который позволит вам рисовать и редактировать фото и рисунки, научитесь самостоятельно подключать принтер и печать, общаться с родными и друзьями по скайпу и ICQ, узнаете, какие бывают игры, как выбрать игру для себя, и многое-многое другое.Никогда не поздно осваивать что-то новое! А уж тем более — компьютер. Он откроет вам целый мир безграничных возможностей. Не упустите свой шанс узнать что-то новое и интересное — дайте компьютеру прочно войти в вашу жизнь. Ведь пользоваться им так же просто, как и обычным телефоном, только в тысячу раз интереснее!

Оксана Грибова

Зарубежная компьютерная, околокомпьютерная литература / Интернет / Программное обеспечение / Прочая компьютерная литература / Книги по IT