Обратный инжиниринг - Reverse engineering

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

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

Обзор

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

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

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

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

Есть и другие варианты использования обратного инжиниринга:

  • Интерфейс . Обратный инжиниринг может использоваться, когда система должна взаимодействовать с другой системой, и необходимо установить, как обе системы будут согласовывать друг друга. Такие требования обычно существуют для взаимодействия .
  • Военный или коммерческий шпионаж . Получение информации о последних исследованиях противника или конкурента путем кражи или захвата прототипа и его демонтажа может привести к разработке аналогичного продукта или более эффективному противодействию ему.
  • Устаревание . Интегральные схемы часто проектируются на основе патентованных систем и строятся на производственных линиях, которые устаревают всего за несколько лет. Когда системы, использующие эти части, больше не могут поддерживаться, поскольку части больше не производятся, единственный способ включить функциональность в новую технологию - это перепроектировать существующий чип, а затем перепроектировать его с использованием новых инструментов, используя понимание, полученное как Руководство. Еще одна проблема, связанная с устареванием, которая может быть решена с помощью обратного проектирования, - это необходимость поддержки (обслуживания и поставки для непрерывной работы) существующих устаревших устройств, которые больше не поддерживаются производителем оригинального оборудования . Проблема особенно остро стоит в условиях боевых действий.
  • Анализ безопасности продукта . Это исследует, как работает продукт, определяя спецификации его компонентов и оценивая затраты, и выявляет потенциальные нарушения патентных прав . Также частью анализа безопасности продукта является сбор конфиденциальных данных путем разборки и анализа конструкции компонента системы. Другой целью может быть снятие защиты от копирования или обход ограничений доступа.
  • Конкурентная техническая разведка . Это необходимо для понимания того, что на самом деле делает конкурент, а не того, что он говорит о том, что делает.
  • Экономия денег . Выяснение того, на что способна электроника, может избавить пользователя от покупки отдельного продукта.
  • Перепрофилирование . Устаревшие объекты затем повторно используются другим, но полезным способом.
  • Дизайн . Производственные и проектные компании применили реверс-инжиниринг к практическому ремесленному производственному процессу. Компании могут работать над «историческими» производственными коллекциями с помощью 3D-сканирования, 3D-моделирования и редизайна. В 2013 году итальянские производители Baldi и Savio Firmino вместе с Университетом Флоренции оптимизировали свои инновации, дизайн и производственные процессы.

Общие ситуации

Машины

По мере того как автоматизированное проектирование (САПР) становится все более популярным, обратное проектирование стало жизнеспособным методом создания трехмерной виртуальной модели существующей физической детали для использования в трехмерном САПР, CAM , CAE или другом программном обеспечении. Процесс обратного проектирования включает в себя измерение объекта и последующее его восстановление в виде 3D-модели. Физический объект можно измерить с помощью технологий 3D-сканирования, таких как КИМ , лазерные сканеры , дигитайзеры со структурированным светом или промышленное компьютерное сканирование (компьютерная томография). Одни только измеренные данные, обычно представленные в виде облака точек , не имеют топологической информации и конструктивного замысла. Первое можно восстановить, преобразовав облако точек в сетку с треугольными гранями. Обратное проектирование направлено на то, чтобы выйти за рамки создания такой сетки и восстановить замысел проекта в терминах простых аналитических поверхностей, где это необходимо (плоскости, цилиндры и т. Д.), А также, возможно, поверхностей NURBS для создания модели САПР с граничным представлением. Восстановление такой модели позволяет изменять конструкцию в соответствии с новыми требованиями, составлять производственный план и т. Д.

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

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

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

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

В 1990 году Институт инженеров по электротехнике и радиоэлектронике (IEEE) определил (программное обеспечение) обратный инжиниринг (SRE) как «процесс анализа предметной системы для идентификации компонентов системы и их взаимосвязей и создания представлений системы в другой форме или на более высоком уровне абстракции », в котором« предметная система »является конечным продуктом разработки программного обеспечения. Обратный инжиниринг - это только процесс проверки, и рассматриваемая программная система не модифицируется, иначе это было бы реинжинирингом или реструктуризацией. Обратный инжиниринг может выполняться на любой стадии цикла продукта, не обязательно на функциональном конечном продукте.

