Меню
Бесплатно
Главная  /  Установка и настройка  /  Исполняемые программы. Структура программных компонентов

Исполняемые программы. Структура программных компонентов

Многие пользователи компьютерных систем наверняка в той или иной степени сталкивались с понятием исполняемого файла программы. Исполняемые файлы не всегда, но довольно часто имеют расширение EXE, которое является общепринятым для операционных систем семейства Windows. Чтобы немного прояснить вопрос, связанный с расширениями, мы рассмотрим общую информацию об этих объектах, а также рассмотрим некоторые типы основных расширений.

Чем исполняемые файлы отличаются от других объектов

Прежде чем утверждать, что исполняемый файл программы может иметь расширение только одного определенного типа, необходимо разобраться в том, как отличить такой объект от других. К основным отличиям исполняемых файлов от других информационных данных можно отнести следующие факторы: само расширение, которое указывает на содержание в файле либо машинного, либо байт-кода виртуальной машины, сигнатура, атрибуты в файловой системе. Однако даже если пользователь знает, что исполняемые файлы имеют расширение имени типа EXE, то обычными средствами посмотреть содержимое не получится, поскольку такие объекты обладают компилированным содержимым, которые отображается при просмотре в виде бессмысленного набора символов. В общем случае пользователю придется использовать средства Disassembler, или что-то подобное, что позволяет выполнить декомпиляцию. Но речь пойдет не об этом.

Исполняемые файлы: структура

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

Принцип работы

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

Исполняемые файлы программ: какое расширение они имеют?

Теперь перейдем к рассмотрению вопроса, связанного с расширениями. Разумеется, совершенно все типы рассмотреть не получится, это займет очень много времени. Мы отметим только наиболее распространенные и популярные варианты. Итак, расширение задается в зависимости от типа содержимого. Так, например, в операционной системе типа Windows наиболее распространенные исполняемые файлы обладают расширением EXE. Это относится ко всем программам, которые рассчитаны на работу в среде данных операционных систем. Такие объекты содержат в себе машинные коды. Файлы BIN являются очень похожими. Пакетные файлы типа CMD, BAT и COM являются еще одним типом исполняемых файлов. Первый тип в данном случае является пакетным файлом Windows. Файлы второго и третьего типа относятся к операционным системам семейства DOS. Многие из вас вероятно уже встречали файлы типа MSI иMSU. Это может быть установщик обновлений системы, или родной инсталлятор операционной системы Windows. Отдельную категорию файлов составляют макросы и скрипты. Это файлы с расширениями JSE, JS, SCR,VBE, VBS, VB. Часто также встречаются файлы JAD иJAR, которые предназначены для установки приложений в мобильные устройства или использование в среде JAVA. В своем содержании такие объекты имеют уже не машинные коды, а коды виртуальных машин.

Какое расширение имеют исполняемые файлы в различных ОС?

Если внимательно посмотреть, то можно заметить, что в некоторых ОС встречаются довольно специфичные компоненты. Так, например, в операционной системе Windows имеется специальная категория исполняемых файлов. Вообще, в любой операционной системе можно найти как стандартные, так и специальные компоненты. Однако имеются и некоторые общие форматы, например, HTA, исполняемый документ HTML. Они работают практически везде вне зависимости от используемого типа операционной системы. Что же касается других типов систем, то, например, в «маках» исполняемые файлы обладают расширением APP для программ и PKG для дистрибутивов. В операционных системах семейства Linux дело обстоит немного иначе. Проблема заключается в том, что в таких операционных системах понятие расширения вообще отсутствует. Можно распознать исполняемый файл по атрибутам, например, системный, скрытый, только для чтения и т.д. В результате проблема изменения расширения для запуска или прочтения искомого файла пропадает. Впрочем, в любой операционной системе даже на мобильных устройствах можно найти огромное число объектов данного типа. Не нужно далеко ходить. В той же операционной системе семейства Android исполняемый файл установщика имеет расширение APK. В яблочных устройствах исполняемые файлы имеют расширение IPA.

Заключение

Подведем итог нашего небольшого обзора о расширении исполняемых файлов. Упор в данном случае делался в основном на объекты, которые присутствуют в операционных системах семейства Windows. Остальные операционные системы были затронуты только вскользь для общего развития. Как уже стало ясно, разнообразие исполняемых файлов очень велико. Невозможно привести какую-то сводную таблицу с указанием совершенно всех типов расширений. Поэтому в данной статье мы ограничились только наиболее распространенными форматами

память загрузчиком операционной системы и затем исполнен. В операционной системе Windows исполняемые файлы, как правило, имеют расширения ".exe" и ".dll". Расширение ".exe" имеют программы, которые могут быть непосредственно запущены пользователем. Расширение ".dll" имеют так называемые динамически связываемые библиотеки ( dynamic link libraries). Эти библиотеки экспортируют функции, используемые другими программами.

Для того чтобы загрузчик операционной системы мог правильно загрузить исполняемый файл в память , содержимое этого файла должно соответствовать принятому в данной операционной системе формату исполняемых файлов. В разных операционных системах в разное время существовало и до сих пор существует множество различных форматов. В этой главе мы рассмотрим формат Portable Executable (PE). Формат PE - это основной формат для хранения исполняемых файлов в операционной системе Windows . Сборки. NET тоже хранятся в этом формате.

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

А теперь - немного истории. Формат PE был создан разработчиками Windows NT. До этого в операционной системе Windows использовались форматы New Executable (NE) и Linear Executable (LE) для представления исполняемых файлов, а для хранения объектных файлов использовался Object Module Format (OMF). Формат NE предназначался для 16-разрядных приложений Windows , а формат LE, изначально разработанный для OS/2 , был уже 32-разрядным. Возникает вопрос: почему разработчики Windows NT решили отказаться от существующих форматов? Ответ становится очевидным, если обратить внимание на то, что большая часть команды, работавшей над созданием Windows NT, ранее работала в Digital Equipment Corporation. Они занимались в DEC разработкой инструментария для операционной системы VAX / VMS , и у них уже были навыки и готовый код для работы с исполняемыми файлами, представленными в формате Common Object File Format ( COFF ). Соответственно, формат COFF в слегка модифицированном виде был перенесен в Windows NT и получил название PE.

В ". NET Framework Glossary " сказано, что PE - это реализация Microsoft формата COFF . В то же время в утверждается, что PE - это формат исполняемых файлов, а COFF - это формат объектных файлов . Вообще, мы можем наблюдать путаницу в документации Microsoft относительно названия формата. В некоторых местах они называют его COFF , а в некоторых - PE. Правда, можно заметить, что в новых текстах название COFF используется все меньше и меньше. Более того, формат PE постоянно эволюционирует. Например, несколько лет назад в Microsoft отказались от хранения отладочной информации внутри исполняемого файла, и поэтому теперь многие поля в структурах формата COFF просто не используются. Кроме того, формат COFF - 32-разрядный, а последняя редакция формата PE (она называется PE32+) может использоваться на 64-разрядных аппаратных платформах. Поэтому, видимо, дело идет к тому, что название COFF вообще перестанут использовать.

Интересно отметить, что исполняемые файлы в устаревших форматах NE и LE до сих пор поддерживаются Windows . Исполняемые файлы в формате NE можно запускать под управлением NTVDM (NT Virtual DOS Machine), а формат LE используется для виртуальных драйверов устройств (

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

В устаревших ОС вроде DOS или отличных от Windows такие файлы могут иметь совершенно другое расширение, хотя принцип старта остается абсолютно неизменным.

Исполнить исполняемый файл: что это значит?

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

Суть в том, что при запуске основного модуля программного пакета, который и состоит в старте EXE-файла, некоторые приложения требуют «подгрузки» дополнительных модулей, которые как раз и являются файлами настроек конфигурации (config) или тех же динамических библиотек, содержащих данные о программе.

Кстати, иногда сами динамические библиотеки способны исполнять роль программ. Так, например, старт любого VST-инструмента в современной студии (DAW) происходит именно по этому принципу. Программа как таковая в виде версии Standalone может отсутствовать, но плагин в виде ее аналога с расширением DLL распознается любой программой.

Программы-исполняемые файлы: типы

Но и это еще не все. Расширение исполняемых файлов сегодня определить не так и просто, не говоря уже о файлах формата EXE или COM. Отдельно стоит отметить не только упомянутые выше стандарты, но и архивные данные.

По сути, архивы формата SFX (Self-Extracting) представляют собой самостоятельно извлекаемые данные на основе срабатывания алгоритма распаковки. такого типа проще простого. Достаточно лишь сделать двойной клик, и операция при выборе места извлечения будет произведена автоматически. На мобильных устройствах используются форматы вроде JAR, JAD APK и т. д., относящиеся к разряду установщиков.

Можно ли открыть исполняемые файлы?

Многих пользователей интересует вопрос редактирования запускаемых файлов. Сразу же стоит всех огорчить. Дело в том, что те же «экзешники» представляют собой компилированные программы, исходный код которых обычно просмотреть невозможно. Можно, конечно, применить утилиты вроде Disassembler, но и они при условии написания приложения изначально на языке C++ этого результата могут и не дать.

Как произвести простейшее редактирование?

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

Можно ли сделать любой файл исполняемым?

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

Достаточно внести процесс в список и указать сопутствующий объект, который будет загружаться немедленно (например, открытие документа Office). Сделать файл исполняемым - это еще далеко не самое главное.

Резюме

Таким образом, завершая тему, стоит отметить, что файлы или объекты, отвечающие за старт какого-нибудь приложения, в стандартном варианте открыть можно только двойным кликом. А вот редактировать их не представляется возможным. Правда, если программы имеют статус свободно распространяемых по лицензии GNU, вносить изменения в программный код приложений можно очень даже запросто.

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

И вызов (запуск) исполняемого файла в данном случае уже может не зависеть от самого пользователя, поскольку вирус внедрился в систему. Остается только уповать на универсальные программы в виде портативных версий или же на утилиты модификаций Rescue Disk с загрузкой и проверкой системы еще до начала старта Windows.

Исполняемый файл как таковой, что самое интересное, в загрузчике отсутствует. Зато есть конфигуратор BIN, который и отвечает за старт системы. Кроме того, в устаревших версиях Windows можно встретить еще и папки вроде i386, в которых располагаются драйверы и некоторые другие сопутствующие утилиты. Но в новых версиях системы таких объектов нет.

Любой юзер компьютерной системы, так или иначе, сталкивался с понятием исполняемого файла программы. И не всегда (хотя и очень часто) исполняемые файлы имеют расширение EXE, общепринятое для Windows-систем. Чтобы разобраться в вопросе расширений, рассмотрим общую информацию о таких объектах и некоторые их основные типы.

Отличия исполняемых файлов от других объектов

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

На самом деле, среди основных отличий исполняемых файлов от других информационных данных выделяют несколько основных:

  • само расширение, указывающее на содержание в файле либо машинного, либо байт-кода виртуальной машины;
  • сигнатура (содержимое в виде уникальных байт-последовательностей);
  • атрибуты в файловой системе (execute и др.).

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

Структура исполняемых файлов

Что касается построения файлов такого типа, как правило, они содержат заголовки (предполагаемое исполнение инструкций, параметры, форматы кода), сами инструкции (машинные, исходные или байт-коды).

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

Принцип работы

Собственно, несмотря на то, что исполняемые файлы имеют расширение разного типа, работают они похожим образом.

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

Какое расширение имеют исполняемые файлы программ?

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

Итак, в зависимости от типа содержимого и задается расширение. Так, например, в Windows самые распространенные исполняемые файлы имеют расширение EXE. Это относится ко всем программам, рассчитанным на работу в среде этих операционных систем. Такие объекты содержат Очень похожими (тоже с содержанием таких кодов) являются файлы BIN.

Еще одним типом исполняемых файлов являются пакетные объекты типа CMD, BAT и COM, причем первый тип является Windows, а второй и третий относятся к системам DOS.

Вероятно, многие встречали и файлы MSI и MSU. Это может быть либо «родной» инсталлятор Windows, либо установщик апдейтов системы.

Кроме всего прочего, отдельную категорию составляют скрипты и макросы (VB, VBS, VBE, SCR, JS, JSE). Еще часто встречаются файлы вроде JAR и JAD, предназначенные для установки приложений на мобильные гаджеты или использование в среде JAVA. Все такие объекты в содержании имеют уже не машинные коды, а коды виртуальных машин.

Какое расширение имеют исполняемые файлы в разных системах?

Если посмотреть внимательно, можно заметить, что в некоторых системах встречаются и достаточно специфичные компоненты. Например, в Windows имеется специальная категория исполняемых компонентов (PS1 - исполняемый файл PowerShell, PIF - информация о приложениях, WSF - файл сценария и т. д.).

Вообще, в любой системе можно найти и стандартные, и специальные компоненты. Однако есть и некоторые общие форматы (например, HTA - исполняемый документ HTML), которые работают везде и независимо от применяемой «операционки».

Что же касается других систем, например, в «маках» исполняемые файлы имеют расширение APP, если это программы, и PKG, если это дистрибутив.

А вот с Linux-системами дело обстоит несколько иначе. Дело в том, что в них понятие расширения отсутствует как таковое. Распознать исполняемый файл можно только по атрибутам (скрытый, только для чтения, системный и т. д.). Таким образом, отпадает даже проблема изменения расширений, чтобы запустить или прочитать искомый файл.

Впрочем, в любой системе или даже в мобильных гаджетах можно найти огромное количество объектов такого типа. Далеко ходить не нужно. В той же ОС Android исполняемый файл установщика имеет расширение APK, а в «яблочных» девайсах это файлы IPA.

Заключение

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

EXE - это расширение для программ в ОС DOS и Windows. Формат Exe относится к группе исполняемых файлов, которые содержат все данные для установки приложения. Чтобы компактно распространить установочный файл используются алгоритмы сжатия.

Содержимое файла

Объект с расширением EXE встречается в ОС Windows. Программа exe содержит сценарии и скомпилированный программный код, запускающий установку приложений. Содержимое объекта EXE включает:

  • Программные ресурсы - графика и другие медиа-элементы, а также сжатые пакеты (.package) классов программного кода;
  • Формы объектов (битмапы, листы, иконки приложений);
  • Информация для загрузчика файла;
  • Модуль запуска инсталляции.

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

После распаковки исполняемого файла в операционной системе начинается инициализация всех программных классов и установка приложения.

Программы для открытия EXE

В Windows Exe объект открыть можно с помощью стандартного установщика или утилиты 7Zip . Для запуска файла достаточно дважды кликнуть по нему мышкой или запустить объект через меню архиватора. Для запуска в MacOS следует установить эмулятор ОС Windows и в нем открыть файл Exe.

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

Чтобы посмотреть содержимое файла EXE без его запуска, следует воспользоваться инструментами для разработчика, а именно программным пакетом Visual Studio . С его помощью можно редактировать программные ресурсы, изменять интерфейс и функции программного модуля. Внесение изменений возможно только для приложений с отрытым исходным кодом (в которых не используется шифрование).