Что значит расширение exe

Файл формата exe: чем открыть, описание, особенности

EXE – распространенный файловый формат еще со времен ОС MS-DOS. Рассмотрим, что это за файлы, их наз.

EXE – распространенный файловый формат еще со времен ОС MS-DOS. Рассмотрим, что это за файлы, их назначение и задачи, какими программами запускаются, на что обратить внимание при работе с ними.

Часто встречающийся файловый формат – EXE. Помогает запустить установку программ на компьютер. Как открыть файл EXE в разных операционных системах, просмотреть или отредактировать содержимое – рассмотрим подробнее.

Что значит расширение exe

Формат EXE

EXE применяется для названия файлов-исполнителей. Это сокращение английского «executable files» – исполняемый файл. Используется в операционных системах Microsoft Windows, MS-DOS. Его задача – запуск инсталляции (деинсталляции) софта на устройство. Для этого в нем записан сценарий и код, которые запустят процесс.

В файле EXE находятся:

Что значит расширение exe

Файл может быть закодирован и сжат архиватором в самораспаковывающийся архив. Инсталляция проводится в ту же директорию или в указанную пользователем.

Открываем EXE расширение

На персональном компьютере с ОС Microsoft Windows затруднений при открытии файла не возникает (об исключениях ниже). Сложности будут, если у пользователя Linux, Mac OS или мобильное устройство. Частый вопрос – как открыть EXE файл для редактирования или просмотра. Разбираемся по порядку.

Что значит расширение exe

На компьютере

ОС Microsoft Windows 7

Для запуска применяем двойной щелчок манипулятора. Файл начнет устанавливаться и распаковываться (если это архив). Для просмотра содержимого без инсталляции подойдут утилиты Windows:

Что значит расширение exe

ОС Microsoft Windows 10

ОС Mac

Windows приложения работают с эмуляторами без сбоев, для переключения на установленную на компьютере ОС не нужно перезагружать ПК.

ОС Linux

ОС Android

Как открыть EXE файл на Андроиде при том, что формат не предназначен для работы с ним? Структура и состав файлов EXE другой, прямой запуск невозможен. Есть два способа открыть файл:

Второй вариант проще. К таким утилитам относятся: BOCHS, Limbo, QEMU и другие. Принцип действий идентичен: скачать и установить приложение на мобильное устройство, запустить утилиту.

Что значит расширение exe

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

Источник

Формат исполняемых файлов Windows EXE: что это и зачем

Что значит расширение exe

Так как Windows — это самая популярная операционная система в мире, то и файлы EXE очень распространены. Основная цель этих файлов — запустить инсталляцию или деинсталляцию программ на компьютерах, которые поддерживают этот формат файлов.

В EXE-файле обязательно должны находиться следующие компоненты:

Компоненты для стартовой установки.

Компоненты, используемые загрузчиком этого документа.

Компоненты устанавливаемой программы: основные графические и аудио элементы.

Дополнительные элементы программы: стили, иконки, ярлыки, документы и др.

При активации файла EXE запускается встроенный в систему установщик, который устанавливает все компоненты программ.

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

В других распространенных ОС: Linux, MacOS, Android, iOS есть определенные сложности с открытием EXE-файлов.

В Windows при простом нажатии на такой файл автоматически может начаться установка программы, которой принадлежит этот документ. Но иногда есть потребность просмотреть или отредактировать этот файл без автоматической установки на ПК. Тогда могут пригодиться некоторые инструменты для Windows OS:

Если нужно только просмотреть файл, то помо гут : 7ZIP, Vmware ThinAPP, Microsoft Visual Studio, IcoFX и др.

Если хотите отредактировать EXE-файл, то можно воспользоваться программой Resource Hacker.

Заголовок. Это сведения о б устанавливаемой программе, которые нужны для ее установки на компьютер.

Секции — это второй важный компонент EXE-формата. В секциях содержится последовательная информация, которая нужна непосредственно для установки необходимой программы. В секциях нет какого-то уникального формата, в них может содержаться разнообразная инсталляционная информация.

Мы будем очень благодарны

если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.

Источник

Что такое EXE-файл?

Как открывать, редактировать и & amp; конвертировать EXE файлы

Файл с расширением EXE (произносится как ee-ex-ee ) – это исполняемый файл, используемый в операционных системах, таких как Windows, MS-DOS, OpenVMS и ReactOS, для открытия программ.

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

EXE-файлы часто ссылаются на связанные DLL-файлы. Сжатые EXE-файлы используют вместо этого расширение EX_.

EXE-файлы могут быть опасными

Многие вредоносные программы переносятся с помощью EXE-файлов, обычно на фоне программы, которая кажется безопасной. Это происходит, когда программа, которую вы считаете подлинной, запускает вредоносный компьютерный код, который запускается без вашего ведома. На самом деле, программа может быть реальной, но также содержать вирус, или программное обеспечение может быть полностью поддельным и иметь просто знакомое, не угрожающее имя.

Поэтому, как и другие расширения исполняемых файлов, вы должны быть особенно осторожны при открытии EXE-файлов, которые вы загружаете из Интернета или получаете по электронной почте. EXE-файлы могут быть разрушительными, поэтому большинство провайдеров электронной почты не разрешают их отправку, а некоторые даже не позволяют поместить файл в ZIP-архив и отправить его. Всегда убедитесь, что вы доверяете отправителю EXE-файла, прежде чем открывать его.

Важным шагом в смягчении любого ущерба, нанесенного вредоносными файлами EXE, является поддержание антивирусного программного обеспечения в актуальном состоянии.

Как открыть файл EXE

Файлы EXE не требуют запуска сторонней программы, потому что Windows знает, как с этим справиться по умолчанию. Тем не менее, EXE-файлы могут иногда становиться непригодными из-за ошибки реестра или вирусной инфекции. Когда это происходит, Windows использует другую программу, например, «Блокнот», для открытия файла EXE, что, конечно, не работает.

Исправление включает в себя восстановление правильной ассоциации реестра с EXE-файлами.

Смотрите Winhelponline простое решение этой проблемы.

Как мы упоминали во введении выше, некоторые EXE-файлы являются самораспаковывающимися архивами, и их также можно открыть, просто дважды щелкнув по ним. Эти типы EXE-файлов могут автоматически извлекаться в предварительно настроенное место или даже в ту же папку, из которой открывается EXE-файл. Другие могут спросить вас, где вы хотите распаковать файлы/папки.

Если вы хотите открыть самораспаковывающийся EXE-файл, не выгружая его файлы, вы можете использовать распаковщик файлов, например, 7-Zip, PeaZip или jZip. Например, если вы используете 7-Zip, просто щелкните правой кнопкой мыши по файлу EXE и выберите, чтобы открыть его с помощью этой программы, чтобы просмотреть файл EXE как архив.

Как открыть EXE файлы на Mac

Как мы поговорим немного ниже, лучше всего, когда у вас есть программа, которую вы хотите использовать на своем Mac, которая доступна только в качестве установщика/программы EXE, это посмотреть, есть ли версия этой программы для Mac.

Предполагая, что это недоступно, что часто бывает, другой популярный вариант – запускать саму Windows из своего компьютера MacOS через нечто, называемое «эмулятор» или «виртуальная машина».

Эти виды программ эмулируют (таким образом, название) ПК с Windows, аппаратное обеспечение и все такое, что позволяет им устанавливать EXE-программы на базе Windows.

Некоторые популярные эмуляторы Windows включают Parallels Desktop и VMware Fusion, но есть и несколько других. Apple Boot Camp – это еще один вариант.

Бесплатная программа WineBottler – это еще один способ решения этой проблемы программ Windows на Mac. Никаких эмуляторов или виртуальных машин не требуется с этим инструментом.

Если ни одна из этих сведений не помогает вам открыть файл EXE, убедитесь, что вы не неправильно читаете расширение файла. Некоторые файлы имеют похожее имя, например файлы EXD, EXR, EXO и EX4, но не имеют ничего общего с файлами EXE и требуют специальных программ для их открытия.

Как конвертировать файл EXE

EXE-файлы создаются с учетом конкретной операционной системы. Декомпиляция того, что используется в Windows, приведет ко многим совместимым только с Windows файлам, поэтому преобразование файла EXE в формат, который делает его пригодным для использования на другой платформе, такой как Mac, будет, по меньшей мере, довольно утомительной задачей.

Вместо того, чтобы искать конвертер EXE, лучше всего было бы искать другую версию программы, доступную для операционной системы, на которой вы хотите ее использовать. CCleaner – один из примеров программы, которую вы можете загрузить для Windows в виде EXE или на Mac в виде файла DMG.

Тем не менее, вы можете обернуть EXE-файл в MSI-файл, используя EXE в MSI Converter. Эта программа также поддерживает запуск команд при открытии файла.

Расширенный установщик – альтернативный вариант, который намного более продвинутый.