В обратном инжиниринге есть два компонента: редактирование документации и восстановление дизайна. Редокументация - это создание нового представления компьютерного кода, чтобы его было легче понять. Между тем, восстановление дизайна - это использование выводов или рассуждений на основе общих знаний или личного опыта о продукте для полного понимания его функциональных возможностей. Это также можно рассматривать как «возврат назад через цикл разработки». В этой модели результат фазы реализации (в форме исходного кода) реконструируется обратно на фазу анализа в инверсии традиционной водопадной модели . Другой термин для этой техники - понимание программы . Рабочая конференция по обратному проектированию (WCRE) проводится ежегодно с целью изучения и расширения методов обратного проектирования. Компьютерная инженерия программного обеспечения (CASE) и автоматическая генерация кода внесли большой вклад в область обратного проектирования.

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

Кстати, тестирование черного ящика в программной инженерии имеет много общего с обратным проектированием. У тестировщика обычно есть API, но его цель - найти ошибки и недокументированные функции, взломав продукт извне.

Другие цели обратного проектирования включают в себя аудит безопасности, снятие защиты от копирования (" взлом "), обход ограничений доступа, часто присутствующих в бытовой электронике , настройку встроенных систем (например, систем управления двигателем), ремонт или модернизацию на месте, включение дополнительные функции на недорогом «урезанном» оборудовании (например, чипсеты некоторых видеокарт) или даже простое удовлетворение любопытства.

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

Бинарный обратный инжиниринг выполняется, если исходный код программного обеспечения недоступен. Этот процесс иногда называют инженерией обратного кода или RCE. Например, декомпиляцию двоичных файлов для платформы Java можно выполнить с помощью Jad. Одним из известных случаев реверс-инжиниринга была первая реализация BIOS для ПК не от IBM , которая положила начало исторической индустрии совместимых с ПК IBM PC , которая на протяжении многих лет была доминирующей компьютерной аппаратной платформой. Обратный инжиниринг программного обеспечения защищен в США исключением из закона об авторском праве в отношении добросовестного использования . Программное обеспечение Samba , которое позволяет системам, которые не работают под управлением систем Microsoft Windows, обмениваться файлами с системами, которые его запускают, является классическим примером реверс-инжиниринга программного обеспечения, поскольку проект Samba должен был перепроектировать неопубликованную информацию о том, как работает совместное использование файлов Windows, чтобы Компьютеры, отличные от Windows, могли его эмулировать. Проект Wine делает то же самое для Windows API , а OpenOffice.org - одна из сторон, делающая это для форматов файлов Microsoft Office . Проект ReactOS еще более амбициозен по своим целям, стремясь обеспечить двоичную (ABI и API) совместимость с текущими операционными системами Windows ветви NT, что позволяет программному обеспечению и драйверам, написанным для Windows, работать в чистой комнате, подвергшейся обратной инженерии. аналог бесплатного программного обеспечения ( GPL ). WindowsSCOPE позволяет выполнять обратное проектирование всего содержимого оперативной памяти системы Windows, включая двоичный графический обратный инжиниринг всех запущенных процессов.

Еще один классический, если не сказать широко известный пример - это то, что в 1987 году Bell Laboratories перепроектировала Mac OS System 4.1, первоначально работавшую на Apple Macintosh SE , так, чтобы она могла запускать ее на собственных RISC-машинах.

Методы двоичного программного обеспечения

Обратный инжиниринг программного обеспечения может быть выполнен различными методами. Три основные группы реверс-инжиниринга программного обеспечения:

  1. Анализ путем наблюдения информационного обмена, наиболее распространен в протоколе обратного проектирования, который включает в себя , используя анализаторы шины и анализаторы пакетов , например, для доступа к шине компьютера или компьютерной сети , подключение и выявления на нем данных трафика. Затем можно проанализировать поведение шины или сети, чтобы создать автономную реализацию, имитирующую это поведение. Это особенно полезно для обратного проектирования драйверов устройств . Иногда обратному проектированию встроенных систем значительно помогают инструменты, намеренно введенные производителем, такие как порты JTAG или другие средства отладки. В Microsoft Windows популярны отладчики низкого уровня, такие как SoftICE .
  2. Дизассемблирование с использованием дизассемблера , то есть необработанный машинный язык программы читается и понимается в его собственных терминах, только с помощью мнемоники машинного языка . Он работает с любой компьютерной программой, но может занять некоторое время, особенно для тех, кто не привык к машинному программированию. Интерактивный дизассемблер является особенно популярным инструментом.
  3. Декомпиляция с использованием декомпилятора - процесса, который пытается с разными результатами воссоздать исходный код на каком-то языке высокого уровня для программы, доступной только в машинном коде или байт-коде .

