Что такое исполняемый файл windows

Файлы с расширением .exe являются одними из наиболее распространенных форматов исполняемых файлов в операционных системах Windows. Они содержат инструкции, которые операционная система может выполнять без дополнительной интерпретации.

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

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

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

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

История и происхождение

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

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

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

Функциональное назначение exe файла

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

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

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

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

Безопасность и угрозы при работе с файлами .exe

В данном разделе мы проследим понятие безопасности в контексте открытия и запуска файлов с расширением .exe. Угрозы могут крыться в самом файле и его содержимом, поэтому важно быть внимательным при работе с данным типом файлов.

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

Для предотвращения угроз следует использовать антивирусное программное обеспечение, проводить регулярные обновления и сканирования системы. Помните, что безопасность вашего компьютера в ваших руках.

При работе с файлами .exe рекомендуется избегать незнакомых и подозрительных источников загрузки. Тщательно проверяйте файлы на наличие вирусов перед их открытием и запуском.

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

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

Применение в повседневной жизни

Файлы с расширением exe встречаются нам в повседневной жизни чаще, чем мы думаем.

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

Благодаря exe-файлам мы можем скачивать и устанавливать различное программное обеспечение для компьютера, ноутбука или смартфона.

Мы запускаем exe-файлы, чтобы установить новые игры, приложения для работы или развлечения, а также обновить уже установленное программное обеспечение.

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

Благодаря exe-файлам мы имеем доступ ко множеству возможностей, которые делают нашу повседневную жизнь более удобной и интересной.

Основные характеристики и специфика

Файлы с расширением .exe содержат исполняемый код, который может выполняться прямо на компьютере пользователя. Этот код обычно связан с определенной программой или приложением и позволяет выполнить определенные действия.

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

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

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

Знание основных характеристик и специфики исполняемых файлов формата exe позволит пользователям обеспечить безопасность своих данных и улучшить работу с программным обеспечением на своем компьютере.

Защита от нежелательного использования exe-файлов

Расширение exe может быть опасным при открытии на компьютере, поэтому важно знать способы защиты от нежелательного использования таких файлов.

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

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

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

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

Время на прочтение7 мин

Количество просмотров12K

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

Исполняемые файлы Windows

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

Итак, любой файл, который будет получаться после компиляции кода на C#, это нативный исполняемый файл PE или PE+ (зависит от выбранной разрядности процессора). Грубо говоря, создание именно исполняемого файла — это просто способ заставить операционную систему воспринимать приложения для .NET как нативное приложение, написанное на таких языках как C++/ASM и т.д.

Сам по себе полученный исполняемый файл можно описать как набор служебных данных — заголовков и полезных данных — секций. Общую структуру файла очень здорово описал хабровчанин здесь. Труд был создан еще в далеком 2015 году, но не потерял своей актуальности. Для полноты картины, которую придется изучать под микроскопом, приведу общий и сокращенный вид того самого исполняемого файла:

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

  • sys — файлы драйверов

  • exe — файлы приложений

  • dll — расшариваемые библиотеки и драйвера

  • cpl — апплеты, которые могут использоваться для расширения функционала приложений в Windows. Для примера можно набрать WIN+R и вести control.cpl появится интерфейс для настройки системы.

Но как операционная система понимает, к какому типу файлов в итоге отнести, то что отдает пользователь или зовет приложение? Ответ очень прост, в структуре PE файла существует ряд полей, которые могут быть использованы для того чтобы определить что делать с файлом. Вот некоторые из них:

  • Characteristics его описание можно найти тут

  • Subsystem, его описание так же можно обнаружить по ссылке выше

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

Для примера сравним 2 файла: первый создан с помошью компилятора для C++, а второй — компилятором C#. (Естественно, для тестов будем брать компиляторы Visual Studio).

Так как файл PE — это бинарный формат, поэтому нам придется прибегнуть к использованию софта, умеющего его разбирать. Для скрина будем использовать Explorer Suite.

На картинке представлены 2 исполняемых файла, слева для создания использовался C#, справа C++. Рассматривать будем в первую очередь части, которые относятся именно к служебной информации, а именно заголовки. Как видно, параметры одинаковые. Что наталкивает на мысль — «А как же операционка понимает, что это .NET?». Ответ стоит искать в секции, которая во многих компиляторах используется для заточения кода, который и будет выполнять алгоритм приложения. Называется эта секция text. В обычном случае в этой секции находится только код и константы, которые он использует, однако если приложение написано для .NET, то в начале секции будет дополнительный набор служебных данных. Здесь их называют стримами и они содержат в структуре данные, которые могут описать всё, чем пользуется платформа:

  • #~ — стрим метаданных, тут все вперемешку: данные о типах, методах и т.д.

  • #Strings — строки, которые содержат информацию из пространств имен их членов и имен

  • #US — строки, которые были созданы программистом и используются в методах

  • #GUID — GUID данные, которые используются в приложении

  • #Blob — по сути, сырые данные, на которые могут ссылаться другие стримы

Вот такая матрешка. Все это парсится автоматически операционной системой и в момент, когда все разобрано, запускается платформа .NET. Процесс запуска тоже реализован весьма интересно. .NET это по сути виртуальная машина, которая понимает команды, отличные от того, что привык разбирать железный процессор современных устройств. Поэтому, чтобы выполнить код, в каждый .NET файл вставляется специальный трамплин, который запускает начальную функцию виртуальной мащины .NET. Если открыть исполняемые файлы в дизассемблерных приложениях и перевести курсор на первые команды, например в Hiew, то можно увидеть вот такие команды. Слева приложение написанное на C#, справа приложение созданное на C++:

Как видно, .NET даже понятнее, чем то, что писалось на C++ для чтения невооруженным глазом. Теперь о грустном. По причине такой структуры C# исполняемого файла, вернуть исходный читаемый код из уже созданного приложения очень просто. Для этого можно использовать любой декомпилятор, например dnSpy. Декомпилятор вернет все методы и их названия и даже можно будет с этим файлом работать из-под отладчика. Слева исходный код приложения, справа декомпилированная версия.

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

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

Способы защиты приложений

Для защиты алгоритма приложений можно разделить на несколько подходов, причем каждый из них можно развивать до совершенства. Различают несколько видов защиты:

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

  • запутывание кода путем добавления мусорных конструкций. Добавленные конструкции занимают процессорное время, но никак не влияют на конечный результат

  • запутывание алгоритма бесконечными безусловными и условными прыжками — серьезно запутывает задачу отладки

У этих подходов есть общий термин — обфускация.

  • шифрование частей исполняемого файла или самых важных с точки зрения алгоритма частей приложения

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

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

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

Mono.cecil

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

Библиотека выбрана не случайно, именно при помощи ее создаются приложения, которые декомпилируют уже собранные проекты. Почему это возможно? .NET приложение в результате компиляции представляет собой набор команд, которые написаны на специальном ассемблере — IL. Конструкции этого ассемблера напрямую могут быть связаны с конструкциями языков программирования .NET платформы. Поэтому достаточно просто получать исходный код приложений после компиляции. Так же, кстати, можно и переводить приложения автоматически на другие языки платформы.

Для использования библиотеки можно загрузить NuGet пакет, для этого достаточно прописать Mono.Cecil в поиске и установить пакет для использования в проекте.

Для преобразований будем использовать простую программу:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace TestApp2
{
    internal class Program
    {
        static int sumTwoNumbers(int a, int b)
        {
            return a + b;
        }

        static int multiple(int a, int b)
        {
            return a * b;
        }
        static void Main(string[] args)
        {
            Console.WriteLine(sumTwoNumbers(4, 3));
            Console.WriteLine(multiple(4, 3));
        }
    }
}

Приложение для выполнения обфускации может выглядеть так:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Mono.Cecil;

namespace TestApp
{
    internal class Program
    {
        private static Random random = new Random();

        public static string RandomString(int length)
        {
            const string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
            return new string(Enumerable.Repeat(chars, length)
                .Select(s => s[random.Next(s.Length)]).ToArray());
        }
        static void Main(string[] args)
        {
            AssemblyDefinition asm = AssemblyDefinition.ReadAssembly("TestApp2.exe");

            foreach (TypeDefinition t in asm.MainModule.Types)
            {
                if (t.Name == "Program")
                {
                    foreach (MethodDefinition m in t.Methods)
                    {
                        if (m.Name == "sumTwoNumbers" || m.Name == "multiple")
                        {
                            m.Name = RandomString(5);
                        }
                    }
                }
            }
            asm.Write("TestApp2_obf.exe");
        }
    }
}

Смотрим, что получилось через dnspy: слева исходный вид, справа пропатченная версия:

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

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


Статью написал Александр Колесников в преддверии старта курса «C# Developer. Professional».

Всех желающих приглашаем на бесплатное demo-занятие «Что полезного в новых версиях C#?». На этом открытом занятии мы разберем ключевые нововведения .Net 4.8 и познакомимся с полезными и часто используемыми новшествами .Net 4.7.2. Если интересно, записывайтесь.

Last Updated :
29 Jan, 2024

The Windows operating system has a crucial element known as the Exe file format, which is one of the most commonly used computer program file formats in the world today. Executable files are important in running software applications from the simplest text editor to sophisticated video games. In this article, we will discuss the EXE file format, how to run it, its features and drawbacks, its benefits in running various applications, and the possible malware associated.

An executable file, or EXE, is a file format commonly used in Microsoft Windows. Machine code instructions are meant to be executed by the computer’s CPU directly. These files run applications and execute the necessary tasks.

Table of Content

  • Uses of EXE Files
  • How to Run EXE Files
  • Benefits of the EXE File Format
  • Limitations of the EXE File Format
  • Applications That Use the EXE File Format
  • Malware Concerns Associated with EXE Files
  • Conclusion

Uses of EXE Files

EXE files serve a wide range of purposes, including:

  • Running Applications: EXE files are used frequently to run software applications. For example, if a person is starting his/her computer and he/she launches a web browser, word processor, or graphics editing program, the EXE file starts executing those applications.
  • System Processes: Additionally, most key system processes for Windows exist in EXE format. These systems regulate the operating system and provide system integrity.
  • Installation Wizards: In most scenarios, you have encountered the EXE files which initiate installation wizards and guide you during set-up process as you install a new program.
  • Command-Line Utilities: Certain EXE files are created as custom command-line utilities that are aimed at particular functions such as system maintenance, file alterations, or network diagnosis.

How to Run EXE Files

It is easy to run an EXE file. In Windows, you can double-click on the file, use the command line, scripting, or automation. Once loaded in memory by the operating system, the CPU executes the machine code instructions in the EXE file.

To Run .exe file download any software form internet then go to download file location then double click on the file or right click on file where you just «Open» or «Run as administrator»

exe-Program-Format

Benefits of the EXE File Format

The EXE file format offers several advantages:

  • Portability: EXE files are very portable and may be easily distributed and run on different Windows based machines without source code or any supporting items.
  • User-Friendly: This makes it easy for the GUI of many applications to rely on the EXE file thus facilitating access to a wide number of users.
  • Efficient Execution: A compiled code that runs directly on a Central Processing Unit (CPU) is what the EXE files are optimized for efficient execution.
  • Isolation: EXE files each run in a closed environment, minimizing conflicts with other software and protecting system stability.

Limitations of the EXE File Format