Смотрите этот учебник на их сайте для пошаговых инструкций.

Дополнительная информация о EXE-файлах

Что-то интересное в EXE-файлах заключается в том, что при просмотре в виде текстового файла с помощью текстового редактора первые две буквы информации заголовка – это «MZ», обозначающий дизайнера формата – Марка Збиковски.

Файлы EXE могут быть скомпилированы для 16-разрядных операционных систем, таких как MS-DOS, а также для 32-разрядных и 64-разрядных версий Windows. Программное обеспечение, написанное специально для 64-битной операционной системы, называется «Native 64-bit Software».

Источник

Что такое EXE-файл?

в Компьютеры 28.11.2018 1 Комментарий 731 Просмотров

EXE файл – это специальный файл, который заканчивается расширением «.exe», иначе его называют исполняемый файл. И когда вы делаете клик на таком exe файле, встроенная процедура автоматически начинает выполнять код, который может привести в движение несколько функций. Файлы exe применяются для установки и запуска ПО и различных подпрограмм. EXE файл – это всего лишь один из нескольких типов форматов файлов, которые могут работать с различными ОС. Текстовые файлы, являются файлами, которые не могут генерировать код, и просто отображают текст, заканчиваются на txt. Другим распространенным типом файлов является сжатый или зашифрованный файл, который использует в конце расширение zip.
Файл exe является из самых полезных типов файлов именно потому, что он запускает программы; но он также делает его потенциально опасным. Он может использоваться как система доставки для вирусов или других вредоносных процедур. Внешне зараженный файл exe может показаться довольно правильным. Нажатие на него может показаться запущенным не более, чем анимированный мультфильм или простая аркадная игра. Но невидимый код может работать в фоновом режиме, заражая компьютер или компрометируя его.

Что значит расширение exe

Если вы нажмёте на такой вредоносный файл exe, в течение следующих может быть нескольких часов или даже дней, компьютер может начать нестабильно работать. Часто пользователь не связывает проблему с причиной и приписывает её другим факторам, таким как необходимость дефрагментации или замены диска. Личные данные или введение паролей когда вы нажимаете клавиш для его ввода, могут быть переданы на неизвестный веб-сайт и пользователь даже не будет знать об этом, или ПК может удалить свои собственные файлы и вообще привести к сбою ОС. Любой из этих сценариев и многие другое можно привести в движение, просто щёлкнув файл «bad» exe.

Из-за потенциального вреда при загрузке любого файла exe, прежде чем нажимать на него, рекомендуется проверять его с помощью надёжного антивирусного сканера. С этой целью эксперты по безопасности рекомендуют устанавливать браузеры, чтобы веб-сайты не могли автоматически загружать программы. Это дает сёрферу возможность контролировать, какие программы передаются на его или её компьютер.

Файлы exe обычно не предназначены для редактирования, так как изменение размера файла exe сделает его неработоспособным. Поскольку exe файл чаще всего является программой, он регулярно защищается законами об авторском праве в соответствии с лицензионным соглашением, выпущенным его автором. В этом случае взлом файла exe является незаконным. Исключение составляет программное обеспечение общего пользования. Программное обеспечение общего пользования принадлежит общественности и может быть изменено любым пользователем.

Поскольку безопаснее находиться на стороне осторожности, лучшая защита является установка хорошей антивирусной программы. Эксперты рекомендуют чаще обновлять антивирусные программы и выполнять проверку ОС, а также удалять электронную почту из неизвестных источников. Если вы получите exe файл от кого-то, кому вы доверяете, сначала просканируйте его, прежде чем на него нажимать. Даже файлы, которые, как представляется, поступают из уважаемых источников, могут быть замаскированы третьими лицами, и официальный источник даже не будет знать об этом.

Источник

Структура exe файла windows

.EXE (сокр. англ. executable — исполнимый) — расширение исполняемых файлов, применяемое в операционных системах DOS, Windows, Symbian OS, OS/2 и в некоторых других, соответствующее ряду форматов. Кроме объектного кода может содержать различные метаданные (ресурсы, цифровая подпись [1] ).

Содержание

Структура файлов [ править | править код ]

Файл EXE, создаваемый компоновщиком, состоит из двух частей:

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

Стандартная часть заголовка имеет следующий формат [3] :

Далее следует таблица настройки адресов. Таблица состоит из элементов, число которых записано в байтах 06-07. Элемент таблицы настройки состоит из двух полей: 2-байтного смещения и 2-байтного сегмента, и указывает слова в загрузочном модуле, содержащее адрес, который должен быть настроен на место памяти, в которое загружается задача. Настройка производится следующим образом:

