Зворо́тна розро́бка (англ. reverse engineering) — дослідження деякого пристрою чи програми з метою розуміння принципів роботи досліджуваного об'єкта. Найчастіше використовується з метою створення об'єкта, за функціональністю аналогічного досліджуваному але без точного копіювання його функцій.

ВікіПідручник
ВікіПідручник
ВікіПідручник en має дані стосовно:

Зазвичай використовується у випадках, коли розробник оригінального пристрою чи програми не надає точних відомостей про алгоритми функціонування виробу, або будь-яким чином намагається завадити використанню технологій, що задіяні його функціоналом.

У наш час зворотна розробка найширше вживається для аналізу програмного забезпечення з закритими вихідним кодом. При цьому людина, що використовує даний метод дослідження, аналізує машинний код програми (зазвичай в дизасембльованому вигляді) та складає алгоритм функціонування ПЗ для подальшої реалізації в окремому продукті або відтворює його у відповідних специфікаціях.

Зазвичай зворотна розробка є забороненою законом та/або ліцензійними угодами з кінцевим користувачем, але продукти, створені на основі аналізу алгоритмів є цілком законними, оскільки кінцевий продукт дуже рідко є схожим на оригінальний.

Використання ред.

Програмне забезпечення ред.

Дослідження програм часто використовують з метою подальшої їхньої модифікації, розширення функціоналу або створення засобів, що дозволяють обходити обмеження на їхнє використання (наприклад умовно-безкоштовні програми). Також такі методи можуть використовуватися для отримання специфікації протоколів обміну інформацією (наприклад мережевих протоколів) або способів її зберігання (формати файлів).

Зворотна розробка програмного забезпечення зазвичай проводиться такими методами:

  1. Моніторинг активності. Таким способом найчастіше проводиться дослідження протоколів обміну інформацією. Наприклад для дослідження мережевих проколів може використовуватися перехоплення потоків даних в мережі за допомогою спеціалізованих програмних чи/та апаратних засобів. Цей метод може не дати повного уявлення про алгоритми функціонування ПЗ.
  2. Дизасемблювання. Машинний код програми читається та перекладається мовою асемблера для свого розуміння в чистому вигляді. Таким способом можна досліджувати будь-яке програмне забезпечення, але за допомогою використання певних технологій при розробці ПЗ дизасемблювання можна значно ускладнити. Метод вимагає високої кваліфікації людини, що проводить зворотну розробку та великих затрат часу.
  3. Декомпіляція. Полягає у перекладі машинного коду програми мовою високого рівня. Метод важко реалізувати з огляду на складність створення інструментів.

Див. також ред.