Зачем нужен реверс-инжиниринг?

Алекс Айфонов
15.04.2019

Реверс-инжиниринг или обратная разработка – это процесс преобразования готовой откомпилированной программы в первозданное состояние, то есть в исходный код. Как правило, метод обратной разработки применяют с целью изучить программу или оборудование изнутри. Программисты, занимающиеся данной процедурой, анализируют код и составляют исчерпывающую документацию по использованию программы.

Реверс-инжиниринг применяется в следующих случаях:

Если отсутствует полная документация на софт. Если разработчик программного обеспечения не предоставляет никаких сведений о работе и функционировании программы, пользователь никак не сможет узнать, как на самом деле работает ПО изнутри. Простым обывателям это и не нужно, однако те, кто разбирается в программировании и желает изучить алгоритмы программы или убедиться в ее безопасности, захотят просмотреть исходный код. Часть функционала программного обеспечения может быть недоступной лишь по причине плохо составленной или поверхностной документации о ее возможностях. Лишь реверс-инжиниринг позволяет досконально изучить программу и выявить незадокументированные функции.

Для взлома и хакинга программ. Обратную разработку применяют хакеры для взлома лицензированного ПО. Исходный код дает возможность изучить защитные механизмы и создать специальный софт по их обходу. Во многих случаях реверс-инжиниринг позволяет пользоваться лицензированной программой бесплатно. На основе полученных данных от обратной разработки создаются активаторы, кряки, кейгены, патчи, обманывающие или ломающие защиту платных программ.

Для внесения изменений в существующее ПО. Реверс-инжиниринг нередко выручает в сфере промышленности, когда исходники программы были безвозвратно утеряны производителем, либо компания, производившая оборудование, была ликвидирована. К примеру, после ремонта технике могут потребоваться изменения в программном коде, которые невозможно внести обычными средствами. Только по исходным файлам можно понять принцип работы системы и внести нужные коррективы.

В данном случае проблема также решается путем обратной разработки программы. Программисты смогут внести поправки и пересобрать новое ПО, которое будет управлять старым оборудованием. Чтобы заставить его работать корректно, придется менять многое: это касается как программного обеспечения, так и управляющих плат, не говоря уже о настройке и калибровке с нуля. Это сложный процесс, однако замена всего оборудования обошлась бы дороже.

Многое программное обеспечение защищено от дизассемблирования и других методов обратной разработки, поскольку реверс-инжиниринг прямо нарушает интеллектуальную собственность владельцев. Данная операция требует разрешения от владельца ПО, и в некоторых случаях правообладатель может пойти на уступки.

На самом деле, преобразование готовой программы в стопроцентно первозданный вид невозможно по причине запутанности и сложной структуры кода. Полученные исходники могут дать общее представление о внутренности программы, если применять дизассемблирование. Если пользователю известно, на каком языке написана программа, существует возможность восстановить большую часть структуры программы из машинного кода в исходное ее представление на одном из высокоуровневых языков.

На первый взгляд обратная разработка — это спорная технология. С одной стороны, она позволяет воровать разработки других компаний, но с другой, дает возможность использовать технику по максимуму. Без реверс-инжиниринга не было бы прогресса ни в сфере промышленности, ни в сфере IT. Компании редко занимаются открытым копированием идей друг у друга, поскольку это не выгодно ни одной из сторон, зато реверс-инжиниринг позволяет разработчикам переосмысливать старые идеи и генерировать новые.

Clean Space – простой и эффективный инструмент очистки временных файлов в Windows 10

Программ-чистильщиков для Windows 10 существует достаточно много, но не все из них обрели популярность. Незаслуженно обойденным вниманием оказался и чистильщик Clean Space.

WAU Manager — бесплатный диспетчер обновления Windows

WAU Manager — бесплатный инструмент для получения максимально полного контроля над процессами обновления Windows.

Рефлексия в Javascript: примеры использования объекта Proxy

С помощью объекта Proxy у разработчиков появилась возможность получить контроль над некоторыми внутренними операциями, которые ранее были скрыты "под капотом" движка javascript.

Как в PHP загрузить HTML-страницу со стороннего сервера?

Для загрузки HTML-страницы со стороннего сервера можно воспользоваться стандартными функциями для работы с файлами. В PHP для этой цели проще всего использовать функцию file_get_contents, только вместо локального пути к файлу, передать ей URL загружаемой страницы.

Комментарии (0)

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