Структура программного сегмента [ править | править код ]

Что значит расширение exe

При обращении к нерезидентной команде или вызове программы операцией Exec, DOS определяет минимальный адрес, начиная с которого может быть загружена соответствующая программа. Эта область называется программным сегментом.

По смещению 0000 в программном сегменте DOS формирует префикс программного сегмента (PSP). Сама программа загружается по смещению 0100.

Программа завершается переходом по адресу 0000 в программном сегменте, выполнив INT 20, выполнив INT 21 с AH=0 или AH=4C, или обратившись к подпрограмме по адресу 0050 в программном сегмент с AH=0 или AH=4C.

Примечание: при завершении иначе, чем операцией 4C, программа должна предварительно заслать в CS адрес начала своего программного сегмента.

Все четыре способа возвращают управление в резидентную часть COMMAND.COM (при этом операция 4C передает код завершения). Все четыре способа приводят к продолжению выполнения программы, обратившейся к операции Exec (4B). При этом вектора прерываний 22, 23 и 24 (завершение, Ctrl-Break, фатальная ошибка обмена) восстанавливаются из Префикса Программного сегмента возобновляемой задачи. Затем управление передается по адресу завершения. Если программа возвращается в COMMAND.COM, то управление передается в нерезидентную часть. Если это происходит во время выполнения командного файла, оно продолжается, иначе COMMAND выдает на терминал приглашение и ждет ввода следующей команды.

Когда загруженная программа получает управление, имеют место следующие условия:

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

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

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

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

Содержание

Краткая история [ править | править код ]

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

Технические детали [ править | править код ]

Что значит расширение exe

Сигнатура [ править | править код ]

Первые 2 байта PE-файла содержат сигнатуру 0x4D 0x5A — «MZ» (как наследник MZ-формата). Далее – двойное слово по смещению 0x3C содержит адрес PE-заголовка. Последний начинается с сигнатуры 0x50 0x45 — «PE».

Структура [ править | править код ]

Таблица импорта [ править | править код ]

Одна из известных секций — таблица адресов импорта (IAT — Import Address Table), которая используется в качестве таблицы поиска, когда приложение вызывает функцию из другого модуля. Это может быть сделано и в форме импорта по порядковому номеру функции (ordinal), и импорта по её имени. Поскольку скомпилированной программе неизвестно расположение библиотек, от которых она зависит, то требуется производить косвенный переход всякий раз, когда происходит вызов API-функции. Когда динамический компоновщик загружает модули и объединяет их, он записывает действительные адреса в область IAT так, чтобы они указали на ячейки памяти соответствующих библиотечных функций. Хотя это добавляет дополнительный переход внутри модуля, приводящий к потере производительности, это предоставляет ключевое преимущество: количество страниц памяти, которые должны быть скопированы загрузчиком при записи, минимизировано, что приводит к экономии памяти и дискового времени ввода-вывода. Если компилятору будет известно заранее, что вызов будет межмодульным (через атрибут dllimport), то он сможет произвести более оптимизированный код, который просто приводит к коду операции косвенного вызова.

Таблица экспорта [ править | править код ]

Таблица адресов экспорта (EAT — Export Address Table) нужна для того, чтобы один модуль (обычно это динамически загружаемая библиотека) мог указать другим модулям, какие функции они могут из него импортировать, и по каким адресам последние расположены.

Таблица перемещений [ править | править код ]

Файлы PE не содержат позиционно-независимого кода. Вместо этого они скомпилированы для предпочтительного базового адреса, и все адреса, генерируемые компилятором/компоновщиком, заранее фиксированы. Если PE-файл не может быть загружен по своему предпочтительному адресу (потому что он уже занят чем-то ещё), операционная система будет перебазировать его. Это включает в себя перевычисление каждого абсолютного адреса и изменение кода для того, чтобы использовать новые значения. Загрузчик делает это, сравнивая предпочтительный и фактический адреса загрузки, и вычисляя значение разности. Тогда для получения нового адреса ячейки памяти эта разность складывается с предпочтительным адресом. Базовые адреса перемещений хранятся в списке и при необходимости добавляются к существующей ячейке памяти. Полученный код является теперь отдельным по отношению к процессу и не является больше разделяемым, так что при таком способе теряются многие из преимуществ экономии памяти динамически загружаемых библиотек. Такой способ также значительно замедляет загрузку модуля. По этой причине следует избегать перебазирования везде, где это возможно; например, библиотеки, поставляемые Microsoft, имеют предварительно вычисленные неперекрывающиеся базовые адреса. В случае отсутствия необходимости перебазировании PE-файлы имеют преимущество очень эффективного кода, но при наличии перебазирования издержки в использовании памяти могут быть значительными. Это отличает формат PE от ELF, который использует полностью позиционно-независимый код и глобальную таблицу смещений, которая жертвует временем выполнения в пользу расходования памяти.

.NET, метаданные и PE-формат [ править | править код ]

Секция данных CLR содержит два важных сегмента: сегмент метаданных и сегмент кода промежуточного языка (IL):

Использование в других операционных системах [ править | править код ]

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

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

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

Что значит расширение exe

PingVinich

Технарь

Давайте проведём аналогию между квартирой и PE-файлом. У каждой квартиры есть свой этаж, своя дверь, прихожая, гостинная, кладовка, свои комнаты, также у каждой квартиры есть своя схема планировки. Вся информация о квартире и сама эта квартира хранится в PE-файле. Взглянем на структуру исполняемого файла, а потом разберём основные части.

Что значит расширение exe

Как мы можем увидить, исполняемый файл состоит из двух основных частей:

Если вернуться к аналогии с квартирой, то заголовок – это информация о квартире. Планировка квартиры, количество комнат, этаж, где кладовка, где гостинная, где дверь, где прихожая, кто и когда сделал квартиру, квартира ли это вообще и т.д.. А секции – это комнаты. В секциях хранится код, различные данные, строки, функции и т.д.. Также как и в комнатах есть свои жильцы.

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

Что значит расширение exe

Давайте изучим по-порядку какие есть заголовки и что в них указано. Заголовками PE-файла являются следующие заголовки в указанном порядке:

Начнём наше приключение с изучения DOS заголовка.

Как я и сказал, заголовки хранят необходимую информацию для загрузки PE-файла. Поэтому данный заголовок является обязательным для загрузки PE-файла, хоть и не несёт в себе большой смысловой информации.

Заголовок состоит из полей, как список состоит из пунктов свойств. Каждый пункт хранит в себе какое-либо значение. Естественно, в файле всё это представленно в байтовом представлении. Не все поля нужны для загрузки (запуска) PE-файла. Поэтому комментировать и рассматривать мы будем только поля, необходимые для загрузки файла в память.

Вот его структура на языке C/C++.

Нас интересуют только первое ( e_magic ) и последнее поле ( e_lfanew ) этого заголовка. Они является самыми важными и влияют непосредственно на загрузку PE-файла.

    e_magic
    Двухбайтовое поле e_magic хранит в себе специальную сигнатуру. Эта сигнатура нужна, чтобы указать что это действительно исполняемый файл. Вот она – «MZ». Каждый PE-файл обязан начинаться с неё. Если это не так, файл просто не запустится.

Что значит расширение exe

Я выделил самым большим красный прямоугольником область DOS-заголовка. Здесь мы можем увидеть байты в шестнадцатеричном представлении.

Что значит расширение exe

Дальше у нас по списку PE-заголовок, который на самом деле, состоит из трёх частей: сигнатуры, файлового подзаголовка и дополнительного подзаголовка.

Вот его структура на языке C/C++:

Что значит расширение exe

Что значит расширение exe

Теперь давайте разберём каждое поле по-порядку.

    Signature
    Это четырёхбайтовое поле содержит сигнатуру, а именно значение 50 45 00 00 (или «PEx00x00»). Эта сигнатура указывает на то, что перед нами действительно PE-файл (Ага, ещё одна проверка).

FileHeader
Это обязательный подзаголовок PE-заголовка. Он хранит в себе базовые характеристики исполняемого файла.

На C/C++ структура данного заголовка выглядит так:

Разберём и этот подзаголовок по порядку.

NumberOfSections
Двухбайтовоеполе NumberOfSections содержит в себе число секций (комнат) в PE-файле.

SizeOfOptionalHeader
Двухбайтовое поле содержащее размер дополнительного заголовка, который идёт сразу за файловым заголовком.

Characteristics
Даное двухбайтовое поле содержит характеристики PE-файла. Например, является ли это exe-файлом, или dll. Также, тут описано, является ли данная программа x64-битной или x86-битной.

Что значит расширение exe

Перейдём к следующему подзаголовку PE-заголовка.

