Обратная разработка

Материал из in.wiki
Перейти к навигации Перейти к поиску

Обра́тная разрабо́тка (также реверс инжиниринг от англ. reverse engineering) — исследование некоторого устройства, формата, протокола или программы, а также создание документации на них с целью понять принцип его работы и, чаще всего, сделать устройство, программу или другой искусственный объект, с аналогичными функциями но без копирования как такового.

Применяется обычно в том случае, если создатель оригинального объекта не предоставил информации о структуре и способе создания (производства) объекта. Использование обратной разработки может противоречить закону об авторском праве и патентному законодательству.

В настоящее время под словами «reverse engineering» чаще всего понимается т. н. «clean room reverse engineering», то есть процесс, при котором одна группа разработчиков анализирует закрытый объект (в сленге хакеров для этого процесса используется также выражение «обратный инжиниринг» или «реверсный инжиниринг»), и составляет алгоритм работы закрытого объекта на псевдокоде и/или составляет исчерпывающие спецификации изучаемого закрытого объекта. После получения спецификаций другая группа разработчиков создает открытый аналог на основе полученных спецификаций или алгоритмов. Такой подход позволяет избежать обвинений в нарушении авторских прав на исходный объект, так как по законам, к примеру, США, подпадает под понятие «fair use», то есть добросовестного использования оригинального объекта. Результат обратной разработки редко идентичен оригиналу, что и позволяет избежать ответственности перед законом.

Сферы применения обратной разработки[править | править код]

Электроника[править | править код]

Копирование различных электронных блоков без фактической разработки. Известно, что очень большая часть советской цифровой электроники копировалась. Например, американская серия интегральных схем 74 и её советский аналог К(Р)155.

Ешё один пример обратной разработки — создание компанией AMD процессора Am386 на базе Intel 80386.

Программное обеспечение[править | править код]

Исследование и обратная разработка программ обычно осуществляются с целью дальнейшей модификации, копирования, или, например, написания генераторов ключей, алгоритм работы которых получен на основе анализа алгоритма их проверки. Также исследование программ применяется с целью получения некоторых закрытых сведений о внутреннем устройстве программы — о протоколе сетевого обмена с сервером, устройством, ключом защиты, взаимодействия с другой программой. Ещё одна область применения — получение информации о способах экспортирования данных из многочисленных проприетарных форматов файлов[1].

С развитием Интернета исследуются популярные операционные системы и программы на предмет обнаружения уязвимостей или т. н. дыр в них. В дальнейшем найденные дыры могут использоваться для получения несанкционированного доступа к удаленному компьютеру или компьютерной сети.

Известный случай исследования BIOS персонального компьютера IBM — это был один из серьезных шагов для развития производства IBM-совместимых компьютеров от сторонних производителей. Также, создание сервера Samba (входящего в состав ОС GNU/Linux, работающего с серверами на базе ОС Microsoft Windows) потребовало обратной разработки используемого Microsoft протокола SMB.

Обратная разработка программного обеспечения производится с помощью следующих методик:

  1. Анализ обмена данными, наиболее распространённый в обратной разработке протоколов обмена данными, который производится с помощью анализатора шины и пакетного сниффера для прослушивания шины компьютера и компьютерной сети соответственно.
  2. Дизассемблирование с помощью дизассемблера — означает то, что прямой машинный код программы читается и понимается в своём чистом виде, только с помощью мнемоник машинного языка. Этот способ работает на любой компьютерной программе, но требует достаточно много времени, особенно для неспециалиста.
  3. Декомпиляция с помощью декомпилятора — процесс создания исходного кода на некотором языке программирования высокого уровня.

Промышленность[править | править код]

Обратная разработка некоторого продукта конкурента, с целью узнать как он устроен, как работает и как можно создать аналогичный.

Военная промышленность[править | править код]

Самыми известными фактами обратной разработки во время второй мировой войны являлись:

  • Немецкие канистры для бензина — британские и американские войска заметили, что немцы имели канистры превосходного дизайна. Они скопировали эти канистры и те получили название Jerry cans (от слова «gerrys» — Germans).
  • Туполев Ту-4 — некоторое количество американских бомбардировщиков B-29 (англ.) при совершении вылетов в Японию были вынуждены садиться в СССР. Советские военные, которые не имели подобных стратегических бомбардировщиков, решили скопировать B-29. Через несколько лет они разработали Ту-4, практически полную копию.

Юридические последствия[править | править код]

Иногда увлечение обратной разработкой бывает опасно для исследователя. Например, словенский студент Dejan Ornig, изучавший протоколы коммуникации полиции, такие, как TETRA получил 15 месяцев тюрьмы[2].

Примечания[править | править код]

  1. Часто применяется, например, в отношении форматов, поддерживаемых Microsoft Office.
  2. Student Who Found Flaws in Police Communications Protocol Gets Prison Sentence

См. также[править | править код]

Ссылки[править | править код]