Реверс-инжиниринг
Реверс-инжиниринг (также Обратный инжиниринг) — мощный процесс определения принципов работы определённого ПО, который делается на основе его бдительного анализа. Качественный анализ до самого основания позволяет определить, какие функции в каком порядке вызываются, затем повторить алгоритм или внести в него изменения.
Описание[править]
Обычная разработка двигается от планов к реализации, реверс-инжиниринг начинается с готового продукта и движется назад от результата к его внутренним принципам. Нужен в тех случаях, когда в руках имеется работающая программа, но при этом нет никакой возможности стяжать её исходный код и надо выкручиваться.
Уже в древности народы копировали чужие изобретения. Китайцы в Средневековье воспроизводили арабские и европейские технологии, а римляне заимствовали греческие инженерные решения. В XIX веке Великобритания запрещала вывоз текстильных машин, но американец Сэмюэл Слейтер в 1790 году запомнил конструкцию и воспроизвёл её в США, после чего смог успешно конкурировать. После Второй мировой войны СССР провёл масштабный реверс-инжиниринг американского бомбардировщика B-29, результатом стал Ту-4, практически точная копия. Аналогично во время Холодной войны обе страны анализировали захваченную технику противника.
Весьма быстро идею восрали в разработку ПО. Так, компания Compaq в 1984 году легально клонировала BIOS IBM PC, используя технику чистой комнаты, когда одна команда документировала поведение BIOS, не видя код, а вторая писала новый код по этим спецификациям. Это позволило создать новые IBM-совместимые ПК.
Применяется для исследования вирусов, которые естественно пытаются максимально замаскировать, чтобы их было тяжко удалить. Но хитросраки после этого просто берут и исследуют, и не помогает обфускация и прочие странные приёмы, ох как не помогают. Всё равно вдалбливаются в эти вирусы и выдалбливают их.