Обычное дело: мы используем cookie. Здесь можно узнать зачем
Хорошо
  • /
  • /

Реверс-инжиниринг электронных устройств: теория, практика, правовой аспект

В последнее время мы видим возросший интерес со стороны заказчиков к проектам по обратной разработке существующих решений. Поэтому в этой статье мы решили подробно рассказать о том, что такое реверс-инжиниринг, в каких случаях он может быть полезен, какова процедура воспроизведения устройства и какие существуют подходы к этой практике. Также затрагиваем правовые аспекты обратного проектирования
Из-за санкций и ограничений на импорт технологий и комплектующих в России стал как никогда актуален обратный (реверс) инжиниринг. Обратная разработка помогает обеспечить быстрое и эффективное импортозамещение, а также восстановить собственные технологические цепочки. Правительство финансирует такие проекты с 2022 года, а в ближайшие два года Агентство по технологическому развитию выделит на проекты обратного инжиниринга 25,7 млрд рублей.

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

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

Что такое реверс-инжиниринг? Цели и сферы применения.

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

Конечная цель такого исследования может быть разной:
1. Выявить и устранить неисправность в оборудовании, если техподдержка поставщика недоступна.
2. Восстановить утраченную документацию на старое оборудование, чтобы модернизировать его или возобновить производство.
3. Обеспечить совместимость программы с собственным оборудованием пользователя.
4. В области информационной безопасности изучение вредоносного ПО помогает создавать антивирусы.
5. Сделать копию существующего продукта или его улучшенный аналог.

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

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

Обратное проектирование: этапы

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

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

Еще одна сложность заключается в том, что у компонентов может отсутствовать маркировка. Если, например, у резистора не подписан номинал, то его сопротивление можно измерить с помощью инструментов. А если речь идет о микросхеме со спиленным идентификатором, то сначала восстанавливается электропроводящий рисунок, на схеме размещаются компоненты – как известные, так и неизвестные. Затем на основе логики схемы специалист может предположить, что за компонент стоит в данном месте. Это сужает круг поисков. Затем можно найти в онлайн-каталогах микросхему, идентичную по предполагаемому функционалу, форме корпуса и количеству пинов.
Фотография печатной платы с двумя микросхемами, у которых удалена маркировка.
Здесь отчетливо видно, что на двух микросхемах маркировка была удалена, чтобы защитить устройство от копирования. Фотографию опубликовал пользователь Reddit, который просит помощи в опознании компонентов.
Источник: https://clck.ru/3PUUiF
Впрочем, на некоторых платах используются микросхемы, изготовленные под заказ только для данного устройства. Такое, например, встречается в продукции Siemens. В этом случае потребуются очень дорогостоящие процедуры и оборудование, что ставит под сомнение экономическую целесообразность проекта.
2. Удаление компонентов и исследование слоев
Если плата сложная или многослойная, сначала с нее аккуратно отпаиваются все компоненты. Затем инженеры сканируют плату с обеих сторон, чтобы получить высокоточное изображение электропроводящего рисунка.

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

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

Мы осмотрели ее, сняли компоненты и измерили характеристики некоторых из них. Воспроизводить встроенное ПО не требовалось, т.к. весь нужный функционал уже содержался в специализированном микроконтроллере. Затем воссоздали топологию платы в Altium Designer, заказали прототип на фабрике и получили точную копию устройства.
4. Реверс-инжиниринг программного обеспечения
На этом этапе команда должна сделать копию прошивки. Для этого бинарный код необходимо сначала извлечь из микроконтроллера, что далеко не всегда возможно. Если это удается, то инженеры получают бинарный файл прошивки, в котором данные представлены в виде машинного кода, т.е. нулей и единиц.

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

Другой способ – декомпиляция, которая позволяет получить код на исходном языке программирования (обычно более высокого уровня абстракции). Программы, написанные на некоторых языках (например, C), восстанавливаются довольно точно. Но в некоторых случаях преобразованный код все равно остается “сырым” и требует дальнейшего изучения, хотя это и несколько проще, чем работать с ассемблерным кодом.

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

Поскольку реверс-инжиниринг программы сложен и требует много времени, чаще всего быстрее и проще написать прошивку с нуля, приняв во внимание функционал воспроизводимого устройства. Приведем два примера.
Пример 1: USB-перехватчик ввода
В линейку продуктов заказчика входили кейлоггеры – устройства, которые устанавливаются в клавиатуры для защиты и резервного хранения корпоративных данных. Его изделия предназначались для клавиатур с разъемом PS/2. Однако в какой-то момент стали популярны USB-клавиатуры, и на рынке появились совместимые с ними перехватчики ввода. Клиенту потребовалось как можно быстрее разработать собственный аналог такого кейлоггера, поэтому он поручил КЕДР Solutions воспроизвести одно из конкурирующих решений.
Кейлоггер для защиты корпоративных сведений и резервного хранения данных, созданный командой КЕДР Solutions.
Схемотехника устройства оказалась довольно простой, но, по-видимому, была сильно привязана к прошивке, извлечь которую было невозможно. В такой ситуации копировать “железо” не было необходимости: дешевле было сделать все самим. Поэтому от идеи реверс-инжиниринга мы решили отказаться. Вместо этого схемотехнику и ПО команда разработала с нуля – кроме переключения режимов, которое в оригинале было реализовано удачно. В итоге необходимый функционал был создан без копирования готовых решений.
Пример 2: Контроллер электродвигателя постоянного тока
Заказчик проекта занимается роботами бытового и игрового назначения, а также предлагает комплекты с компонентами, из которых покупатели могут собирать роботов самостоятельно. Но в его линейке не было контроллера электродвигателя. Чтобы повысить свою конкурентоспособность, клиент заказал у нас разработку такого устройства.

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

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

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