Классификация программного обеспечения

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

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

Исходный код

Ряд инструментов UML называют процесс импорта и анализа исходного кода для создания диаграмм UML «обратным проектированием». См. Список инструментов UML .

Хотя UML является одним из подходов к обеспечению «обратного проектирования», недавние достижения в области международных стандартов привели к разработке метамодели обнаружения знаний (KDM). Стандарт предоставляет онтологию для промежуточного (или абстрактного) представления конструкций языка программирования и их взаимосвязей. Group Management Object стандарт (на своем пути , чтобы стать стандартом ISO, а), KDM начал овладевать в промышленности с развитием инструментов и сред анализа , которые могут доставить добычу и анализ источника, бинарных и байт - код. Для анализа исходного кода архитектура гранулярных стандартов KDM позволяет извлекать потоки программной системы (данные, управление и карты вызовов), архитектуры и знания бизнес-уровня (правила, термины и процессы). Стандарт позволяет использовать общий формат данных (XMI), позволяющий коррелировать различные уровни системных знаний либо для подробного анализа (например, первопричина, влияние), либо для производного анализа (например, извлечения бизнес-процессов). Хотя усилия по представлению языковых конструкций могут быть бесконечными из-за большого количества языков, непрерывной эволюции языков программного обеспечения и разработки новых языков, стандарт действительно позволяет использовать расширения для поддержки широкого набора языков, а также эволюция. KDM совместим с UML, BPMN, RDF и другими стандартами, что позволяет выполнять миграцию в другие среды и, таким образом, использовать системные знания для таких усилий, как преобразование программных систем и анализ уровня предприятия.

Протоколы

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

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

Меньше работ по реверс-инжинирингу автоматов протоколов. В общем, конечные автоматы протокола могут быть изучены либо в процессе автономного обучения , которое пассивно наблюдает за общением и пытается построить наиболее общий конечный автомат, принимающий все наблюдаемые последовательности сообщений, либо в режиме онлайн-обучения , которое позволяет интерактивное генерирование зондирования. последовательности сообщений и прослушивание ответов на эти зондирующие последовательности. В общем, автономное обучение малых конечных автоматов, как известно, является NP-полным , но онлайн-обучение может быть выполнено за полиномиальное время. Автоматический автономный подход был продемонстрирован Comparetti et al. и онлайн-подход Cho et al.

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

Интегральные схемы / смарт-карты

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

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

Полный реверс-инжиниринг состоит из нескольких основных этапов.

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

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

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

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