OptionalHeader
Это ещё один обязательный подзаголовок PE-файла. В нём хранится необходимая информация для загрузки PE-файла. Он имеет всего два формата PE32+ (для 64-битных программ) и PE32 (для 32-битных).

Структура дополнительного заголовка представлена следующий C/C++ кодом.

И на этот раз рассмотрим только основные поля, необходимые для загрузки PE-файла в память.

1. IMAGE_NT_OPTIONAL_HDR32_MAGIC ( 0x10b ) – означает, что это x32 (x86) исполняемый образ.
2. IMAGE_NT_OPTIONAL_HDR64_MAGIC ( 0x20b ) – означает, что это x64 исполняемый образ.
3. IMAGE_ROM_OPTIONAL_HDR_MAGIC ( 0x107 ) – означает, что это ROM образ.

AddressOfEntryPoint
Четырёхбайтовое поле AddressOfEntryPoint содержит адрес начала кода, т.е. указатель на дверь в команту кода.
Техника инфекции, которую мы изучим в будующем, основана на изменении этого значения.

ImageBase
Это четырёхбайтовое поле содержит предпочтительный адрес загрузки программы в память. В следующей статье мы разберём для чего он нужен.

SectionAlignment
Это четырёхбайтовое поле содержит относительный виртуальный адрес (относительно ImageBase, т. е. сколько байтов нужно отсчитать с адреса загрузки программы, чтобы попасть к началу секций) начала секций в виртуальной памяти.

FileAlignment
Это четырёхбайтовое поле содержит смещение относительной файла (сколько байтов нужно отсчитать с начала файла) начала секций в исполняемом файле.

MajorSubsystemVersion и MinorSubsytemVersion
В этих двухбайтовых полях содержится необходимая версия Windows.

SizeOfImage
Это четырёхбайтовое поле содержит размер (в байтах) загруженного исполняемого файла в памяти.

SizeOfHeaders
Четырёхбайтовое поле SizeOfHeaders содержит размер (в байтах) заголовков файла в памяти.

NumberOfRvaAndSizes
Данное четырёхбайтовое поле содержит число каталогов в массиве каталогов. По умолчанию равна 16.

DataDirectory
Это поле – на самом деле массив, которая содержит информацию о каталогах. Их число определено в поле NumberOfRvaAndSizes (по умолчанию (и почти всегда) 16) дополнительного заголовка. Каждый элемент информации о каталоге хранит относительный виртуальный адрес (относительно ImageBase, т. е. сколько байтов нужно отсчитать с адреса загрузки программы, чтобы попасть к началу секций) и размер какого-либо каталога (которые являются и секциями), которая определяется по её позиции в массиве.

Вот структура каталога на языке C/C++:

А вот идентификаторы (порядковый номер в DataDirectory):

Давайте подробно рассмотрим основные поля.

    Name
    Это поле, размером в 8 байт, содержит имя секции, в ASCII кодировке.

VirtualSize
Это четырёхбайтовое поле содержит размер (в байтах) секции (той самой комнаты) в виртуальной памяти.

VirtualAddress
А это четырёхбайтовое поле уже содержит относительный адрес секции в виртуальной памяти.

SizeOfRawData
Данное четырёхбайтовое поле содержит размер секции в файле.

PointerToRawData
А указатель на эти самые данные, содержаться в этом четырёхбайтовом поле.

Characteristics
Это четырёхбайтовое поле содержит атрибуты секции. Например, права чтения, записи и исполнения (Read Write Execute) (RWE).

Что значит расширение exe

По сути, в таблице секций просто зафиксирована информация о секциях.

Вот и всё, мы закончили изучать заголовки. Теперь мы приступаем к изучению секций. По сути, секции являются простыми последовательными блоками данных. Они следуют друг за другом и у них нет определенного формата, так как их характеристики описаны в таблице секций. А вот формат данных, в этих секциях, зависят от типа информации, которая в них хранится. Секции, как я уже сказал, можно представить в виде комнат. Также, их можно представить и как в виде коробок с информацией. Размер каждой секции зафиксирован в таблице секций, поэтому секции должны быть определённого размера, а для этого их дополняют NULL-байтами (00). Вот и всё, что касается секций.

Также, небольшая шпаргалка, для того, чтобы понимать какое назначение носит имя определенного заголовка секции в таблице:

Также, секциями являются и различные каталоги.

На этом всё. Спасибо за внимание. Если у Вас есть какие-либо вопросы или вы обнаружите неточности в статье, прошу отписаться в комментариях. Буду рад ответить на все ваши вопросы.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *