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

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

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

Ещё один пример обратной разработки — создание компанией AMD процессора Intel 80386.

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

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

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

Одним из широко известных примеров обратной разработки является исследование IBM, ставшее серьёзным шагом на пути развития производства IBM-совместимых компьютеров сторонними производителями. Создание сервера GNU/Linux и работающего с серверами на базе ОС Microsoft Windows) также потребовало обратной разработки используемого SMB.

Обратная разработка программного обеспечения производится с помощью следующих методик.

  1. Анализ обмена данными, наиболее распространённый в обратной разработке протоколов обмена данными, который производится с помощью анализатора шины и пакетного сниффера для прослушивания шины компьютера и компьютерной сети соответственно.
  2. Дизассемблирование с помощью дизассемблера, при котором прямой машинный код программы читается и понимается в своём чистом виде, только с помощью мнемоник машинного языка. Этот способ работает на любой компьютерной программе, но требует достаточно много времени, особенно для неспециалиста.
  3. Декомпиляция с помощью декомпилятора — процесс создания исходного кода на некотором языке программирования высокого уровня.

Базы данных

может использоваться при создании реляционной модели базы данных.

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

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

Военная промышленность

Самыми известными фактами обратной разработки во время второй мировой войны являлись:

  • Немецкие канистры для бензина — британские и американские войска заметили, что немцы имели очень удобные канистры. Они скопировали эти канистры, и те получили название Jerry cans (от слова «gerrys» — от «Germans»).
  • Туполев Ту-4 — некоторое количество американских бомбардировщиков B-29 при совершении вылетов в Японию были вынуждены садиться в СССР. Советские военные, которые не имели подобных стратегических бомбардировщиков, решили скопировать B-29. Через несколько лет они разработали Ту-4, практически полную копию.

Для анализа исходного кода

С широким применением SADT) связано возникновение основных идей популярного ныне понятия — BPR (бизнес-процесс реинжиниринг).

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

В общем случае обратный инжиниринг (Reverse engineering) означает процесс создания техничес­кой документации на основе имеющейся детали или конструкции. Иными словами, процесс проектирования идет в обратном направлении — от физического объекта к его абстрактному представлению.

