Подтвердить что ты не робот

Что в .exe файле?

Так что .exe файл - это файл, который может быть запущен Windows, но что именно он содержит? Язык ассемблера, специфичный для процессора? Или какой-то промежуточный оператор, который распознается Windows, который превращает его в сборку для конкретного процессора? Что именно делает окна с файлом, когда он "выполняет" его?

4b9b3361

Ответ 1

В MSDN есть статья "" Глубокий взгляд на Win32 Portable Executable File Format", который описывает структуру исполняемого файла.

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

Я предлагаю вам получить копию Windows Internals для полного описания того, что происходит при запуске exe.

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

При запуске native.exe происходит следующее (сильно упрощенное):

  • Создается объект процесса.
  • Файл exe считывается в эту память процесса. Различные разделы .exe(код, данные и т.д.) Отображаются отдельно и задаются разные разрешения (код выполняется, данные считываются/записываются, константы доступны только для чтения).
  • Перемещения происходят в .exe(адреса получают пропатчен, если .exe не загружается по его предпочтительным адресам.)
  • Загружается таблица импорта, и загружается зависимая DLL.
  • DLL сопоставляются аналогичным методом с .exe с перераспределениями и загружаемой ими зависимой DLL. Импортируются функции из DLL.
  • Процесс запускается в исходном заглушке в NTDLL.
  • Начальный загрузчик запускает точки входа для каждой DLL, а затем переходит к точке входа .exe.

Управляемые исполняемые файлы содержат MSIL (Microsoft Intermediate Language) и могут быть скомпилированы, чтобы они могли настроить таргетинг на любой процессор, поддерживаемый средой CLR. Я не знаком с внутренней работой загрузчика CLR (какой исходный код изначально запускается для загрузки ремня CLR и начала интерпретации MSIL) - возможно, кто-то еще может это уточнить.

Ответ 2

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

Это на самом деле представляет: Марк Збиковский. Парень, который разработал формат файла exe.

http://en.wikipedia.org/wiki/Mark_Zbikowski

Ответ 3

1 и 0!

Эта ссылка wikipedia предоставит вам всю необходимую информацию в формате Portable Executable, используемом для приложений Windows.

Ответ 4

EXE файл - это действительно тип файла, известный как Portable Executable. Он содержит двоичные данные, которые могут быть прочитаны процессором и выполнены (по существу, инструкции x86.) Также есть лот данных заголовка и другого разного контента. Фактический исполняемый код находится в секции под названием .text и хранится как машинные инструкции (специфичные для процессора). Этот код (а также другие части .EXE) помещаются в память, и процессор отправляется на него, где он начинает выполняться. (Обратите внимание, что на самом деле происходит гораздо больше интерфейсов, это упрощенное объяснение).