Despite its widespread use, the EXE file format has some limitations:

  • Platform Dependency: EXE files depend on their platform and most of the times they are designed for windows. Such software cannot be run natively on other operating systems like macOS or Linux.
  • Security Risks: Code in EXE format has full system privileges and is therefore the target of malware and security flaws.[ Such malicious EXE files may threaten the overall security of the system.
  • Lack of Source Code: Unlike in open-source software where the source code is made available, EXE does not allow the user to customize or troubleshoot.

Applications That Use the EXE File Format

A vast array of applications relies on the EXE file format. Some examples include:

  • Microsoft Office Suite: Microsoft word and Excel use EXE files to run them.
  • Web Browsers: For example, Google Chrome, Mozilla Firefox, and Microsoft Edge are run by means of EXE files.
  • Games: Most PC games operate through the EXE files and this makes the interactive gaming quite realistic.
  • System Utilities: Windows includes numerous system utilities and tools that rely on the EXE format.

Malware Concerns Associated with EXE Files

The EXE file format has also raised a concern due to the possibility of malware. In a typical scenario, malicious persons may come up with fake EXE files that can penetrate a system and cause damage. Users should take precautions during downloading and executing EXE files that originate from unverified websites. These risks can be reduced by using reputable antivirus software and updating the operating system and applications regularly.

Conclusion

The EXE file format is an essential part of windows operating systems enabling executable processes to be run on diverse applications such as programs. Despite their numerous advantages such as portability and efficiency, EXE files are not without their limitation, especially in the aspect of security. Comprehending what an EXE file is and staying alert when dealing with them is crucial in ensuring a safe and efficient computing setting.

An executable file (EXE file) is a computer file that contains an encoded sequence of instructions the system executes when the user clicks the file icon. Executable files commonly have an EXE file extension, but hundreds of other executable file formats exist.

Some executable file types can run on any compatible system without requiring the existence of another program. These files are considered to pose a high-security risk. They include EXE, BAT, COM, CMD, INF, IPA, OSX, PIF, RUN and WSH.

With Microsoft Windows, EXE is the file extension for an executable file. All EXE files are executable files, but not all executable files are EXE files.

Examples of executable files

Executable files are most commonly attached to operations that they’re designed to perform or to applications that they’re designed to install or launch.

For example, users can double-click a word processing icon on their computer screen. This triggers the executable file to launch the word processing application, such as Microsoft Word, on their computer.

Executables can also trigger certain computer operations. For example, a Linux user might key in the name of an executable file in the command line and then press Enter. This triggers the file to execute an operation, such as a data backup.

A user can often tell what an executable file is designed to do by looking at its syntax. For example, if the purpose of the executable is to install a new application, the executable will likely be named something like setup.exe. If the executable is designed to launch a particular application, such as Payroll, the executable’s file syntax might be something like payroll.exe.

How does an EXE file work?

EXE files are a Windows-specific executable file format. When a user or other event triggers an executable file, the computer runs the file’s code.

Executable files contain binary machine code compiled from source code. This low-level code instructs a computer’s processor (CPU) on how to run a program. The CPU interprets the machine code and tells the computer’s hardware what to do.

Executable files communicate directly with the computer, giving it a set of instructions to run. By contrast, with data files, another program must interpret or parse them before the machine can use them. Data files, or scripts, are written in plaintext.

Users can create executable files in a basic text editor or an integrated development environment (IDE). They need a separate compiler to turn the file into machine code if using a text editor. IDEs automate the compilation process. They also usually automatically find syntax errors and highlight different syntax elements.

An image showing the steps for source code to become an executable file.

Source code gets compiled into executable files. Dynamic link library files are added along the way, which link the executable to other programs.

How to run an EXE file

EXE files are triggered to run when they are opened. This process differs from system to system. The following are two other examples of how executables are triggered:

  • In a graphical user interface-based operating system (OS), clicking on the file icon or file name opens and runs the file. For example, users can double-click the file in Windows to run it.
  • In an OS with a command-line interface, users enter the file name in the CLI with the proper syntax and press Enter to run the file. For example, in Linux or Unix, the user would type a period and forward slash before the file name — ./filename — to execute the file called filename.

In some cases, an EXE file can be triggered passively. For example, Windows AutoPlay and AutoRun execute files automatically when a particular event happens. For example, when a USB device is connected, it automatically runs the USB’s firmware. Any executables in the Windows startup file will also run automatically when the system boots up.

The EXE file extension is common, but it is specific to executable files on Windows. Mac executable files use the APP extension. To run an EXE file on a Mac OS, users must run the Boot Camp utility or some other virtual machine or emulator that simulates a Windows OS.

Malware concerns with executable file

In some cases, EXE files can contain malware. Malware authors can disguise malicious executable files behind other file extensions.

The characters after the last period in a file name specify the file type. Windows does not always display file extensions, making it difficult to know the type of a given file.

For example, a file called trustedfile.pdf.exe might appear to the user as a PDF because, without the extension, the file name would display as filename.pdf. The user would click this, expecting to open a PDF. Instead, it triggers an executable containing malicious code, which installs malware such as viruses on the user’s computer, Android smartphone or iPhone.

Examining the source of an EXE file and whether it arrived in an unsolicited email can help users determine if it is safe. If there are doubts about the source, the user can run the file through an antimalware scanner or manually do static analysis on the source code by translating the machine code back to assembly code and analyzing it for malicious functions.

A chart showing six ways to safeguard EXE files.

Learn what steps to take to reduce the risk of an executable file triggering malware.

How to make EXE files safer

There are several ways, including the following, that organizations can make EXE files safer to use:

  • Train users to identify suspicious files. By training users to only click on links and attachments from known and trusted sources, organizations can lessen their risks of a virus or malware being delivered.
  • Implement a code signing certificate. Organizations can implement certificates from trusted certificate authorities to verify users’ identities and ensure executables come from legitimate sources.
  • Use antivirus tools and antimalware to scan emails for viruses. Network administrators should scan all executable file extensions for viruses and malware using antimalware. They can also use Microsoft Windows Security to check EXE files for viruses.
  • Set trust levels for programs. Network administrators can adopt a trust policy for all documents, code and macros by setting their designations to do not trust. This requires users to notify IT and have IT access permissions to these assets before they can be placed into trusted status with macros and scripts.
  • Block or quarantine email attachments with suspect extensions. Avoid high-risk extensions such as DOCM and compressed files with extensions like ZIP or RAR. Ensure the organization’s security software is configured to block or quarantine messages or attachments with these extensions.

Executable files that deliver malware are a significant cybersecurity threat. Learn how to create a strong cybersecurity plan to defend against executable malware and other cybersecurity threats.

This was last updated in April 2025


Continue Reading About What is an executable file (EXE file)?

  • How to avoid and prevent social engineering attacks
  • Common types of malware attacks and how to prevent them
  • How to prevent vendor email compromise attacks
  • Top email security best practices
  • Biggest data breaches in history, and how to prevent them

Материал из РУВИКИ — свободной энциклопедии

Выполнение программы
Общие понятия
  • Код
  • Транслятор
    • Компилятор
      • Время компиляции
    • Оптимизирующий компилятор
  • Промежуточное представление программы
  • Выполнение программы
    • Среда выполнения
      • Время выполнения
    • Исполняемый файл
    • Интерпретатор
    • Виртуальная машина
Типы кода
  • Исходный код
  • Объектный модуль
  • Байт-код
  • Машинный код
  • Микрокод
Стратегии компиляции
  • AOT-компиляция
  • JIT-компиляция
    • Tracing JIT-компиляция
  • Транскомпиляция
  • Рекомпиляция
Основные среды выполнения
  • Android Runtime (ART)
  • BEAM
  • Common Language Runtime (CLR) и Mono
  • CPython и PyPy
  • Crt0
  • Java Virtual Machine (JVM)
  • LuaJIT
  • Objective-C и Swift
  • V8 и Node.js
  • Zend Engine
Основные компиляторы и наборы инструментов для сборки
  • GNU Compiler Collection (GCC)
  • LLVM и Clang

Исполняемый файл — набор инструкций, который заставляет компьютер выполнить определённую задачу[1]. В отличие от текстового файла, который рассчитан на чтение человеком, исполняемый файл рассчитан на чтение (и выполнение) процессором.

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

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

Код на языке высокого уровня компилируется в объектные файлы машинного кода, которые не являются исполняемыми. После код может быть скомпонован в исполняемый файл. Этот процесс на языке ассемблера называется линковкой. Объектные файлы в зависимости от операционной системы обычно хранятся в формате контейнера (при котором различные данные содержатся в одном файле), таком как Executable and Linkable Format (ELF) для Unix-подобных систем или Portable Executable (PE) для Windows[3]. Это придаёт структуру машинному коду, разделяя его на секции, такие как .text (выполняемый код), .data (инициализированные глобальные и статические переменные) и .rodata (данные только для чтения, такие как постоянные и строки).

Исполняемые файлы обычно включают в себя среду выполнения, которая реализует функции языка программирования и компилятора среды выполнения (такие как планирование, обработка исключений, вызов статических конструкторов и деструкторов и т. д.) и взаимодействие с операционной системой, в частности, передача аргументов, окружения и кода возврата, вместе с другими функциями при запуске и завершении программы, которые не были указаны программистом, но представляющие ценность для последующей работы, такие как исполнение ресурсов. В Си это делается путём линковки компоновщиком объектного файла crt0 в исполняемый файл, который содержит точку исполнения, выполняет настройку и завершает работу с помощью вызова библиотеки среды выполнения[4].

Таким образом, исполняемые файлы обычно содержат дополнительный машинный код, который генерируется компилятором определённым образом из исходного кода. Это в некоторых случаях желательно пропустить, например, для разработки встроенных систем или просто для понимания того, как работают компиляция, линковка и загрузка. В Си пропустить стандартную среду выполнения можно с помощью указания сценария компоновщика напрямую, к примеру, вызвать main функцию для запуска программы и возвратить статус выхода ядру[5].

Для выполнения операционной системой, прошивкой или загрузчиком, исполняемый файл должен соответствовать бинарному интерфейсу приложений (ABI)[6]. В простых интерфейсах файл выполняется путём загрузки в память, перехода (прыжка) к началу адресного пространства и выполнения оттуда. В более сложных интерфейсах исполняемые файлы имеют дополнительные данные, определяющие отдельную точку входа. Например, в ELF точка входа указывается в заголовке e_entry, который указывает (виртуальный) адрес памяти, с которого следует начать выполнение. В GCC вход устанавливается компоновщиком с помощью символа _start.

  • crt0
  1. executable. Merriam-Webster’s Online Dictionary. Merriam-Webster. Дата обращения: 19 июля 2008. Архивировано 25 апреля 2009 года.
  2. Machine Instructions (амер. англ.). GeeksforGeeks (3 ноября 2015). Дата обращения: 18 сентября 2019. Архивировано 21 декабря 2019 года.
  3. Chapter 4: Object Files. refspecs.linuxbase.org. Дата обращения: 18 сентября 2019.
  4. Fisher. List of Executable File Extensions (англ.). lifewire.com. Дата обращения: 18 сентября 2019. Архивировано 11 сентября 2019 года.
  5. McKellar. Hello from a libc-free world! (Part 1) (16 марта 2010). Дата обращения: 17 августа 2021. Архивировано 17 ноября 2016 года.
  6. Boelen. The 101 of ELF files on Linux: Understanding and Analysis — Linux… (англ.). Linux Audit (15 мая 2019). Дата обращения: 18 сентября 2019. Архивировано 28 апреля 2019 года.

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Coreldraw graphics suite 2021 for windows corporate
  • Gtx550ti драйвер для windows 7
  • Winiso for windows 7
  • Exit and continue to windows recovery environment перевод
  • Как установить апач сервер для windows