Сказанное выше применимо не только к встроенному программному обеспечению, но и к реверс-инжинирингу приложений для ПК и смартфонов, хотя здесь есть свои нюансы. Все во многом зависит от того, на каком языке была написана программа. Некоторые языки позволяют восстановить код без серьезных изменений – например, C# или Java. Если же ПО написано на C или С++, потребуется практически тот же подход, что и при исследовании прошивки.
5. Воспроизведение и тестирование печатной платы
На этом этапе обратного проектирования инженеры воссоздают топологию платы и изготавливают прототип. Эта часть процесса похожа на обычную разработку с той лишь разницей, что за основу берется уже готовый образец. Затем прототип тестируется, чтобы убедиться, что продукт обладает требуемыми функциями и характеристиками.

Копирование или переосмысление?

Можно выделить два подхода к реверс-инжинирингу электроники, ПО или любого другого продукта:

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

С другой стороны, у такой обратной разработки есть ряд недостатков. Главный из них заключается в том, команда вынужденно воспроизводит все изъяны исходного решения. К тому же, устройство, которое хочет скопировать заказчик, скорее всего, уже устарело. От постановки задачи до выхода на рынок проходит много времени. В итоге даже относительно новому решению по факту может быть 5 или даже 10 лет. Так что чистая обратная разработка не всегда оправдана. Кроме того, оригинальные компоненты могут оказаться недоступны, либо их невозможно идентифицировать, или невозможно извлечь и скопировать прошивку. Так что чистое копирование может оказаться не слишком полезно, а трудозатраты – слишком высокими. Наконец, точное копирование зачастую является незаконным.

Переосмысление. Этот подход предполагает, что, обратившись к КЕДР Solutions за реверс-инжинирингом печатных плат, заказчик получит аналог исходного решения, в котором будут устранены недостатки оригинала. Полученное в результате устройство будет более современным, и оно будет лучше отвечать требованиям бизнеса. Мы чаще всего практикуем именно этот подход.

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

В качестве примера приведем проект по разработке контроллера для промышленных газовых горелок.

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

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

В числе собственных решений:
  • Методика измерения тока ионизации пламени.
  • Непрерывный мониторинг тока нагрузки в реальном времени (что повышает безопасность работы с устройством).
  • Иначе реализован контроль залипания реле.
  • Встроенное ПО, которое было разработано на инструментарии заказчика для совместимости решения с его программной экосистемой.

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

Юридический аспект реверс-инжиниринга в России

Любая оригинальная разработка, будь то электронное устройство или программа, является объектом интеллектуальной собственности. В Российской Федерации эта сфера регулируется Частью 4 Гражданского кодекса, в частности, главой 72 (патентное право) и статьей 1280 (право пользователя программ), а также федеральными законами “О коммерческой тайне” и “Об информации, информационных технологиях и о защите информации”. Кроме того, пользовательские соглашения обычно содержат пункт о запрете на декомпилирование программ.

Обратите внимание, что программное обеспечение можно запатентовать только в США. В других странах, в том числе в России, программы являются объектом авторского права.

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

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

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

Стоит отметить и неоднозначное отношение властей к обратному инжинирингу в России.

На фоне мощного санкционного давления правительственные круги склонны поддерживать обратную разработку иностранной техники, электроники и ПО. В Госдуму даже внесли законопроект о легализации клонирования зарубежных разработок. Сторонники этой идеи аргументируют ее тем, что недружественные страны наложили на Россию более 15 пакетов санкций (16 со стороны США и 18 со стороны ЕС), а западные компании первыми нарушили свои обязательства. И в этих обстоятельствах они не вправе жаловаться. Наконец, на кону стоит благополучие целых отраслей экономики.

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

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

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

Заключение

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

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

Если перед вашей компанией стоит  задача разработки собственного электронного устройства или вы стремитесь создать улучшенный аналог существующего продукта, команда КЕДР Solutions готова предложить профессиональные услуги по реверс-инжинирингу электроники “под ключ”. Обратитесь к нам, чтобы получить качественный продукт, полностью адаптированный под задачи вашего бизнеса.
Другие статьи