Что такое исполняемый файл
Исполняемый файл ( executable file ) - это файл , который может быть загружен в память загрузчиком операционной системы и затем исполнен. В операционной системе 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 . В то же время в [5] утверждается, что 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 используется для виртуальных драйверов устройств ( VxD ).
Почему в названии формата PE присутствует слово " portable " ("переносимый")? Дело в том, что Windows NT была реализована не только для платформы Intel x86 , но и для платформ MIPS R4000, DEC Alpha и PowerPC . И во всех реализациях для хранения исполняемых файлов использовался формат PE. При этом речь не шла о достижении двоичной совместимости между этими платформами, то есть exe- файл , предназначенный для выполнения на платформе Intel x86 , нельзя было запустить на PowerPC . Важно понимать, что переносимость формата еще не означает переносимость исполняемых файлов, записанных в этом формате. Формат PE переносим в том смысле, что он слабо зависит от типа процессора и поэтому подходит для разных платформ (в том числе и для платформы . NET ).
Далее в этой главе мы не будем затрагивать 64-разрядный вариант формата PE, потому что в настоящее время сборки . NET хранятся в прежнем 32-разрядном формате. Однако отметим, что 64-разрядный PE очень слабо отличается от 32-разрядного. Основное отличие касается разрядности полей структур PE-файла.
Исполни́мый (исполня́емый) мо́дуль (также исполнимый файл, англ. executable file ) — это разновидность файла, содержимое которого является готовой к непосредственному исполнению компьютерной программой.
Чаще всего он содержит двоичное представление машинных инструкций для определённого процессора. (По этой причине на программистском сленге в отношении него используют слово бинарник — кальку с английского binary, но может содержать и инструкции на интерпретируемом языке программирования, для исполнения которых требуется интерпретатор. В отношении последних часто используется термин скрипт.)
Исполнением бинарных файлов занимаются аппаратно- и программно-реализованные машины. К первым относится центральные процессоры, ко вторым — виртуальные машины, например, виртуальная машина Java. Формат бинарного файла определяется архитектурой исполняющей его машины. (Обзор форматов содержится в статье об объектных модулях.) Известны машины, реализованные как аппаратно, так и программно, например, и виртуальная машина VMWare.
Статус исполнимости файла чаще всего определяется принятыми соглашениями. Так, в одних операционных системах исполнимые файлы распознаются благодаря соглашению об именовании файлов (например, путем указания в имени расширения файла — «.exe» или «.bin»), тогда как в других исполнимые файлы обладают специфичными метаданными (например, битом разрешения «execute» в
В современных компьютерных архитектурах исполнимые файлы содержат большие объемы данных, не являющихся компьютерной программой: описание программного окружения, в котором программа может быть выполнена, данные для отладки программы, используемые константы, данные, которые могут потребоваться операционной системе для запуска процесса (например, рекомендуемый размер кучи), и даже описания структур окон графической подсистемы, используемых программой.
Зачастую исполнимые файлы содержат вызовы библиотечных функций, например, вызовы функций операционной системы. Таким образом, наряду с процессорозависимостью (машинозависимым является любой исполнимый файл) исполнимым файлам может быть свойственна зависимость от операционной системы.
См. также
Wikimedia Foundation . 2010 .
Полезное
Смотреть что такое "Исполняемый файл" в других словарях:
файл — поименованная совокупность байтов, записанная на жёстком или гибком магнитном диске, в которой хранится отдельный элемент файловой системы, напр. документ Word или рисунок. Вся информация, записанная на магнитный диск, представлена блоками байтов … Энциклопедия техники
SafeDisk — SafeDisc это система защиты от копирования для Windows приложений и игр, разработанная Macrovision Corporation. Содержание 1 Цели 2 Уязвимости 3 История версий 3.1 SafeDisc (V1) … Википедия
Portable Executable — Переносимый исполняемый файл Расширение .exe, .dll, .ocx, .sys, .scr, .drv, .cpl Сигнатура MZ (опционально), PE Разработан Microsoft Тип формата двоичный, исполняемый, объектный … Википедия
Обычно вы видите EXE-файл при установке нового программного обеспечения или запуске программы на вашем ПК, где используется расширение EXE. Если вы создаете собственное программное обеспечение, вы даже можете создать свой собственный исполняемый файл для запуска, установки или распространения. Если вам интересно узнать больше об исполняемых файлах и о том, как создать исполняемый файл, вот что вам нужно сделать.
Риски исполняемых файлов (EXE)
Когда вы запускаете исполняемый файл, вы даете ему разрешение на выполнение содержащихся в нем инструкций. Так работает любое программное обеспечение, от простых сценариев из нескольких строк до сложного программного обеспечения с миллионами строк кода.
Прежде чем запускать или создавать исполняемый файл, вы должны знать о потенциальных рисках. Исполняемые файлы могут содержать в исходном коде инструкции, которые могут повредить ваш компьютер.
Перед запуском любого исполняемого файла, особенно если он запрашивает административные разрешения в Контроль учетных записей пользователей всплывающее окно, вы должны просканировать файл на наличие вредоносных программ с помощью Windows Security или вашего собственного стороннего антивирусного программного обеспечения, такого как Malwarebytes. Вам также следует устанавливать или запускать программное обеспечение только из источников, которым вы абсолютно доверяете.
Если вы создаете собственное программное обеспечение для запуска, вы должны убедиться, что код не предназначен для доступа к каким-либо важным файлам. Хотя Windows обычно предотвращает несанкционированный доступ к системным файлам с помощью UAC, дважды проверьте свой код перед запуском, чтобы убедиться, что программное обеспечение не может нанести вред вашему ПК.
Открытие исполняемых файлов (EXE) в Windows
Если вы хотите открыть исполняемый файл в Windows, вы можете сделать это несколькими способами. Windows автоматически распознает формат EXE-файла как исполняемый файл, поэтому обычно вы можете открыть его со своего рабочего стола, из проводника Windows, с помощью меню «Пуск» Windows (для установленного программного обеспечения) или с помощью командного окна «Выполнить».
- Чтобы открыть EXE-файлы на рабочем столе или в проводнике Windows, дважды щелкните файл. Это проинструктирует Windows открыть его.
- Список установленного программного обеспечения в меню «Пуск» Windows представляет собой ярлыки EXE-файлов для этого программного обеспечения (например, Chrome.exe для Google Chrome). Нажмите значок меню «Пуск» (или нажмите клавишу Windows на клавиатуре), затем нажмите одну из записей, чтобы запустить программное обеспечение.
- Чтобы использовать командное окно «Выполнить» для запуска EXE-файла, нажмите клавиши Windows + R на клавиатуре. Либо щелкните правой кнопкой мыши значок меню «Пуск» и выберите «Выполнить».
- В поле команды «Выполнить» найдите исполняемый файл, нажав кнопку «Обзор», или введите расположение файла напрямую. Если вы хотите запустить EXE-файл, нажмите ОК.
- Если EXE-файл запрашивает административный доступ, вам необходимо разрешить его запуск во всплывающем окне UAC. Нажмите Да, чтобы разрешить это.
Как создать исполняемый файл в Windows
Если вы хотите создать свои собственные исполняемые файлы в Windows, вы можете, но это не так просто, как переименовать файл и добавить .exe в его конец.
Вам нужно будет закодировать программное обеспечение, которое вы хотите запустить, на выбранном вами языке программирования, а затем скомпилировать его как файл, который можно будет выполнить. Однако большинство пользователей захотят создать более простые исполняемые файлы, такие как файлы установщика для установки программного обеспечения.
EXE-файл, созданный с помощью 7-Zip, на самом деле является файлом архива SFX. Этот архивный файл в формате EXE автоматически извлекает все включенные файлы на ваш компьютер, что делает его идеальным для простого развертывания программного обеспечения.
Если вы хотите поделиться файлами с несколькими пользователями, не беспокоясь о том, что у них установлено правильное программное обеспечение, создание такого файла будет хорошим вариантом.
- Чтобы создать EXE-файл с помощью 7-ZIP, поместите файлы в папку в проводнике Windows. Щелкните папку правой кнопкой мыши, затем нажмите 7Zip> Добавить в архив.
- В поле «Параметры» установите флажок «Включить архив SFX». Вы также захотите установить формат архива на 7z, метод сжатия на LZMA2 и уровень сжатия на нормальный. Нажмите ОК, чтобы создать файл.
Хотя это не настоящий EXE-файл, он выглядит и действует как один, что упрощает создание исполняемого файла, который может распространять программное обеспечение или файлы, созданные вами вместе с другими.
В противном случае, если вы хотите создать «настоящий» исполняемый файл, вам потребуется научиться программировать.
Запуск исполняемых файлов на Mac или Linux
То, как исполняемые файлы работают в Windows, полностью отличается от того, как программы работают на других платформах, таких как Linux или macOS. На этих платформах есть исполняемые файлы, но они не в формате EXE.
В Linux, например, любой файл может быть исполняемым, но для его запуска в качестве программы с использованием chmod требуется специальный флаг разрешений. Например, команда chmod + x file предоставит файлу с именем file разрешение на выполнение.
В macOS есть несколько иной метод запуска программного обеспечения. Если приложение не было установлено из App Store, и оно не от разработчика, которого он знает или которому доверяет, то приложение не будет запущено. Вам нужно будет разрешить это в меню «Системные настройки»> «Безопасность и конфиденциальность».
Однако как система на основе Unix macOS поддерживает команду chmod, что позволяет выполнять больше базовых сценариев с помощью приложения Terminal. Если вы, например, разработали сценарий Python, вы можете использовать команду chmod + x для его запуска.
Вы также можете использовать эмулятор WINE для Linux и macOS для запуска и установки EXE-файлов Windows на этих платформах. Разработанный для эмуляции определенных инструкций и библиотек Windows, использование WINE для запуска EXE-файла будет иметь разный уровень успеха.
Вы можете проверить, насколько популярное программное обеспечение будет работать с WINE, проверив База данных WineHQ.
Запуск исполняемых файлов в Windows 10
Ничто не мешает вам создавать собственное программное обеспечение, особенно если вы объедините его с пакетами установщика Windows, чтобы упростить установку. Однако для большинства пользователей Windows 10 файлы EXE нужно запускать, а не создавать. Пока вы запускаете программное обеспечение только из источников, которым доверяете, исполняемые файлы должны быть относительно безопасными.
Убедитесь, что вы регулярно выполняете сканирование на наличие вредоносных программ, и, если вы действительно не уверены в том, безопасно ли запускать исполняемый файл, вы можете использовать режим песочницы Windows 10 для запуска программного обеспечения в изолированном контейнере, чтобы проверить его. Если EXE опасен, он не повредит вашу основную установку Windows.
Большинство пользователей современных компьютерных систем, так или иначе, сталкиваются с запуском программ, которые в большинстве своем сводятся к тому, чтобы исполнить исполняемый файл. Грубо говоря, во всех программах для запуска основного приложения используется объект формата 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, в которых располагаются драйверы и некоторые другие сопутствующие утилиты. Но в новых версиях системы таких объектов нет.
Читайте также: