Интернет, компьютеры, софт и прочий Hi-Tech

Подписаться через RSS2Email.ru

Что такое реверс-инжиниринг

Термин сформирован методом слегка неуклюжего транскрибирования английского «reverse engineering», этакий гибрид с примесью транслитерации. Однако нас интересует не этимология, а суть данного понятия, поскольку таковое встречается во всемирной паутине довольно часто. Поэтому, не мудрствуя, просто переведём оригинал. Получится что-то вроде «обратная разработка». Почему она обратная? Зачем нужна? На вопросы будем отвечать, как всегда, по порядку.

Суть простыми словами

Выпустила какая-нибудь надменная контора новую компьютерную «железку», но драйверы изготовила только для коммерческих операционных систем. Сочла пользователей свободных GNU/Linux и *BSD недостаточно многочисленными и платежеспособными, чтобы тратить ради них свои силы. Поэтому сколько ни втыкай такое устройство в ноутбук с Linux, оно не заработает.

Тогда за дело берутся опытные программисты. Идейные. Из тех, кто желает, чтобы люди не зависели от прихотей разных контор и могли пользоваться «железкой» в свободных ОС.

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

То есть, идёт разработка в обратном направлении, от готового результата к истоку, от бинарной сборки к исходному коду. Нужно уразуметь, какая функция что делает, какой алгоритм должен получиться etc.

В случае успеха изготавливается новый софт, необязательно клон имеющегося, но выполняющий те же самые задачи. Если программа оказывается работоспособной, то пользователей свободных ОС можно будет порадовать драйвером для «железки».

Антивирусный бизнес

Кроме того, реверс-инжиниринг используется в антивирусной индустрии, трудящейся на благо пользователей Windows и Mac OS. Специалисты по компьютерной заразе пытаются понять структуру вредоносного софта с целью создания лекарств — тех самых обновлений, которые загружаются антивирусами практически каждый день.

Да, это ежедневный каторжный труд, для которого со временем всё сильнее подходит эпитет «сизифов».

Специалисты вылавливают файлы в сети, получают их из «карантина» антивирусных приложений, открывают файлы в шестнадцатеричных редакторах, всматриваются в байты... В общем, стараются в поте лица, чтобы защитить планету от новой ужасной напасти, плодящейся с неимоверной скоростью. (Правда, в качестве избавления они не рекомендуют безопасные бесплатные ОС на основе GNU/Linux, поскольку сие сделает их безработными.)

Виды «обратной разработки»

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

Реверсинг «железок» — определение структуры и спецификаций устройства. Создание альтернативных драйверов уже упомянуто, а ещё «прошивки» всякие бывают («firmware»), которые иногда хочется менять и переделывать под свои цели. К примеру, освобождать сотовые модемы от коварной привязки к конкретному оператору.

Защита от реверс-инжиниринга

Для защиты от вскрытия бинарных файлов и вытаскивания из них кода применяются различные упаковщики. Говоря простым языком, программа разжимается только при выполнении, находясь в оперативной памяти, а на диске лежит в неприступном, непостижимом виде.

Многие антивирусы считают само наличие непробиваемой упаковки подозрительным признаком. Для проверки подозрений нередко используется «песочница», изолированная область оперативной памяти, где программа запускается и проявляет свою сущность.

То есть, если вы создали софт, но не приобрели для него цифровую подпись, то применение упаковщика не будет способствовать появлению к вам какого-либо доверия. Конечно, таких проблем нет в мире Свободного ПО (Open Source), ведь там код программ открыт изначально.

Другой способ противодействия реврерс-инжинирингу — обфускация. Термин произошёл от английского «obfuscate». То бишь, «запутывать», «сбивать с толку», ну и всячески «делать неочевидным».

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

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

Законно ли это

Корпорации совершенно искренне полагают, что могут править миром. Поэтому в пользовательском соглашении нередко написано, мол, какой-либо реверс-инжиниринг софта запрещён. Кем запрещён? Самими производителями, как будто они имеют на это право.

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

Следовательно, если вы с лёгкостью декомпилировали программу, написанную на языке Java, то радоваться рано: отличий полученного кода от изначального будет немного, и обвинить вас в плагиате смогут.

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

Потому никто не судит разработчиков свободных кодеков для воспроизведения проприетарных форматов мультимедиа, офисных приложений, способных понимать документы MS Word, ну и так далее. Всё это не украдено, а создано своим трудом.

Заключение

Итак, реверс-инжиниринг — это постижение сути, структуры, принципов действия программ и устройств с целью создания аналогов, ради изготовления лекарств от вирусов, осуществления перепрошивки, ликвидации привязки к вендору, а также иногда для выявления дыр в безопасности.

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

Автор: vanilinkin, специально для xBB.uz, 30.08.2012


Предыдущие публикации:

Биржа долевых инвестиций SIMEX.

Последнее редактирование: 2012-08-30 09:34:01

Метки материала: что такое, что, инжиниринг, реверс-инжиниринг, по, софт, soft, программное обеспечение, информационные технологии, ит, it, hi tech, компьютерные технологии, software, разработка по, цифровые технологии, компьютерная техника, программное обеспечение по


5 комментариев

21.08.2017 13:09:39 #
Mozilla Firefox Гость Александр
На самом же деле международные правовые нормы по этому поводу гласят совершенно однозначно: создание чего-либо нового на основе уже имеющегося никоим образом не является нарушением копирайта, хищением интеллектуальной собственности или каким-то иным, не менее ужасным преступлением. Конечно, если новое значительно отличается от исходного материала.

Хорошая статья, только на какую именно такую Международно-правовую норму вы ссылаетесь? Желательно, реквизиты МПН.Спасибо!
02.03.2016 14:59:22 #
Google Chrome Гость Интересующийся
Спасибо. Все четко описали.
28.06.2014 16:51:21 #
Google Chrome Гость студент
Спасибо,все доходчиво написано и простым языком.
08.08.2013 04:06:00 #
Google Chrome Гость Egg Head
Статьи тут =)
http://demono.ru
08.08.2013 04:05:28 #
Google Chrome Гость Egg Head
Неплохая статья.
Вот кстати близкие статьи разработчиков декомпилятора (точнее утилиты восстановления алгоритмов), которые ставят своей целью именно поиск дыр в ПО.
Спасибо.

Оставьте, пожалуйста, свой комментарий к публикации

Представиться как     Антибот:
   

Просьба не постить мусор. Если вы хотите потестить xBB, воспользуйтесь кнопкой предварительного просмотра на панели инструментов xBBEditor-а.


© 2007-2017, Дмитрий Скоробогатов.
Разрешается воспроизводить, распространять и/или изменять материалы сайта
в соответствии с условиями GNU Free Documentation License,
версии 1.2 или любой более поздней версии, опубликованной FSF,
если только иное не указано в самих материалах.