ДекомпіляторДекомпіля́тор (також детранслятор, обернений транслятор) — комп'ютерна програма, яка транслює модуль у вигляді двійкового машинного коду (об'єктний код, отриманий на виході компілятора в процесі компіляції) у функціонально подібний вихідний код на мові програмування високого рівня. Процес трансляції коду декомпілятором називається декомпіляцією. Декомпілятори, як і дизасемблери використовуються для дослідження та зворотної розробки програмного забезпечення. Принцип діїПроцес компіляції є незворотним в тому значенні, що не існує однозначної функції, яка б дозволила отримати назад джерельний код в початковому вигляді, оскільки при цьому втрачається дуже багато інформації. Тому в декомпіляторі використовуються різні методи та способи зворотньої розробки. Отриманий таким чином джерельний код на одній з мов програмування високого рівня, як правило, тільки функціонально схожий до первинної версії джерельного коду, який використовувався для створення піддослідної програми. Однак деякі техніки допомагають відтворенню такого коду. Наприклад, якщо програма скомпільована в зневаджувальному режимі, то імена модулів, функцій, змінних, а в деяких випадках і коментарі, а то й весь оригінальний авторський код компілятор залишає в виконавчій програмі, що надзвичайно полегшує процес зворотньої розробки. Розробники власницького ПЗ для збереження своїх алгоритмів чи модулів ліцензування в таємниці стараються максимально ускладнити можливість декомпіляції програми за допомогою обфускації та шифрування. Декомпіляція машинного байт-коду з мов, які виконуються з допомогою віртуальної машини (Java, C#) є як правило набагато простішою, бо компілятори таких мов залишають набагато більше інформації, ніж компілятори в машинний двійковий код (C, C++). ЗаконодавствоБагато розробників власницького ПЗ явно забороняють в ліцензії декомпіляцію своїх програм, однак згідно з законом України «Про авторське право і суміжні права» в статті 24 дозволяється вільне копіювання, модифікація і декомпіляція комп'ютерних програм за необхідної умови, що особа правомірно володіє правомірно виготовленим примірником комп'ютерної програми[1]. Додаткові умови для законного права на декомпіляцію програми для отримання інформації, необхідної для досягнення її взаємодії із незалежно розробленою комп'ютерною програмою:
Див. такожПримітки
|