Изменения

10 072 байта добавлено ,  17 лет назад
Новая: '''Обра́тная разрабо́тка''' (также '''реверс инжиниринг''' от {{lang-en|reverse engineering}}) — исследование некоторог...
'''Обра́тная разрабо́тка''' (также '''реверс инжиниринг''' от {{lang-en|reverse engineering}}) — исследование некоторого устройства или программы, а также документации на них с целью понять принцип его работы и, чаще всего, сделать устройство, программу или другой искусственный объект, с аналогичными функциями но без копирования как такового.

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

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

== Сферы применения обратной разработки ==

=== Электроника ===

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

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

=== Программное обеспечение ===

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

С развитием [[Интернет]]а исследуются популярные операционные системы и программы на предмет обнаружения [[Уязвимость_(компьютерная_безопасность)|уязвимостей]] или {{nobr|т. н.}} дыр в них. В дальнейшем найденные дыры могут использоваться для получения несанкционированного доступа к удаленному компьютеру или компьютерной сети.

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

Обратная разработка программного обеспечения производится с помощью следующих методик:
# Анализ обмена данными, наиболее распространённый в обратной разработке протоколов обмена данными, который производится с помощью [[анализатор шины|анализатора шины]] и [[Анализатор трафика|пакетного сниффера]] для прослушивания [[шина (компьютер)|шины компьютера]] и [[компьютерная сеть|компьютерной сети]] соответственно.
# [[Дизассемблирование]] с помощью [[дизассемблер]]а — означает то, что прямой [[машинный код]] программы читается и понимается в своём чистом виде, только с помощью [[мнемоника|мнемоник]] машинного языка. Этот способ работает на любой компьютерной программе, но требует достаточно много времени, особенно для неспециалиста.
# [[Декомпиляция]] с помощью [[декомпилятор]]а — процесс создания исходного кода на некотором языке программирования высокого уровня.

=== Промышленность ===

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

=== Военная промышленность ===
[[Изображение:Jerrycan.JPG|thumb|Jerry cans]]
Самыми известными фактами обратной разработки во время второй мировой войны являлись:
* Немецкие [[канистра|канистры]] для бензина — британские и американские войска заметили, что немцы имели канистры превосходного дизайна. Они скопировали эти канистры и те получили название ''Jerry cans'' (от слова «gerrys» — Germans).
* Туполев [[Ту-4]] — некоторое количество американских бомбардировщиков [http://en.wikipedia.org/wiki/B-29 B-29]{{ref-en}} при совершении вылетов в [[Япония|Японию]] были вынуждены садиться в [[Советский Союз|СССР]]. Советские военные, которые не имели подобных стратегических бомбардировщиков, решили скопировать B-29. Через несколько лет они разработали Ту-4, практически полную копию.

== Примечания ==
<references />

== См. также ==
* [[Дизассемблер]]
* [[GNU Ferret]]

== Ссылки ==
[http://www.3dnews.ru/editorial/amd-history/index2.htm AMD: 30 лет гонки за лидером]- статья на [http://www.3dnews.ru/ 3DNews.ru].

{{Википедия|Обратная разработка}}

[[Категория:Понятия]]
[[Категория:Программирование]]
Анонимный участник