Применение обратного инжиниринга

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

  • деталь нужна срочно, но:
  • производитель прекратил свою деятельность,
  • такие детали больше не выпускаются,
  • слишком велики сроки поставок или завышена цена;
  • проектная документация не соответствует изделию, утрачена, ее сложно получить или таковая вообще никогда не создавалась;
  • требуется анализ геометрии и расчет напряжений после длительной эксплуатации (износ, деформации). Такой анализ позволяет повысить качество продукции;
  • необходим анализ продукции конкурентов.
  • В этих и других ситуациях посредством обратного инжиниринга получают цифровые 3D­модели, по которым с помощью аддитивных технологий может быть быстро изготовлена новая деталь.

    Современный обратный инжиниринг

    В настоящее время термином «обратный инжиниринг» по большей части обозначается процесс получения цифровой 3D­модели реального изделия с использованием автоматизированных систем проектирования. Процесс начинается с 3D­сканирования, при котором форма объекта преобразуется в математический образ в виде облака точек. Для этого применяются лазерные сканеры, устройства структурированного белого или синего света, координатно­измерительные машины (КИМ) и компьютерная томография.

    Читайте также:  Актер играет бандитов в сериалах

    Наивысшей точностью (порядка 0,005 мм) обладают КИМ; оптические и лазерные сканеры отстают от них примерно на порядок. Однако для реверсного инжиниринга КИМ используются редко ввиду низкой скорости сканирования, а следовательно, проблем с получением большого количества точек.

    Результаты сканирования выдаются в виде файлов измерений или файлов фасетной 3D­модели в форматах OBJ, PLY, WRL, STL, AOP, ASCII и др. Следует подчеркнуть, что после 3D­сканирования в распоряжении инженера имеется только полигональная модель. Это очень важный момент, поскольку он существенно влияет на дальнейшие процессы обратного инжиниринга.

    Дело в том, что реальное 3D­сканирование никогда не даст идеального результата, и причины тут могут быть разными. В частности, есть проблемы со сканированием внутренних карманов. На рис. 1 в качестве примера показана сеточная модель с такими недостатками.

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

    Необходимость доработки фасетной модели возникает не только из­за погрешностей сканирования. Редактирование может понадобиться в связи с модификацией детали, внесением каких­то изменений в конструкцию. Этим фактом обусловлена одна из сложностей обратного инжиниринга, поскольку большинство САПР работают с точным (BREP), а не с фасетным представлением.

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

    Первой из таких систем стала Solid Edge® ST10 компании Siemens PLM Software. В ней была впервые использована технология объединенного моделирования с одновременным применением BREP и фасетного представления в одной и той же модели. В результате этап редактирования модели стал выглядеть так, как показано на схеме, приведенной на рис. 2.

    В Solid Edge ST10 редактирование фасетной модели сводится к применению привычных инструментов проектирования для работы с BREP­представлением.

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

    Если принтера нет, то можно воспользоваться встроенным интерфейсом онлайн­сервиса 3D­печати 3YOURMND. Здесь есть возможность выбрать поставщика с нужным материалом и цветом печати, подходящей оплатой и сроками поставки. Изготовленная деталь будет получена почтой, и на этом цикл обратного инжиниринга можно считать законченным.

    В описании процессов обратного инжиниринга акцент делается на аддитивные технологии как наиболее быстрые, удобные и перспективные. Однако это не значит, что здесь не могут быть использованы традиционные способы обработки металлов. После того как получена точная модель, для подготовки производства достаточно воспользоваться САМ­приложением. Таким образом, современный обратный инжиниринг позволяет быстро получать цифровые модели физических объектов, а затем создавать их дубликаты с помощью всех доступных технологий.

    По материалам компании Siemens PLM Software

    Персональные инструменты

    Reverse engineering – исследование некоторого готового устройства или программы, а также документации на него с целью понять принцип его работы. Фактически Reverse engineering заключается в процессе разбора приложения с целью понять, как оно работает, чтобы в будущем воссоздать этот процесс с внесением необходимых изменений. Обычно для этих целей используются отладчик и ассемблер. В зависимости от качества используемого программного обеспечения будут отличаться результат и количество времени, которое необходимо потратить на его приведение в нормальный вид.

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

    Содержание

    Существуют следующие виды реверс-инжиниринга:

    1. Реверс-инжиниринг программного обеспечения — это когда постигают суть неведомой программы с закрытым исходным кодом. Процесс нередко происходит с применением специализированного софта: декомпиляторов, отладчиков, дизассемблеров, распаковщиков и прочих хитрых инструментов.
    2. Реверсинг «железок» — определение структуры и спецификаций устройства. Создание альтернативных драйверов, а ещё «прошивки», которые иногда хочется менять и переделывать под свои цели. [Источник 2]

    Безопасность

    Если нужна защита от реверс-инжиниринга, то в таком случае есть два варианта: использование специальных программ или создание кодовой конструкции, которая будет мешать совершать разбор написанного. Последний вариант подходит исключительно опытным специалистам. Для Android- приложений в качестве специализированного программного обеспечения используется ProGuard. Это приложение, которое используется для сокращения, обфускации и оптимизации кода. Если программу «прогнать» через него, то получим файл с расширением *.apk меньшего размера, чем он был. В таком случае его будет значительно сложней разобрать. Причем преимуществом данной программы является то, что она даже была внедрена в систему сборки Android-приложений с обновления r9. Поэтому воспользоваться ею может любой разработчик, который имеет стандартные инструменты создания и разработки.

    Читайте также:  Как можно создать музыку

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

    • Включить проверку в цикл выполнения (run loop), так что проверка будет выполняться постоянно.
    • Поставить проверку в наиболее критичных участках кода, где нас больше всего волнует безопасность.

    Первый вариант обычно нежелателен. Его цена — трата драгоценного процессорного времени. [Источник 3]

    Сферы применения

    Машиностроение, автомобилестроение, авиация

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

    • Советский грузовик АМО-3 был практически полной копией американского грузовика «AutoCar-SA».
    • Советский лодочный мотор «Москва» был практически полной копией очень удачного американского мотора ScottAtWater.
    • Пример неудачного выбора прототипа для обратной разработки — советский лодочный мотор «Вихрь», копия немецкого мотора Koening.
    • Советский самолет Ту-4, за исключением двигателей, является почти точной копией американского Boeing B-29 Superfortress.
    • Практически все бензиновые двигатели, установленные на мотоблоках, генераторах и других малогабаритных машинах китайского производства — копии японских моторов Honda GX.
    • Знаменитые японские АКПП Aisin A130 и A140 — несколько доработанные нелицензионные копии АКПП Chrysler 1940—1950-х годов, которые производились американской компанией на заводах в Японии после Второй мировой войны.
    • Первые китайские внедорожники Admiral, Great Wall и другие — нелицензионные практически точные копии внедорожника Toyota Hilux Surf.

    Электроника

    Обратная разработка электронных устройств появилась ещё на заре радиотехники. В 1920—1930 годах различные фирмы копировали друг у друга радиолампы и схемотехнические решения их применения. Именно с обратной разработкой, а не с лицензионным производством, связано то, что радиолампы одного назначения почти всех производителей оказались унифицированными и взаимозаменяемыми. Например европейская лампа EL95 клон более ранней американской лампы 6KA5. Есть и обратные примеры: американские 6CA5 и KT88 — клоны европейской лампы EL34. То же самое относится и к советским радиолампам, многие из которых являются клонами американских ламп, получаемых по ленд-лизу (например 6Ж4, 6П9) или немецких из трофейной аппаратуры (6Г2, ГУ50). Вместе с лампами копировались и типовые схемы их включения, то есть фактически схемы блоков радиоаппаратуры. Поэтому именно благодаря обратной разработке ламповая эпоха охарактеризовалась по сути переходом к типовому проектированию в электронике. В частности, все выпускаемые в мире бытовые приемники-супергетеродины строились фактически по трем схемам, которая определялась лампой смесительно-гетеродинного узла: двойной триод, триод-гептод или пентагрид. То же самое относилось и к усилителям низкой частоты. Существовало не более десятка типовых схем их построения в зависимости от выходной мощности: маломощные однотактные на комбинированной лампе типа 6Ф3П, маломощные однотактные с темброблоком на двойном триоде (типа 6Н1П) и выходном пентоде (6П14П, EL84) или лучевом тетроде (6П3С, EL34), двухтактные с триодным фазоинвертором (6Н1П + 2х6П14П), двухтактные многокаскадные (6Н8П + 2х6П6С + ГУ50). Черно-белые телевизоры и вовсе строились по одной-двум схемам. Примеры:

    • Копирование различных электронных блоков без фактической разработки. Известно, что многие элементы, в частности, ТТЛ различных компаний и национальных стандартов, взаимозаменяемы. Например, американская серия интегральных схем 7400 и её советский аналог К(Р)155.
    • Процессор Am386 компании AMD создан ради совместимости с чипом 80386 фирмы Intel и в пользу экономической целесообразности.
    • Процессоры Super386 38600SX и 38600DX компании Chips and Technologies созданы методом ОР.

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

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

    Читайте также:  Плохо ловит цифровое телевидение

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

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

    Обратная разработка программного обеспечения производится с помощью следующих методик:

    • Анализ обмена данными, наиболее распространённый в обратной разработке протоколов обмена данными, который производится с помощью анализатора шины и пакетного сниффера для прослушивания шины компьютера и компьютерной сети соответственно.
    • Дизассемблирование машинного кода программы для получения её листинга на языке ассемблера. Этот способ работает на любой компьютерной программе, но требует достаточно много времени, особенно для неспециалиста.
    • Декомпиляция машинного или байт-кода программы для создания исходного кода на некотором языке программирования высокого уровня.

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

    Базы данных

    Reverse engineering на примере Android

    Декомпиляция

    Этот процесс будет проводиться с использованием программы Apk Manger. Прежде чем приступать к работе, необходимо убедиться, что есть нужные драйверы для работы девайса, а также функционирует режим USB-debugging. Первоначально необходимо будет переместить файл, который будет разбираться в директиву apk_managerplace-apk-here-for-modding. После этого следует запустить Script.bat. Если никаких проблем нет, то запуститься консоль. Надо выбрать пункт номер девять – «Декомпилировать». После того как будет запущен процесс, необходимо не закрывать консоль. Потом следует открыть интересующий apk-файл с помощью архиватора и извлечь из него classes.dex, который нужно обработать программой dex2jar. Для необходимого нам результата его надо переместить на объект с расширением .bat. Появится файл, который будет заканчиваться на .jar.

    Анализ данных

    Чтобы получить информацию о приложении, необходимо открыть его манифест. По нему определяется, что выступает в роли главной активности. Она-то и представляет наибольшую важность. Необходимо проверить наличие информации о менеджере лицензий, если она есть, то это существенно усложнит проведение реверсного инжиниринга. Если переключиться на jd-gui и развернуть дерево, то появится несколько пространств имён. Необходимо зайти в пространство имен, в котором находятся необходимые данные. Здесь необходимо найти и удалить ключ, а потом и остальные строки, которые проверяют, является ли лицензионной работающая версия. Потом в Apk Manager ищем место, куда указано размещать байт-код. После этого осталось только скомпилировать программу.

    Сборка приложения

    В этом поможет всё тот же Apk Manager. В окне консоли выбираем пункт №14. Далее дело техники. Если приложение довольно сложное, то при запуске оно может частично или полностью потерять свою работоспособность. Сказать, что нужно делать в конкретном случае, общими словами невозможно, поэтому искать проблемное место придётся самостоятельно. Так, если окно приложения блокируется всплывающим окном, то необходимо просмотреть код и удалить ту его часть, что отвечает за данный диалог. Помочь с этим сможет jd-gui. Реверсный инжиниринг не является лёгким делом, и он требует наличия значительного багажа знаний. Даже если всё без проблем запустилось, необходимо будет протестировать работоспособность приложения. То есть реверс-инжиниринг является ещё затратным по времени действием. Необходимо продолжать работать, пока не будут выявлены все проблемы.

    Ссылка на основную публикацию
    Что такое asus vibe
    Файл asusvibe2.0.exe из ASUSTeK Computer Inc является частью AsusVibe2 0. asusvibe2.0.exe, расположенный в c:program files (x86)asusasusvibeasusvibe2.0.exe с размером файла 924336...
    Что делать если виснет браузер
    Автор Юрий Белоусов · 18.03.2019 Пользователи могут столкнуться с неприятной ситуацией, когда браузер Опера зависает, виснет, подвисает, тормозит, лагает, глючит....
    Что делать если винда 10 не запускается
    В нашей сегодняшней статье будет рассмотрен ряд случаев, связанных с отказом запуска операционной системы Windows 10 на компьютере или ноутбуке....
    Что такое elm agent на андроид
    Практически каждый пользователь мобильных устройств, рано или поздно, пытается разобраться в настройках, просматривать установленные приложения и сервисы. При просмотре списка...
    Adblock detector