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