сделано у нас
Interior Design

Внутренние двери из восстановленной древесины

Construction Excavator Wooden House Interiors Log Cabin Building Site
лучшее

Последние посты

Что такое обратный инжиниринг: глубокий анализ и применение

Реверс-инжиниринг или обратный инжиниринг - это метод проектирования, основанный на копировании готового образца. Это процесс разработки конструкторской документации (КД) и/или 3D модели изделия на основе готового образца изделия.

Обратный инжиниринг

Основная цель реверс-инжиниринга - получить готовый комплект конструкторской документации (чертежи изделия, спецификации и 3D модели) на готовое изделие в минимально возможные сроки.

Суть и задачи обратного инжиниринга

Реверс-инжиниринг - это не просто банальное копирование или промышленный шпионаж. Это скорее метод изучения и улучшения, внедрение инноваций. Самый простой ответ: не всегда нужно изобретать велосипед.

Целью реверс-инжиниринга является создание конструкторской документации для дальнейшего производства аналогов. Данная технология позволяет избежать этапа начальной разработки и дает возможность ускоренного и бюджетного воссоздания моделей без прямого копирования и нарушения авторских прав.

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

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

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

Реверс-инжиниринг - это не только сфера больших корпораций или военных разработок. Это явление можно встретить даже в обычной жизни. Возьмем, к примеру, ремонт автомобиля. Когда механик видит неисправный двигатель, он по сути занимается обратным инжинирингом. Или, например, хакеры, которые взламывают программы и системы безопасности. Они изучают код, чтобы понять, как всё работает, а затем находят уязвимости или создают свои версии программного обеспечения.

  • Анализ вирусов и поиск уязвимостей. Специалисты по кибербезопасности уже давно применяют методы ревёрс-инжиниринга, чтобы анализировать вредоносное ПО.
  • Разработка модов для игр. В геймдеве обратная разработка позволяет создавать модификации для игр и изменять игровой процесс: добавлять новые функции и контент.
  • Изучение старых технологий. Бывает, что оригинальная документация для приложений утеряна или что программа написана для старых компьютеров, которые больше не производятся.

Преимущества обратного инжиниринга

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

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

Вы можете создавать запасные детали, соответствующие оригинальному дизайну поврежденных существующих деталей.

Сокращение затрат - снижение стоимости изготовления изделий, при производстве партиями или сериями, за счёт локализации производства, оптимизации логистики и др.

Этапы обратного инжиниринга

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

Для обратного проектирования, ключевой является технология 3D-сканирования, переводящая геометрию деталей в трехмерную модель (STL файл). Точность определения геометрии зависит от характеристик сканера и опыта инженера-проектировщика, отвечающего за доработку 3D модели под нужные допуски и требования КД.

Этапы обратного инжиниринга

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

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

При необходимости для подтверждения технических параметров, далее необходимо изготовить опытный образец и провести испытания для подтверждения всех технических параметров. Альтернативный вариант, используя разработанную 3D модель изделия, произвести расчеты в системе инженерного анализа (CAE-система). Результаты расчета помогаю определить недостатки конструкции изделия и оперативно внести изменения, а также подтвердить технические характеристики.

Этапы ревёрс-инжиниринга программного обеспечения

  1. Провести предварительное исследование. Сначала нужно внимательно изучить программу: понажимать все кнопки, попользоваться всеми функциями. Это поможет составить цельную картину того, как работает приложение.
  2. Начать разборку, или демонтаж. Теперь мы должны заглянуть внутрь программы и посмотреть, как она устроена. Для этого как раз применяем один из способов обратной разработки, а затем изучаем полученный код.
  3. Провести анализ. Когда мы разобрались, какие в программе есть алгоритмы и структуры данных, пора собирать всё воедино. Мы изучаем все части и пытаемся понять, как они работают вместе. Например, смотрим, в какой последовательности выполняются методы в коде и как приложение взаимодействует с внешней средой.
  4. Создать документацию. После того как мы со всем разобрались, пора документировать функциональность. Нужно записать, что делают функции, какие переменные они принимают и куда отправляют данные. Ещё раз напомним, что процесс может занять много времени. А чтобы понять, как работает программа, нужно иметь опыт программирования - иначе будет сложно.

