Из Википедии, бесплатной энциклопедии
  (Перенаправлено из Reverse Engine )
Перейти к навигации Перейти к поиску

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

Обратный инжиниринг применим в области вычислительной техники , машиностроения , проектирования , электронной техники , программного обеспечения , химического машиностроения , [1] и системной биологии . [2]

Обзор [ править ]

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

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

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

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

Есть и другие применения обратного проектирования:

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

Общие ситуации [ править ]

Машины [ править ]

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

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

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

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

Программное обеспечение [ править ]

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

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

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

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

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

Двоичное программное обеспечение [ править ]

Бинарный обратный инжиниринг выполняется, если исходный код программного обеспечения недоступен. [8] Этот процесс иногда называют инженерией обратного кода или RCE. [16] Например, декомпиляцию двоичных файлов для платформы Java можно выполнить с помощью Jad. Одним из известных случаев реверс-инжиниринга была первая реализация BIOS для ПК не от IBM , которая положила начало исторической индустрии совместимых с IBM ПК , которая на протяжении многих лет была доминирующей компьютерной аппаратной платформой. Обратный инжиниринг программного обеспечения защищен в США исключением добросовестного использования в законе об авторском праве. . [17] Программное обеспечение Samba , которое позволяет системам, которые не работают с системами Microsoft Windows, обмениваться файлами с системами, которые его запускают, является классическим примером обратного проектирования программного обеспечения [18], поскольку в проекте 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-машинах. [19]

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

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

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

Классификация программного обеспечения [ править ]

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

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

Исходный код [ править ]

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

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

Протоколы [ править ]

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

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

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

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

Интегральные схемы / смарт-карты [ править ]

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

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

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

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

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

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

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

Военное применение [ править ]

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

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

Генные сети [ править ]

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

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

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

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

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

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

Законность [ править ]

Соединенные Штаты [ править ]

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

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

Европейский Союз [ править ]

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

См. Также [ править ]

  • Антикитерский механизм
  • Бенчмаркинг
  • Анализатор шины
  • Чонда
  • Клонирование (вычисления)
  • Дизайн чистой комнаты
  • CMM
  • Морфинг кода
  • Виртуальная игровая станция Connectix
  • Подделка
  • Криптоанализ
  • Декомпилировать
  • Деформация
  • Закон о защите авторских прав в цифровую эпоху (DMCA)
  • Ключ
  • Судебная инженерия
  • Промышленное компьютерное сканирование
  • Интерактивный дизассемблер
  • Метамодель открытия знаний
  • Лазерный сканер
  • Список производственных тем
  • Листероидные двигатели
  • Логический анализатор
  • Зарплата
  • Разборка продукта
  • Перепрофилирование
  • Ретродикция
  • Sega против Accolade
  • Программная археология
  • Взлом программного обеспечения
  • Структурированный световой дигитайзер
  • Ценностная инженерия

Ссылки [ править ]

  1. ^ Тайер, Кен. "Как работает обратный инжиниринг?" . globalspec . IEEE Global Spec . Проверено 26 февраля 2018 .
  2. ^ Вильяверде, Алехандро Ф .; Банга, Хулио Р. (6 февраля 2014 г.). «Обратный инжиниринг и идентификация в системной биологии: стратегии, перспективы и проблемы» . Журнал Интерфейса Королевского общества . 11 (91): 20130505. DOI : 10.1098 / rsif.2013.0505 . PMC 3869153 . PMID 24307566 .  
  3. ^ a b c Чикофски, EJ & Cross, JH, II (1990). «Обратное проектирование и восстановление дизайна: таксономия». Программное обеспечение IEEE . 7 (1): 13–17. DOI : 10.1109 / 52.43044 .
  4. ^ a b Обзор обратного проектирования и понимания программ. Майкл Л. Нельсон, 19 апреля 1996 г., ODU CS 551 - Исследование программной инженерии. arXiv : cs / 0503068v1
  5. ^ Винеш Раджа; Киран Дж. Фернандес (2007). Обратный инжиниринг: промышленная перспектива . Springer Science & Business Media. п. 3. ISBN 978-1-84628-856-2.
  6. ^ Джонатан Бэнд; Масанобу Катох (2011). Интерфейсы в Trial 2.0 . MIT Press. п. 136. ISBN. 978-0-262-29446-1.
  7. ^ a b c Чикофски, EJ; Кросс, JH (январь 1990 г.). «Обратный инжиниринг и восстановление дизайна: таксономия» (PDF) . Программное обеспечение IEEE . 7 : 13–17. DOI : 10.1109 / 52.43044 . Архивировано из оригинального (PDF) на 2018-04-17 . Проверено 2 июля 2012 .
  8. ^ a b c d e f g h Эйлам, Эльдад (2005). Реверсирование: секреты реверс-инжиниринга . Джон Вили и сыновья. ISBN 978-0-7645-7481-8.
  9. ^ Internet Engineering Task Force RFC 2828 Глоссарий по безопасности Интернета
  10. ^ Karwowski, Вальдемар; Трзчелински, Стефан; Мругальск, Беата; ДиНиколантонио, Массимо; Росси, Эмилио (2018). Достижения в области производства, управления производством и технологическим процессом . С. 287–288.
  11. ^ Варади, Т; Martin, R; Кокс, Дж (1997). «Обратный инжиниринг геометрических моделей - введение». Компьютерный дизайн . 29 (4): 255–268. DOI : 10.1016 / S0010-4485 (96) 00054-1 .
  12. ^ «Обратный инжиниринг» .
  13. ^ Уорден, Р. (1992). Повторное использование программного обеспечения и обратный инжиниринг на практике . Лондон, Англия: Chapman & Hall. С. 283–305.
  14. ^ "Рабочая конференция по обратному проектированию (WCRE)" . uni-trier.de . Библиография по информатике. Архивировано из оригинального 14 марта 2017 года . Проверено 22 февраля 2018 .
  15. ^ Shahbaz, Muzammil (2012). Обратный инжиниринг и тестирование программных компонентов черного ящика: методами грамматического вывода . LAP LAMBERT Academic Publishing. ISBN 978-3659140730.
  16. ^ Чувакин, Антон; Сайрус Пейкари (январь 2004 г.). Воин безопасности (1-е изд.). О'Рейли. Архивировано из оригинала на 2006-05-22 . Проверено 25 мая 2006 .
  17. ^ Самуэльсон, Памела и Скотчмер, Сюзанна (2002). «Закон и экономика обратного инжиниринга» . Йельский юридический журнал . 111 (7): 1575–1663. DOI : 10.2307 / 797533 . JSTOR 797533 . Архивировано из оригинала на 2010-07-15 . Проверено 31 октября 2011 . 
  18. ^ "Самба: Введение" . 2001-11-27 . Проверено 7 мая 2009 .
  19. ^ Ли, Ньютон (2013). Контртерроризм и кибербезопасность: всеобщая осведомленность об информации (2-е изд.). Springer Science + Business Media. п. 110. ISBN 978-1461472049.
  20. W. Cui, J. Kannan и HJ Wang. Discoverer: автоматический реверс-инжиниринг протокола по сетевым трассировкам. В материалах 16-го симпозиума по безопасности USENIX на симпозиуме по безопасности USENIX, стр. 1–14.
  21. W. Cui, M. Peinado, K. Chen, HJ Wang и L. Irún-Briz. Tupni: Автоматический реверс-инжиниринг входных форматов. В материалах 15-й конференции ACM по компьютерной и коммуникационной безопасности, стр. 391–402. ACM, октябрь 2008 г.
  22. ^ a b П. М. Компаретти, Г. Вондрачек, К. Крюгель и Э. Кирда. Проспекс: извлечение спецификации протокола. В материалах 30-го симпозиума IEEE по безопасности и конфиденциальности 2009 г., стр. 110–125, Вашингтон, 2009 г. IEEE Computer Society.
  23. Перейти ↑ Gold, E (1978). «Сложность идентификации автомата по заданным данным» . Информация и контроль . 37 (3): 302–320. DOI : 10.1016 / S0019-9958 (78) 90562-4 .
  24. ^ D. Angluin (1987). «Изучение регулярных множеств по запросам и контрпримерам». Информация и вычисления . 75 (2): 87–106. DOI : 10.1016 / 0890-5401 (87) 90052-6 .
  25. ^ CY Чо, Д. Бабич, Р. Шин и Д. Сонг. Вывод и анализ формальных моделей протоколов управления и контроля ботнета , 2010 ACM Conference on Computer and Communications Security.
  26. ^ Полиглот: автоматическое извлечение формата сообщения протокола с использованием динамического двоичного анализа . Дж. Кабальеро, Х. Инь, З. Лян, Д. Сун. Материалы 14-й конференции ACM по компьютерной и коммуникационной безопасности, стр. 317–329.
  27. ^ Вольфганг Ранкл, Вольфганг Эффинг, Справочник по смарт-картам (2004)
  28. ^ Т. Велц: Смарт-карты как способы оплаты (2008), Семинар ITS-Security Ruhr-Universität Bochum
  29. Дэвид С. Маскер: Защита и использование интеллектуальной собственности в электронике. Архивировано 9 июля 2011 г.на Wayback Machine , конференции IBC, 10 июня 1998 г.
  30. ^ Yeam Гордон и Владимир Rigmant, Туполев Ту-4: Советская Superfortress (Хинкли, Великобритания: Midland, 2002).
  31. ^ "Ракета Редстоун" . centennialofflight.net . Проверено 27 апреля 2010 .
  32. ^ «Китайские военно-воздушные силы: развивающиеся концепции, роли и возможности», Центр изучения военных вопросов Китая (США), издательство National Defense University Press, стр. 277
  33. ^ Чандрашекар, С., Р. Нагаппа, Л. Сундаресан и Н. Рамани. 2011. Технологии и инновации в Китае: пример разработки монокристаллического суперсплава для лопаток авиационных турбин, R4–11. ISSSP Национальный институт перспективных исследований, Бангалор. http://isssp.in/wp-content/uploads/2013/01/Technology-and-Innovation-in-China-A-case-Study-of-Single-Crystal4.pdf ; и Диллон Чжоу, «Китайский истребитель J-15: китайские официальные лица защищают новый истребитель как китайский оригинальный, но остаются вопросы», Мик, 16 декабря 2012 г., https://mic.com/articles/20270/china-j-15 -истребитель-реактивный-китайские-чиновники-защищают-новый-истребитель- как-китайский-оригинальный-но-вопросы-остаются
  34. ^ Андреа Гилли и Мауро Гилли, «Почему Китай еще не догнал: военно-технологическое превосходство и пределы имитации, обратного инжиниринга и кибершпионажа», Международная безопасность 43: 3 (2019 141-189, https: // doi. org / 10.1162 / isec_a_00337 .
  35. ^ Джорджи, Федерико М. (2020). «Обратный инжиниринг генной сети: следующее поколение». Biochimica et Biophysica Acta (BBA) - механизмы регуляции генов . 1863 (6): 194523. DOI : 10.1016 / j.bbagrm.2020.194523 . ISSN 1874-9399 . 
  36. ^ a b Меркателли, Даниэле; Скаламбра, Лаура; Триболи, Лука; Луч, Лес; Джорджи, Федерико М. (2020). «Ресурсы вывода регуляторной сети генов: практический обзор». Biochimica et Biophysica Acta (BBA) - механизмы регуляции генов . 1863 (6): 194430. DOI : 10.1016 / j.bbagrm.2019.194430 . ISSN 1874-9399 . 
  37. ^ Тегнер, Дж .; Йунг, МКС; Hasty, J .; Коллинз, Дж. Дж. (2003). «Обратная инженерия генных сетей: интеграция генетических возмущений с динамическим моделированием» . Труды Национальной академии наук . 100 (10): 5944–5949. DOI : 10.1073 / pnas.0933416100 . ISSN 0027-8424 . 
  38. ^ Фридель, Светлана; Усадель, Бьорн; фон Вирен, Николаус; Шринивасулу, Несе (2012). «Обратный инжиниринг: ключевой компонент системной биологии для разгадки глобального взаимного обсуждения абиотического стресса» . Границы растениеводства . 3 . DOI : 10.3389 / fpls.2012.00294 . ISSN 1664-462X . 
  39. ^ Лефевр, Селин; Рикхоф, Габриель; Калифано, Андреа (2012). «Обратный инжиниринг человеческих регуляторных сетей» . Междисциплинарные обзоры Wiley: системная биология и медицина . 4 (4): 311–325. DOI : 10.1002 / wsbm.1159 . ISSN 1939-5094 . PMC 4128340 .  
  40. ^ "Торговые секреты 101", тематическая статья, март 2011 . КАК Я. Проверено 31 октября 2013.
  41. ^ Baystate v. Bowers Обсуждение . Utsystem.edu. Проверено 29 мая 2011.
  42. ^ Валовой, Грант. (2003-06-26) Дело о контракте может повредить обратному проектированию | Мир разработчиков . InfoWorld. Проверено 29 мая 2011.
  43. ^ В разделе говорится:
    (f) Обратный инжиниринг. -
    (1) Несмотря на положения подраздела (a) (1) (A), лицо, законным образом получившее право на использование копии компьютерной программы, может обойти технологический мера, которая эффективно контролирует доступ к определенной части этой программы с единственной целью идентификации и анализа тех элементов программы, которые необходимы для достижения взаимодействия независимо созданной компьютерной программы с другими программами и которые ранее не были легко доступны для лицо, участвующее в обходе, в той степени, в которой любые такие действия по идентификации и анализу не представляют собой нарушение в соответствии с этим заголовком.
    (2) Несмотря на положения подразделов (a) (2) и (b), лицо может разрабатывать и использовать технологические средства для обхода технических средств или защиты, предоставляемой технологическими средствами, с целью обеспечения возможности идентификации и анализ в соответствии с параграфом (1) или с целью обеспечения возможности взаимодействия независимо созданной компьютерной программы с другими программами, если такие средства необходимы для достижения такой совместимости, в той степени, в которой это не является нарушением в соответствии с этим заголовком.
    (3) Информация, полученная посредством действий, разрешенных в соответствии с параграфом (1), и средствами, разрешенными в соответствии с параграфом (2), может быть предоставлена ​​другим лицам, если лицо, указанное в параграфе (1) или (2), в зависимости от обстоятельств может быть, предоставляет такую ​​информацию или средства исключительно с целью обеспечения возможности взаимодействия независимо созданной компьютерной программы с другими программами, и в той степени, в которой это не является нарушением прав в соответствии с этим заголовком или нарушением применимого законодательства, кроме этого раздела.
    (4) Для целей данного подраздела термин «совместимость» означает способность компьютерных программ обмениваться информацией, а таких программ - взаимно использовать информацию, которой обменивались.
  44. ^ Директива Совета 91/250 / EEC от 14 мая 1991 г. о правовой защите компьютерных программ . Eur-lex.europa.eu. Проверено 29 мая 2011.
  45. ^ ДИРЕКТИВА 2009/24 / EC ЕВРОПЕЙСКОГО ПАРЛАМЕНТА И СОВЕТА от 23 апреля 2009 г. о правовой защите компьютерных программ.
  46. ^ Директива гласит:

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

Источники [ править ]

  • Эйлам, Эльдад (2005). Реверсирование: секреты обратного инжиниринга . Wiley Publishing . п. 595. ISBN 978-0-7645-7481-8.
  • Элвидж, Джулия, «Использование обратного проектирования для обнаружения нарушения патентных прав», Chipworks, сентябрь 2010 г. Интернет: http://www.photonics.com/Article.aspx?AID=44063
  • Чипрессо, Теодоро (2009). "Образование в области обратной инженерии программного обеспечения" . Магистерская работа ГАГУ . Проверено 22 августа 2009 .
  • Хауси А. Мюллер и Хольгер М. Кинле, «Небольшой учебник по обратной инженерии программного обеспечения», Технический отчет, Университет Виктории, 17 страниц, март 2009 г. Онлайн: http://holgerkienle.wikispaces.com/file/view/MK -UVic-09.pdf
  • Хайнс, Генри, «Определение нарушения с помощью рентгеновской дифракции», Chemical Engineering Process , январь 1999 г. (пример обратной инженерии, используемой для обнаружения нарушения прав интеллектуальной собственности)
  • Хуанг, Эндрю (2003). Взлом Xbox: Введение в обратный инжиниринг . Пресс без крахмала . ISBN 978-1593270292.
  • Джеймс, Дик (19 января 2006 г.). «Обратный инжиниринг обеспечивает знание продукта; способствует распространению технологий» . Электронный дизайн . Пентон Медиа, Инк . Проверено 3 февраля 2009 .
  • Месслер, Роберт (2013). Обратный инжиниринг: механизмы, конструкции, системы и материалы . Макгроу Хилл . ISBN 978-0071825160. (введение в разборку оборудования, включая методологию, цели)
  • Раджа, Винеш; Фернандес, Киран Дж. (2008). Обратный инжиниринг - промышленная перспектива . Springer . п. 242. ISBN. 978-1-84628-855-5.
  • Обратный инжиниринг для начинающих
  • Самуэльсон, Памела и Скотчмер, Сюзанна, «Закон и экономика обратного инжиниринга», 111 Yale LJ 1575 (2002). Интернет: http://people.ischool.berkeley.edu/~pam/papers/l&e%20reveng3.pdf
  • Шульман, Эндрю; Браун, Ральф Д .; Макси, Дэвид; Michels, Raymond J .; Кайл, Джим (1994) [ноябрь 1993]. Недокументированная DOS: Руководство программиста по зарезервированным функциям и структурам данных MS-DOS - расширено за счет включения MS-DOS 6, Novell DOS и Windows 3.1 (2-е изд.). Ридинг, Массачусетс: Эддисон Уэсли . С.  229–241 . ISBN 0-201-63287-X.(xviii + 856 + vi pages, 3,5 "-floppy) Исправление: [1] [2] (NB. Об общей методологии реверс-инжиниринга, применяемой к массовому программному обеспечению: программа для изучения DOS, дизассемблирующая DOS.)
  • Шульман, Эндрю; и другие. (1992). Недокументированная Windows: Руководство программиста по зарезервированным функциям Microsoft Windows API . Эддисон Уэсли . ISBN 978-0-201-60834-2. (стр. 59–188 об общей методологии реверс-инжиниринга, применяемой к массовому ПО: изучение исполняемых файлов Windows, дизассемблирование Windows, инструменты для исследования Windows)
  • Шульман, Эндрю, «Скрытие на виду: использование обратного инжиниринга для обнаружения нарушения патентов на программное обеспечение», « Интеллектуальная собственность сегодня» , ноябрь 2010 г. Интернет: http://www.iptoday.com/issues/2010/11/hiding-in- простое использование-обратное проектирование-раскрыть-нарушение-патента-программного обеспечения.asp
  • Шульман, Эндрю, «Открытость для проверки: использование обратного инжиниринга для выявления предшествующего уровня техники в области программного обеспечения», New Matter (Секция интеллектуальной собственности штата Калифорния), лето 2011 г. (часть 1); Осень 2011 г. (часть 2). В Интернете: http://www.SoftwareLitigationConsulting.com
  • Тумм, Майк (2007). «Говорящая тактика» (PDF) . Конференция IEEE 2007 Custom Integrated Circuits Conference (CICC) . IEEE, Inc . Проверено 3 февраля 2009 .