Военное применение

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

  • Джерри может : британские и американские войска во время Второй мировой войны заметили, что у немцев есть канистры с бензином отличного дизайна. Они реконструировали копии этих банок, которые в народе назывались «банками из-под Джерри».
  • Panzerschreck : Немцы захватили американскую базуку во время Второй мировой войны и реконструировали ее, чтобы создать более крупный Panzerschreck.
  • Туполев Ту-4 : В 1944 году три американских бомбардировщика B-29, выполнявшие полеты над Японией, были вынуждены приземлиться в Советском Союзе . Советы, у которых не было подобного стратегического бомбардировщика, решили скопировать B-29. За три года они разработали Ту-4, почти идеальную копию.
  • РЛС SCR-584 : скопирована Советским Союзом после Второй мировой войны, известна несколькими модификациями - СЦР-584, Бинокль-Д.
  • Ракета Фау-2 : техническая документация на Фау-2 и связанные с ней технологии была захвачена западными союзниками в конце войны. Американцы сосредоточили свои усилия на обратном проектировании в рамках операции «Скрепка» , которая привела к разработке ракеты PGM-11 Redstone . Советы использовали пленных немецких инженеров для воспроизведения технических документов и планов и работали с трофейным оборудованием, чтобы создать свой клон ракеты R-1 . Так началась послевоенная советская ракетная программа, которая привела к созданию Р-7 и началу космической гонки .
  • Ракета K-13 / R-3S (по классификации НАТО AA-2 Atoll), советская реконструированная копия AIM-9 Sidewinder , стала возможной после того, как тайваньский AIM-9B поразил китайский МиГ-17, не взорвавшись в сентябре. 1958 г. Ракета застряла в корпусе самолета, и пилот вернулся на базу с тем, что советские ученые назвали университетским курсом по разработке ракет.
  • Ракета BGM-71 TOW : в мае 1975 года переговоры между Ираном и Hughes Missile Systems о совместном производстве ракет TOW и Maverick зашли в тупик из-за разногласий в структуре ценообразования, последующая революция 1979 года положила конец всем планам такого совместного производства. Позже Иран успешно переконструировал ракету и теперь производит свою собственную копию Toophan .
  • Китай полностью изменил конструкцию многих образцов западной и российской техники, от истребителей до ракет и автомобилей HMMWV , таких как МиГ-15 (который стал J-7) и Су-33 (который стал J-15). Более поздние анализы роста военной мощи Китая указали на неотъемлемые ограничения обратного проектирования передовых систем вооружений.
  • Во время Второй мировой войны, польские и британские криптографами изучали захваченные немецкие « „Энигма шифрования машины сообщений“слабые места. Их работа была затем моделируется на электромеханических устройствах,» bombes , которые пытались все возможные параметры скремблирования из «машины Энигма» , которые помогли взлом закодированных сообщений, отправленных немцами.
  • Также во время Второй мировой войны британские ученые проанализировали и уничтожили ряд все более сложных радионавигационных систем, используемых Люфтваффе для выполнения управляемых бомбардировок в ночное время. Британские меры противодействия этой системе были настолько эффективны, что в некоторых случаях немецкие самолеты направлялись по сигналам на приземление на базах британских ВВС, поскольку считали, что они вернулись на территорию Германии.

Генные сети

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

Шесть классов методов вывода генной сети, согласно
  • Методы коэкспрессии основаны на представлении о том, что если два гена демонстрируют сходный профиль экспрессии, они могут быть связаны, хотя на основании коэкспрессии нельзя просто вывести причинно-следственную связь.
  • Методы последовательности мотивов анализируют промоторы генов, чтобы найти специфические домены связывания факторов транскрипции. Если предполагается, что фактор транскрипции связывается с промотором определенного гена, можно предположить регуляторную связь.
  • Методы Chromatin ImmunoPrecipitation (ChIP) исследуют профиль связывания ДНК выбранных факторов транскрипции по всему геному, чтобы сделать вывод об их нижележащих генных сетях.
  • Методы ортологии передают знания о генных сетях от одного вида к другому.
  • Литературные методы реализуют интеллектуальный анализ текста и ручное исследование для выявления предполагаемых или экспериментально подтвержденных связей генной сети.
  • Методы транскрипционных комплексов используют информацию о межбелковых взаимодействиях между факторами транскрипции, тем самым расширяя концепцию генных сетей, чтобы включить в нее комплексы регуляции транскрипции.

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

Пересечение с патентным законодательством

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

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

Законность

Соединенные Штаты

В Соединенных Штатах, даже если артефакт или процесс защищен коммерческой тайной , обратное проектирование артефакта или процесса часто является законным, если он был получен законным путем.

Обратный инжиниринг компьютерного программного обеспечения часто подпадает под действие как договорного права как нарушение договора, так и любых других соответствующих законов. Это связано с тем, что большинство лицензионных соглашений с конечным пользователем прямо запрещают это, и суды США постановили, что, если такие условия присутствуют, они отменяют закон об авторском праве, который прямо разрешает это (см. Bowers v. Baystate Technologies ). Согласно разделу 103 (f) Закона об авторском праве в цифровую эпоху ( 17 USC § 1201 (f) ), лицо, имеющее законное право владения программой, может произвести обратный инжиниринг и обойти ее защиту, если это необходимо для достижения «функциональной совместимости», a Термин, который широко охватывает другие устройства и программы, которые могут взаимодействовать с ними, использовать их, а также использовать и передавать данные на них и от них полезными способами. Существует ограниченное исключение, которое позволяет обмениваться знаниями, полученными таким образом, и использовать их для целей взаимодействия.

Европейский Союз

Директива ЕС 2009/24 о правовой защите компьютерных программ, которая заменила более раннюю (1991 г.) директиву, регулирует обратный инжиниринг в Европейском Союзе .

Смотрите также

использованная литература

Источники