Обратный инжиниринг в контексте импортозамещения

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

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

Мы решаем задачи замещения импортного электронного оборудования и программного обеспечения аналогами, участвуем в создании отечественных аналогов плат управления, программного обеспечения, микросхем, электронных компонентов, блоков управления, промышленных контроллеров и т. д.

Мы выполняем полный цикл импортозамещения электронного оборудования:

  • Анализируем и разрабатываем аналоги схемотехники и аппаратных блоков.
  • Разрабатываем аналоги аппаратуры на российской компонентной базе.
  • Снимаем блокировки и систему защиты.
  • Создаем аналоги программного обеспечения.

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

Как происходит обратная разработка программного обеспечения

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

  1. Перевести бинарный файл в код на языке высокого уровня. Для этого существуют специальные программы - дизассемблеры.
  2. Перевести бинарный файл в код на языке ассемблера. Ассемблер - язык чуть более высокого уровня, чем машинный код, но гораздо более низкого, чем привычные нам JavaScript и Python. Чтобы прочитать код, написанный на ассемблере, нужно разбираться в том, как устроен процессор, какие команды он использует и как вообще работает.
  3. Изучить, какие данные программа пересылает по Сети или внутри компьютера. Обычно программы обмениваются данными по интернету или внутри операционной системы. Например, существует сетевой анализатор, встроенный прямо в Google Chrome. Это файлы, которые скачивает браузер при открытии Skillbox Media.

Теперь, когда мы знаем основные способы обратной разработки, давайте перейдём к самому процессу - этапам ревёрс-инжиниринга.

Пример обратной разработки в программе IDA Pro

Допустим, вы решили попробовать себя на нелёгкой стезе ревёрс-инжиниринга. Программ для ревёрс-инжиниринга достаточно. Некоторые из них могут быть вам знакомы - например, Cheat Engine. Давайте в качестве примера покажем, как выглядит обратная разработка в программе IDA Pro.

  1. Открываем программу IDA Pro и видим первый экран. Видите - ничего сложного пока нет.
  2. Дальше нам нужно загрузить файл в программу. На выбор есть два варианта - формат DLL или бинарный файл. Остальные настройки оставьте по умолчанию.
  3. Готово - вот как выглядит наш дизассемблированный файл. Сначала мы попадаем на вкладку «IDA View-A». Это место, где находится код языка ассемблера нашей переведённой программы. Если приглядеться, то можно увидеть строчку lea rdx, _Val ; "Hello, World". Она показывает, что мы что-то делаем со строкой «Hello, World» - а точнее, пытаемся вывести её в консоль. Но это очевидно для нас, потому что программа простая.
  4. Это вкладка «Hex View 1». Тут дизассемблированный код представлен в виде шестнадцатеричных - то есть понятных для компьютера - символов.
  5. Кстати, обратите внимание на функции слева. Например, по этим функциям можно понять, какие системные вызовы делает программа. Здесь можно подробнее исследовать, как устроены структуры данных в программе. Например, тут показано, какие классы вызываются, какие типы переменных они используют и какие исключения обрабатывают.

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

Предостережения и законность

❗️ Хотим напомнить, что пиратство в России незаконно. За него суд может назначить штраф до 200 тысяч рублей, до двух лет исправительных работ или лишить свободы на срок до двух лет. А за распространение, использование и создание вредоносного ПО - до семи лет.

Лучше всего изучить обратную разработку на своих проектах или решать задачи на специальных сайтах - например, на Crackmes.

Как работает обратный инжиниринг: от сканирования до готовой 3D-модели