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

Материал из wikixw
Перейти к навигации Перейти к поиску

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

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

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

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

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

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

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

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

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

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

Распространенное использование[править]

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

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

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

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

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

Печатные платы[править]

Основная статья: Обратный инжиниринг печатных плат

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

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

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

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

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

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

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

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

Бинарный обратный инжиниринг выполняется, если исходный код программного обеспечения недоступен. Этот процесс иногда называют разработкой обратного кода, или RCE. Например, декомпиляция двоичных файлов для платформы Java может быть выполнена с помощью Jad. Одним из известных примеров обратного инжиниринга стала первая не-IBM реализация PC BIOS, которая положила начало исторической индустрии, совместимой с 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 произвели обратный инжиниринг системы 4.1 Mac OS, первоначально работавшей на Apple Macintosh SE, чтобы она могла запускать ее на собственных компьютерах RISC.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Джерри Кан: британские и американские войска во время Второй мировой войны заметили, что у немцев были канистры для бензина отличного дизайна. Они создали копии этих банок, которые в народе были известны как "Джерри бэнкс".

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

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

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

Шесть классов методов вывода генной сети, согласно

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

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

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

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

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

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

США[править]

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

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

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

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

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

Антикитерский механизм * Обратная индукция * Бенчмаркинг * Анализатор шины * Чонда

Дизайн чистых помещений * CMM * Преобразование кода

Подделка * Криптоанализ * Декомпилировать * Деформация

Дизассемблер * Ключ * Судебная экспертиза * Промышленное сканирование CT * Интерактивный Дизассемблер

Лазерный сканер * Список производственных тем * Листероидные движки * Логический анализатор

Демонтаж продукта * Перепрофилирование * Обратная архитектура * Проектирование в оба конца * Ретроградность * Sega против Награда *

Взлом программного обеспечения * Структурированный свет дигитайзер * Разработка стоимости

Читать[править]

Реверсивный: секреты реверс-инжиниринга

Пруф[править]

.youtube.com/watch?v=gbYXIs0OHmI