Що таке зворотна розробка й де вона застосовується

Що таке зворотна розробка й де вона застосовується

І чи законно це ;)

Зворотна розробка — метод розбирання об’єкта, який допомагає зрозуміти, як сконструйовано раніше створений пристрій, процес, систему або частину програмного забезпечення. Інженер розбирає продукт на частини, щоби зрозуміти, як він працює, а потім відтворити схоже чи ідентичне рішення. Розробник відповідає на питання: «Які процеси провокують саме таку поведінку продукту?».

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

Де застосовується реверс-інжиніринг

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

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

В IT зворотна розробка програм застосовується для дослідження софту та заліза, їхніх елементів та принципів роботи.

Об’єктами можуть бути:

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

Для чого використовують зворотну розробку:

  • пошук та виправлення помилок у програмах, до вихідного коду яких розробники не мають доступу;
  • аналіз вірусів до створення антивірусного програмного забезпечення;
  • покращення функціональності програми, коли зв’язатися з попереднім розробником не виходить — наприклад, компанія-розробник перестала існувати;
  • опис механіки гри, коли розробник бере приклад іншу, уже готову гру, спостерігає за її розвитком, аналізує сценарій і пропонує свій варіант;
  • навчання: якщо розробник не розуміє якусь частину свого продукту, він може проаналізувати чужу та зробити висновки про її функціонування.

Реверс-інжиніринг також застосовують для нелегальних цілей — крадіжки коду, обходу технічних засобів захисту авторських прав, нескінченного використання безкоштовних версій програми.

Типи реверс-інжинірингу

Існують десятки видів зворотної розробки, оскільки процес може розбити об’єкт на частини по-різному — наприклад, аналіз системного рівня, вилучення схеми та розбір продукту.

Принципи зворотної розробки

Процес зворотної розробки регулюють загальні принципи:

  • 1. Не плутати гіпотези з висновками. Зворотний інжиніринг дає гіпотези. Розробник повинен повністю зрозуміти програму, перш ніж робити висновки.
  • 2. Отримати кілька інтерпретацій. Альтернативні інтерпретації даних можуть давати різні результати. Чим більше інформації є, тим менше повинні відрізнятися судження реверс-інженерів.
  • 3. Розуміти, що результати є приблизними. Наприклад, 80% інформації девелопер отримає завдяки зворотній розробці. Щоб отримати 20%, які залишилися, потрібно використовувати методи прямого проєктування, наприклад, опитування користувачів.
  • 4. Не дивуватися дивним конструкціям. Інженер не зможе відтворити повну та точну модель, тому що такої моделі до цього, можливо, не існувало.
  • 5. Стежити за єдиним стилем. Продукт розробляють із використанням послідовної стратегії, яку потрібно знайти та зрозуміти.

Етапи реверс-розробки на прикладі виконуваного файлу:

  • 1. Запустити та протестувати виконуваний файл, ознайомитися з додатком та його можливостями.
  • 2. Проаналізувати взаємодію файлу із зовнішнім світом: бібліотеками, процесами, системними API, файловою системою, мережевими взаємодіями, фізичними портами тощо.
  • 3. Детально вивчити код. Для цього застосовують трансляцію двійкового коду мовою асемблера, щоби потім витягти структури, інструкції та виклики функцій.

Переваги

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

Також процес допомагає знаходити недоліки та вразливості в продукті. Це необхідно, щоби гарантувати безпеку користувачів. Краще щоби проблема виникла на етапі дослідження, а не на етапі поширення.

Крім того, завдяки зворотній розробці ринку виходять менш дорогі продукти — витрати на виробництво знижуються.

Недоліки

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

Законність реверс-інжинірингу

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

У США було багато судових прецедентів про реверс-інжиніринг у спробах обійти захист ігрових консолей. Деякі компанії (SEGA, Nintendo хотіли, щоб у них купували допуски до консолей та випускали ексклюзивні ігри. Розробникам ігор це не подобалося, адже простіше не купувати ліцензію та випускати ігри для всіх. Тому вони знаходили способи обійти захист ігрових консолей: ігри ставали загальнодоступними та сумісними з консолями.

У 1980–90-х роках. з’явилися перші судові розгляди про реверс-інжиніринг та сформувалися принципи: авторське право не захищає ідеї, процеси та операції, для їхнього захисту потрібно використовувати патентне право.

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

Якби реверсну розробку заборонили, власник продукту та коду був би монополістом на ринку.

Ще статті
Віктор Шитюк, Lead Data Engineer з 12 річним досвідом у IT сфері, про робочу рутину інженера даних, must-have інструменти та перспективи професії.