Зворотна розробка
Зворо́тна розро́бка (англ. reverse engineering) — дослідження деякого пристрою чи програми з метою розуміння принципів роботи досліджуваного об'єкта. Найчастіше використовується з метою створення об'єкта, за функціональністю аналогічного досліджуваному але без точного копіювання його функцій.
Зазвичай використовується у випадках, коли розробник оригінального пристрою чи програми не надає точних відомостей про алгоритми функціонування виробу, або будь-яким чином намагається завадити використанню технологій, що задіяні його функціоналом.
У наш час зворотна розробка найширше вживається для аналізу програмного забезпечення з закритими вихідним кодом. При цьому людина, що використовує даний метод дослідження, аналізує машинний код програми (зазвичай в дизасембльованому вигляді) та складає алгоритм функціонування ПЗ для подальшої реалізації в окремому продукті або відтворює його у відповідних специфікаціях.
Зазвичай зворотна розробка є забороненою законом та/або ліцензійними угодами з кінцевим користувачем, але продукти, створені на основі аналізу алгоритмів є цілком законними, оскільки кінцевий продукт дуже рідко є схожим на оригінальний.
Дослідження програм часто використовують з метою подальшої їхньої модифікації, розширення функціоналу або створення засобів, що дозволяють обходити обмеження на їхнє використання (наприклад умовно-безкоштовні програми). Також такі методи можуть використовуватися для отримання специфікації протоколів обміну інформацією (наприклад мережевих протоколів) або способів її зберігання (формати файлів).
Зворотна розробка програмного забезпечення зазвичай проводиться такими методами:
- Моніторинг активності. Таким способом найчастіше проводиться дослідження протоколів обміну інформацією. Наприклад для дослідження мережевих проколів може використовуватися перехоплення потоків даних в мережі за допомогою спеціалізованих програмних чи/та апаратних засобів. Цей метод може не дати повного уявлення про алгоритми функціонування ПЗ.
- Дизасемблювання. Машинний код програми читається та перекладається мовою асемблера для свого розуміння в чистому вигляді. Таким способом можна досліджувати будь-яке програмне забезпечення, але за допомогою використання певних технологій при розробці ПЗ дизасемблювання можна значно ускладнити. Метод вимагає високої кваліфікації людини, що проводить зворотну розробку та великих затрат часу.
- Декомпіляція. Полягає у перекладі машинного коду програми мовою високого рівня. Метод важко реалізувати з огляду на складність створення інструментів.
Це незавершена стаття про інформаційні технології. Ви можете допомогти проєкту, виправивши або дописавши її. |