Зворотна розробка: відмінності між версіями

[неперевірена версія][неперевірена версія]
Вилучено вміст Додано вміст
Mormat (обговорення | внесок)
мНемає опису редагування
м за словником УЛІФ зворотнА
Рядок 1:
{{wikibookspar|en|Reverse Engineering}}
'''ЗворотняЗворотна розробка''' ({{lang-en|reverse engineering}}) — дослідження деякого пристрою чи програми з метою розуміння принципів роботи досліджуваного об'єкту. Найчастіше використовується з метою створення об'єкту, за функціональністю аналогічного досліджуваному але без точного копіювання його функцій.
 
Зазвичай використовується у випадках, коли розробник оригінального пристрою чи програми не надає точних відомостей про алгоритми функціонування виробу, або будь-яким чином намагається завадити використанню технологій, що є задіяними його функціоналом.
 
В наш час зворотнязворотна розробка найбільш широко вживається для аналізу програмного забезпечення з закритими вихідним кодом. При цьому людина, що використовує даний метод дослідження, аналізує машинний код програми (зазвичай в [[Дизасемблер|дизасембльованому]] вигляді) та складає алгоритм функціонування [[Програмне забезпечення|ПЗ]] для подальшої реалізації в окремому продукті або відтворює його у відповідних [[Специфікація|специфікаціях]].
 
Зазвичай зворотнязворотна розробка є забороненою законом та/або ліцензійними угодами з кінцевим користувачем, але продукти, створені на основі аналізу алгоритмів є цілком законними, оскільки кінцевий продукт дуже рідко є схожим на оригінальний.
 
== Використання ==
Рядок 14:
Дослідження програм часто використовують з метою подальшої їх модифікації, розширення функціоналу або створення засобів, що дозволяють обходити обмеження на їх використання (наприклад умовно-безкоштовні програми). Також такі методи можуть використовуватися для отримання [[Специфікація|специфікації]] [[Мережевий протокол|протоколів]] обміну інформацією (наприклад мережевих [[Мережевий протокол|протоколів]]) або способів її зберігання ([[формати файлів]]).
 
ЗворотняЗворотна розробка програмного забезпечення зазвичай проводиться такимимтакими методами:
 
# Моніторинг активності. Таким способом найчастіше проводиться дослідження [[Протокол|протоколів]] обміну інформацією. Наприклад для дослідженннядослідження мережевих проколів може використовуватися перехоплення потоків даних в [[Мережа|мережі]] за допомогою спеціалізованих програмних чи/та апаратних засобів. Даний метод може не дати повного уявлення про алгоритми функціонування ПЗ.
# Дизасемблювання. Машинний код програми читається та перекладається мовою асемблера для свого розуміння в чистому вигляді. Таким способом можна досліджувати будь-яке програмне забезпечення, але за допомогою використання певних технологій при розробці ПЗ дизасемблювання можна значно ускладнити. Метод вимагає високої кваліфікації людини, що проводить зворотнюзворотну розробку та великих затрат часу.
# [[Декомпіляція]]. Полягає у перекладі машинного коду програми мовою високого рівня. Метод важко реалізувати з огляду на складність створення інструментів.