Реверс инжиниринг (так же обратный инжиниринг, реинжиниринг, обратное проектирование, обратный инжиниринг, реверсивная разработка, реверсинг, обратная разработка) — это процесс исследования детали, прибора или программного обеспечения, при котором можно добиться близкого, по сути, технического решения. Вопреки распространённому мнению используется в подавляющем числе случаев при создании или разработки различных устройств, механизмов и систем. Применяется в большинстве высокотехнологичных отраслей промышленности, медицины, науке, ритейле, логистики, потребительской и бытовой технике.
Активно используется как крупным бизнесом в высокобюджетных и высокозатратных проектах, так и небольшими компаниями, ищущими замену детали для снятого с производства продукта. Зачастую реверс инжиниринг воспринимается бизнесом как быстрый и низкозатратный способ при разработке, что на практике разбивается о суровую реальность. Попробуем разобраться в видах, особенностях и рисках реверс инжиниринга и его полезности. Беглый поиск показывает, что на рынке существует не так много видов реверс инжиниринга. Все они так или иначе связанны с попыткой создать копию продукта. Большинство подходов позволяет получить близкий аналог или скорее реплику. Но чаще всего на практике это реплика служит базой для дальнейшей самостоятельной разработки, позволяя лишь сократить время на рутинные операции.
3Д сканирование
Как понятно из названия суть метода сводится к объемному сканированию объекта для получения довольно грубой 3Д модели или облака точек. Разумеется, этот метод не подходит для сканирования электроники или программного обеспечения и используется исключительно для корпусных элементов, несложных механических узлов и деталей. Для работы используют 3Д камеры позволяющие получить на выходе поверхностную 3Д модель сканируемого объекта.
Как сказано выше, на практике модель получается довольно низкого качества с далекими от сканируемого продукта характеристиками. Чаще всего такая модель доводится и детализируется инженером, в исчезающе редких и исключительных случаях проводится химический анализ детали, расчеты на прочность итд.
Подход безусловно хорош для сканирования небольших и простых деталей, но является полностью бесполезным если сканируемым объектом является крупный или что важнее конструктивно сложный объект.
Например, деталь с большим количеством полостей придется либо «распилить», дабы сканер смог добраться внутрь, либо отрисовать эти полости вручную. В большинстве своем используется бизнесом связанным с 3Д печатью, модельными мастерскими и производственными микропредприятиями. В более-менее крупных и серьёзных разработках метод не используется или его роль сводится к небольшой помощи конструктору на старте.
Не редко можно встретить большие и «честные» статьи, где 3Д сканирование является панацеей для импортозамещения или точного копирования. На практике этот метод позволяет получить приблизительную 3Д модель с целым ворохом дополнительных затрат. К примеру, первично получив 3Д модель (а вернее облако точек) производится ее «доводка» в CAD программе вручную или с использованием ИИ. После чего модель (далеко не всегда) исследуется на механические, динамические и пр. характеристики. В еще более редких сценариях проводится химические исследования материалов и практически никогда не моделируется работа полученной модели в составе всего устройства. Другими словами, получается работа вслепую с минимальной гарантией результата.
Безусловно 3Д сканирование имеет право на жизнь как небольшой трюк при разработке продукта, позволяющий сэкономить время. Но далеко не всегда, а скорее практически никогда не дающий прогнозируемое качество результата. Смело можно использовать для простейших конструкций и отдельных деталей и точно не нужно рассчитывать на него при сложной комплексной разработке.
Реверс инжиниринг электроники
Довольно спорный и малопонятный конечному обывателю процесс. Электронная плата является «главным мозгом» любого прибора или оборудования, которое вы можете вообразить от станка до умной пепельницы. Как правило такая плата умеет общаться с внешним миров через сотовую сеть или передавать данные по Bluetooth или wi-fi. К ней могут подключаться внешние элементы вроде датчиков, дисплея, других более простых плат и систем питания. Разумеется, в мире электроники разновидностей электронных плат великое множество, встречаются более сложные (многослойные платы), выполняющие большой объем операций, бывают специализированные платы для промышленных устройств со своим стандартом связи и повышенной надежностью, одновременно с этим существуют довольно производительные решения вроде материнских плат для смартфонов или носимой электроники.
Как и большинство технологически сложных вещей, электронная плата состоит из нескольких ключевых «зон», которые можно или нельзя подвергнуть реверс инжинирингу. Текстолит – то самое зеленое основания с разведенными дорожками и посадочными местами куда припаиваются радиоэлементы. Для того чтобы создать копию текстолита существует два сценария.
Рентгеноскопия многослойных печатных плат
В первом случае текстолит очищается от радиоэлементов и подвергается рентген анализу. С помощью этого нехитрого метода видны все дорожки, посадочные места и переходные отверстия на плате.
Для многослойных плат ситуация осложняется так как такая плата представляет собой сэндвич из нескольких слоев, каждый из которых несет на себе отдельные дорожки. В ход вступают более сложные аппараты для рентгеноскопии с довольно производительным программным обеспечением на борту.
Так или иначе указанный метод помогает неплохо сэкономить и самое главное получить довольно точные снимки, по которым можно воссоздать печатную плату. Это не сильно дорогостоящая, но тем не менее удобная операция.
Разработка трассировки вручную
Во втором случае вручную изучают печатную плату под микроскопом проверяя все соединения. Самый популярный, удобный, но довольно долгий вариант, подходящий для плат низкой и средней степени сложности. Прелесть этого подхода в том, что инженер перед непосредственной разработкой печатной платы создает набор электрических схем (Э1,Э2,Э3) досконально разбираясь в принципе работы платы, что положительно сказывается на качестве итоговой работы.
Оба описанных сценария позволяют получить полную или близкую копию печатной платы, однако надобность этого мероприятия напрямую определяется главным – невозможностью копирования встроенного программного обеспечения печатной платы. Другими словами, вы получаете копию платы с «пустым мозгами»
Реверс инжиниринг встроенного программного обеспечения печатной платы (прошивки)
По своей сути самый главный критерий, определяющий надобность всех остальных мероприятий. Для начала нужно понимать главное – во всех без исключения случаях программное обеспечение надежно защищено от копирования. Для этого существуют аппаратные и программные защиты, встроенные в микроконтроллер. В случае с печатными платами, встроенное программное обеспечение (прошивка) полностью определяет тип и соединения большинства периферии, содержит в себе отдельные библиотеки для работы всего устройства, а иногда и собственную операционную систему.
Как правило разработка программного обеспечения под готовую плату, полученную вышеописанными методами, не сильно сокращает срок и стоимость, так как приходится разбираться в устройстве копируемого образца, что примерно эквивалентно разработке с нуля. Тем не менее существует пара вариантов копирования встроенного ПО.
Дизассемблирование прошивки
Простыми словами это процесс обратного преобразования машинного кода (двоичного файла прошивки) в удобочитаемый язык ассемблера. Другими словами, это декомпиляция прошивки, при которой исполняемый код преобразуется в текст на языке ассемблера, который представляет собой более низкоуровневый язык программирования, чем высокоуровневые языки, такие как C или C++. Этот процесс позволяет разработчикам понять логику работы прошивки, а также выявить ошибки или уязвимости. Спорный и довольно ненадежный метод, который на практике приводит к еще более высоким затратам нежели разработка с нуля.
Аппаратная разблокировка
Еще более экстравагантный и недоступный большинству метод, при котором микроконтроллер «пережигается» на специальном оборудовании, тем самым открывая возможность копирования встроенного ПО. Повторюсь крайне затратный и на наш взгляд не нужный вариант.
Реверс инжиниринг с чего начать
На наш взгляд самое главное в реверс инжиниринге - не пытаться делать копию продукта. Нет никакого практического смысла копировать большинство технологически сложных решений, т.к. человеческие, финансовые и репутационные затраты соизмеримы с разработкой аналогичного продукта. А риски того, что копия будет работать так же, как оригинал огромны. Об этом умалчивают в большинстве статей пытаясь выставить реверс инжиниринг как панацею при разработке.
В большинстве своем реверс инжиниринг может быть неплохой отправной точкой, например заменить шестеренку в снятом с производства оборудовании или создать собственную плату управления для вышедшего из строя дорогостоящего прибора. Действительно подавляющее большинство разработок начинается с изучения референсов, примеров конкретных технических решений для того, чтобы создать лучший или близкий аналог со своим дизайном и фишками. Используя реверс инжиниринг как один из, но далеко не главный инструмент можно получить действительно хорошее решение для любой инженерной задачи.