Меню
безкоштовно
Головна  /  Встановлення та налаштування / Виконувані програми. Структура програмних компонентів

Виконувані програми. Структура програмних компонентів

Багато користувачів комп'ютерних систем напевно в тій чи іншій мірі стикалися з поняттям виконуваного файлу програми. Виконувані файли не завжди, але досить часто мають розширення 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. З його допомогою можна редагувати програмні ресурси, змінювати інтерфейс і функції програмного модуля. Внесення змін можливо тільки для додатків з відритим вихідним кодом (в яких не використовується шифрування).