Обратная разработка
Материал из Википедии — свободной энциклопедии
Обра́тная разрабо́тка (иссле́дование програ́мм, англ. Reverse engineering) — исследование некоторого устройства или программы с целью понять принцип его работы и, чаще всего, сделать устройство, программу или или другой искусственный объект, с аналогичными функциями но без копирования как такового.
Применяется обычно в том случае, если создатель оригинального объекта не предоставил информации о структуре и способе создания (производства) объекта. Использование обратной разработки может противоречить закону об авторском праве и патентному законодательству.
В настоящее время под словами «reverse engineering» чаще всего понимается т. н. «clean room reverse engineering», то есть процесс, при котором одна группа разработчиков анализирует машинный код программы (в сленге хакеров для этого процесса используется также выражение «обратный инжиниринг» или «реверсный инжиниринг»), составляет алгоритм данной программы на псевдокоде, либо, если программа является драйвером какого-либо устройства, составляет исчерпывающие спецификации интересующего устройства. После получения спецификаций другая группа разработчиков пишет собственный драйвер на основе полученных спецификаций или алгоритмов. Такой подход позволяет избежать обвинений в нарушении копирайта на исходную программу, так как по законам, к примеру, США подпадает под понятие «fair use», то есть добросовестного использования оригинальной программы. Результат обратной разработки редко идентичен оригиналу, что и позволяет избежать ответственности перед законом.
Содержание |
[править] Сферы применения обратной разработки
[править] Электроника
Копирование различных электронных блоков без фактической разработки. Известно, что очень большая часть советской цифровой электроники копировалась. Например, американская серия интегральных схем 74 и её советский аналог К(Р)155.
Ешё один пример обратной разработки — создание компанией AMD процессора Am386 на базе Intel 80386.
[править] Программное обеспечение
Исследование и обратная разработка программ обычно осуществляются с целью дальнейшей модификации, копирования, или, например, написания генераторов ключей, алгоритм работы которых получен на основе анализа алгоритма их проверки. Также исследование программ применяется с целью получения некоторых закрытых сведений о внутреннем устройстве программы — о протоколе сетевого обмена с сервером, устройством, ключом защиты, взаимодействия с другой программой. Ещё одна область применения — получение информации о способах экспортирования данных из многочисленных проприетарных форматов файлов[1].
С развитием Интернета исследуются популярные операционные системы и программы на предмет обнаружения уязвимостей или т. н. дыр в них. В дальнейшем найденные дыры могут использоваться для получения несанкционированного доступа к удаленному компьютеру или компьютерной сети.
Известный случай исследования BIOS персонального компьютера IBM — это был один из серьезных шагов для развития производства IBM-совместимых компьютеров от сторонних производителей. Также, создание сервера Samba (входящего в состав ОС Linux, работающего с серверами на базе ОС Windows) потребовало обратной разработки используемого Microsoft протокола SMB.
Обратная разработка программного обеспечения производится с помощью следующих методик:
- Анализ обмена данными, наиболее распространённый в обратной разработке протоколов обмена данными, который производится с помощью анализатора шины и пакетного сниффера для прослушивания шины компьютера и компьютерной сети соответственно.
- Дизассемблирование с помощью дизассемблера — означает то, что прямой машинный код программы читается и понимается в своём чистом виде, только с помощью мнемоник машинного языка. Этот способ работает на любой компьютерной программе, но требует достаточно много времени, особенно для неспециалиста.
- Декомпиляция с помощью декомпилятора — процесс создания исходного кода на некотором языке высокого уровня для программы, у которой доступной является только машинный код или байткод.
[править] Промышленность
Обратная разработка некоторого продукта конкурента, с целью узнать как он устроен, как работает и как можно создать аналогичный.
[править] Военная промышленность
Самыми известными фактами обратной разработки во время второй мировой войны являлись:
- Немецкие канистры для бензина — британские и американские войска заметили, что немцы имели канистры превосходного дизайна. Они скопировали эти канистры и те получили название Jerry cans (от слова «gerrys» — Germans).
- Туполев Ту-4 — некоторое количество американских бомбардировщиков B-29(англ.) при совершении вылетов в Японию были вынуждены садиться в СССР. Советские военные, которые не имели подобных стратегических бомбардировщиков, решили скопировать B-29. Через несколько лет они разработали Ту-4, практически полную копию.
[править] Примечания
- ↑ Часто применяется, например, в отношении форматов, поддерживаемых Microsoft Word.
[править] См. также
[править] Ссылки
AMD: 30 лет гонки за лидером- статья на 3DNews.ru.