stringtranslate.com

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

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

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

Обзор

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

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

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

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

Существуют и другие применения обратного инжиниринга:

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

Машины

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

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

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

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

Печатные платы

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

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

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

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

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

В обратном проектировании есть два компонента: передокументирование и восстановление проекта. Передокументирование — это создание нового представления компьютерного кода, чтобы его было легче понять. Между тем, восстановление проекта — это использование вывода или рассуждения из общих знаний или личного опыта продукта для полного понимания функциональности продукта. [10] Его также можно рассматривать как «движение назад по циклу разработки». [18] В этой модели выходной результат фазы внедрения (в форме исходного кода) подвергается обратному проектированию обратно в фазу анализа, в инверсии традиционной каскадной модели . Другой термин для этого метода — понимание программы . [7] Рабочая конференция по обратному проектированию (WCRE) проводится ежегодно для изучения и расширения методов обратного проектирования. [11] [19] Компьютерная инженерия программного обеспечения (CASE) и автоматизированная генерация кода внесли большой вклад в область обратного проектирования. [11]

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

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

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

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

Двоичный обратный инжиниринг выполняется, если исходный код программного обеспечения недоступен. [11] Этот процесс иногда называют обратным проектированием кода , или RCE. [21] Например, декомпиляция двоичных файлов для платформы Java может быть выполнена с помощью Jad. Одним из известных случаев обратного проектирования была первая не- IBM реализация BIOS ПК , которая запустила историческую отрасль , совместимую с IBM PC , которая была подавляюще доминирующей компьютерной аппаратной платформой в течение многих лет. Обратный инжиниринг программного обеспечения защищен в США исключением о добросовестном использовании в законе об авторском праве . [22] Программное обеспечение Samba , которое позволяет системам, не работающим под управлением систем Microsoft Windows , обмениваться файлами с системами, которые его запускают, является классическим примером обратного проектирования программного обеспечения [23], поскольку проект Samba должен был выполнить обратное проектирование неопубликованной информации о том, как работает общий доступ к файлам Windows, чтобы компьютеры, не работающие под управлением Windows, могли его эмулировать. Проект Wine делает то же самое для API Windows , и 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-машинах . [24]

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

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

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

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

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

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

Исходный код

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

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

Протоколы

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Генные сети

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

Шесть классов методов вывода генных сетей, согласно [43]

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

Совпадение с патентным правом

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

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

Законность

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

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

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

Евросоюз

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

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

Примечания

  1. ^ В разделе говорится:
    (f) Обратное проектирование.
    — (1) Несмотря на положения подпункта (a)(1)(A), лицо, законно получившее право на использование копии компьютерной программы, может обойти технологическую меру, которая эффективно контролирует доступ к определенной части этой программы с единственной целью идентификации и анализа тех элементов программы, которые необходимы для достижения взаимодействия независимо созданной компьютерной программы с другими программами и которые ранее не были легко доступны лицу, осуществляющему обход, в той мере, в которой любые такие действия по идентификации и анализу не представляют собой нарушение в соответствии с настоящим разделом.
    (2) Несмотря на положения подпунктов (a)(2) и (b), лицо может разрабатывать и использовать технологические средства для обхода технологической меры или для обхода защиты, предоставляемой технологической мерой, для того, чтобы обеспечить идентификацию и анализ в соответствии с пунктом (1), или в целях обеспечения взаимодействия независимо созданной компьютерной программы с другими программами, если такие средства необходимы для достижения такого взаимодействия, в той мере, в которой это не является нарушением в соответствии с настоящим разделом.
    (3) Информация, полученная с помощью действий, разрешенных в соответствии с пунктом (1), и средств, разрешенных в соответствии с пунктом (2), может быть предоставлена ​​другим лицам, если лицо, указанное в пункте (1) или (2), в зависимости от обстоятельств, предоставляет такую ​​информацию или средства исключительно в целях обеспечения взаимодействия независимо созданной компьютерной программы с другими программами, и в той степени, в которой это не является нарушением в соответствии с настоящим разделом или нарушением применимого права, отличного от настоящего раздела.
    (4) Для целей настоящего подраздела термин «взаимодействие» означает способность компьютерных программ обмениваться информацией, а также способность таких программ взаимно использовать информацию, которой был произведен обмен.
  2. ^ Директива гласит:

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

Ссылки

  1. ^ ab "Что такое обратная разработка? Как это работает". SearchSoftwareQuality . Получено 2022-07-27 .
  2. ^ "Обратная разработка". ethics.csc.ncsu.edu . Получено 2022-07-27 .
  3. ^ Гарсия, Хорхе (декабрь 2015 г.). «Разрушение блоков: модель обратного проектирования и применимая эвристика» (PDF) . Core.ac.uk . Получено 2023-06-04 .
  4. ^ Тейер, Кен. «Как работает обратная разработка?». globalspec . IEEE Global Spec . Получено 26 февраля 2018 г.
  5. ^ Вильяверде, Алехандро Ф.; Банга, Хулио Р. (6 февраля 2014 г.). «Обратное проектирование и идентификация в системной биологии: стратегии, перспективы и проблемы». Журнал интерфейса Королевского общества . 11 (91): 20130505. doi :10.1098/rsif.2013.0505. PMC 3869153. PMID  24307566 . 
  6. ^ abc Chikofsky, EJ & Cross, JH II (1990). «Обратное проектирование и восстановление проекта: таксономия». IEEE Software . 7 (1): 13–17. doi :10.1109/52.43044. S2CID  16266661.
  7. ^ ab Обзор обратного проектирования и понимания программ. Майкл Л. Нельсон, 19 апреля 1996 г., ODU CS 551 – Обзор программной инженерии. arXiv :cs/0503068v1
  8. ^ Винеш Раджа; Киран Дж. Фернандес (2007). Обратное проектирование: промышленная перспектива . Springer Science & Business Media. стр. 3. ISBN 978-1-84628-856-2.
  9. ^ Джонатан Бэнд; Масанобу Като (2011). Интерфейсы на испытании 2.0 . MIT Press. стр. 136. ISBN 978-0-262-29446-1.
  10. ^ abc Chikofsky, EJ; Cross, JH (январь 1990). "Обратное проектирование и восстановление проекта: таксономия" (PDF) . IEEE Software . 7 : 13–17. doi :10.1109/52.43044. S2CID  16266661. Архивировано из оригинала (PDF) 2018-04-17 . Получено 2012-07-02 .
  11. ^ abcdefgh Эйлам, Элдад (2005). Реверсирование: секреты реверс-инжиниринга . John Wiley & Sons. ISBN 978-0-7645-7481-8.
  12. ^ Целевая группа по инжинирингу Интернета RFC 2828 Глоссарий по безопасности Интернета
  13. ^ Карвовски, Вальдемар; Трццелински, Стефан; Мругальск, Беата; ДиНиколантонио, Массимо; Росси, Эмилио (2018). Достижения в области производства, управления производством и контроля технологических процессов . С. 287–288.
  14. ^ Варади, Т.; Мартин, Р.; Кокс, Дж. (1997). «Обратное проектирование геометрических моделей – введение». Computer-Aided Design . 29 (4): 255–268. doi :10.1016/S0010-4485(96)00054-1.
  15. ^ «Обратный инжиниринг».
  16. ^ Патель, Суреш (2022-08-25). "Обратное проектирование печатной платы". Electronic Design . Получено 2024-02-01 .
  17. ^ Патель, Суреш (2022-08-25). "Обратное проектирование печатной платы". Electronic Design . Получено 2024-02-01 .
  18. ^ Уорден, Р. (1992). Повторное использование программного обеспечения и обратная разработка на практике . Лондон, Англия: Chapman & Hall. С. 283–305.
  19. ^ "Working Conference on Reverse Engineering (WCRE)". uni-trier.de . Библиография по компьютерным наукам. Архивировано из оригинала 14 марта 2017 г. Получено 22 февраля 2018 г.
  20. ^ Шахбаз, Музаммил (2012). Обратное проектирование и тестирование компонентов программного обеспечения Black-Box: с помощью методов грамматического вывода . LAP LAMBERT Academic Publishing. ISBN 978-3-659-14073-0.
  21. ^ Чувакин, Антон; Сайрус Пейкари (январь 2004 г.). Security Warrior (1-е изд.). O'Reilly. Архивировано из оригинала 2006-05-22 . Получено 2006-05-25 .
  22. ^ Сэмюэлсон, Памела и Скотчмер, Сюзанна (2002). «Право и экономика обратного проектирования». Yale Law Journal . 111 (7): 1575–1663. doi :10.2307/797533. JSTOR  797533. Архивировано из оригинала 2010-07-15 . Получено 2011-10-31 .
  23. ^ "Samba: An Introduction". 2001-11-27 . Получено 2009-05-07 .
  24. ^ Ли, Ньютон (2013). Борьба с терроризмом и кибербезопасность: полная информационная осведомленность (2-е изд.). Springer Science+Business Media. стр. 110. ISBN 978-1-4614-7204-9.
  25. ^ W. Cui, J. Kannan и HJ Wang. Discoverer: Автоматическая обратная разработка протоколов из сетевых трассировок. В трудах 16-го симпозиума по безопасности USENIX на симпозиуме по безопасности USENIX, стр. 1–14.
  26. ^ W. Cui, M. Peinado, K. Chen, HJ Wang и L. Irún-Briz. Tupni: Автоматическое обратное проектирование входных форматов. В трудах 15-й конференции ACM по компьютерной и коммуникационной безопасности, стр. 391–402. ACM, октябрь 2008 г.
  27. ^ ab PM Comparetti, G. Wondracek, C. Kruegel и E. Kirda. Prospex: извлечение спецификации протокола. В трудах 30-го симпозиума IEEE по безопасности и конфиденциальности 2009 г., стр. 110–125, Вашингтон, 2009 г. IEEE Computer Society.
  28. ^ Голд, Э. (1978). «Сложность идентификации автомата по заданным данным». Информация и управление . 37 (3): 302–320. doi : 10.1016/S0019-9958(78)90562-4 .
  29. ^ Д. Энглуин (1987). «Изучение регулярных множеств из запросов и контрпримеров». Информация и вычисления . 75 (2): 87–106. doi : 10.1016/0890-5401(87)90052-6 .
  30. ^ Чо CY, Бабич D., Шин R. и Сонг D. Вывод и анализ формальных моделей протоколов управления и контроля ботнетов, Конференция ACM 2010 по компьютерной и коммуникационной безопасности.
  31. ^ Полиглот: автоматическое извлечение формата сообщения протокола с использованием динамического двоичного анализа. J. Caballero, H. Yin, Z. Liang и D. Song. Труды 14-й конференции ACM по компьютерной и коммуникационной безопасности, стр. 317–329.
  32. ^ Вольфганг Ранкль, Вольфганг Эффинг, Справочник по смарт-картам (2004)
  33. ^ T. Welz: Смарт-карты как способ оплаты [ нерабочая ссылка ] (2008), Семинар ITS-Security Ruhr-Universität Bochum
  34. ^ Дэвид К. Маскер: Защита и эксплуатация интеллектуальной собственности в электронике. Архивировано 9 июля 2011 г. в Wayback Machine , конференции IBC, 10 июня 1998 г.
  35. ^ Франсильон, Рене Дж. (1988) [1979]. McDonnell Douglas Aircraft с 1920 года . Т. 1 (2-е изд.). Аннаполис, Мэриленд: Naval Institute Press. С. 265–268. ISBN 0-87021-428-4.
  36. ^ Уэстелл, Фримен (ноябрь 1999 г.). «Большое железо, большие двигатели и большие головные боли: строительство первых экспериментальных стратегических бомбардировщиков». Airpower . 29 (6): 18, 49–50.
  37. ^ Анджелуччи, Энцо; Матрикарди, Паоло (1978). - Самолеты Второй мировой войны: Том 2. Чикаго: Rand McNally & Company. стр. 127. ISBN 0-528-88171-X.
  38. Йем Гордон и Владимир Ригмант, Туполев Ту-4: Советская суперкрепость (Хинкли, Великобритания: Midland, 2002).
  39. ^ "Redstone rocket". centennialofflight.net . Получено 2010-04-27 .
  40. ^ «Военно-воздушные силы Китая: развивающиеся концепции, роли и возможности», Центр изучения китайских военных дел (США), издательство National Defense University Press, стр. 277
  41. ^ Чандрашекар, С., Р. Нагаппа, Л. Сундаресан и Н. Рамани. 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: китайские официальные лица защищают новый истребитель как китайский оригинал, но вопросы остаются», Mic, 16 декабря 2012 г., https://mic.com/articles/20270/china-j-15-fighter-jet-chinese-officials-defend-new-fighter- [ постоянная неработающая ссылка ] как-chinese-original-but-questions-remain
  42. ^ Джорджи, Федерико М. (2020). «Обратная инженерия генной сети: следующее поколение». Biochimica et Biophysica Acta (BBA) - Механизмы регуляции генов . 1863 (6): 194523. doi : 10.1016/j.bbagrm.2020.194523. hdl : 11585/753853. ISSN  1874-9399. PMID  32145356. S2CID  212629142.
  43. ^ ab Mercatelli, Daniele; Scalambra, Laura; Triboli, Luca; Ray, Forest; Giorgi, Federico M. (2020). "Ресурсы вывода сетей регуляции генов: практический обзор". Biochimica et Biophysica Acta (BBA) - Механизмы регуляции генов . 1863 (6): 194430. doi : 10.1016/j.bbagrm.2019.194430. ISSN  1874-9399. PMID  31678629. S2CID  207895066.
  44. ^ Тегнер, Дж.; Йенг, М.К.С.; Хасти, Дж.; Коллинз, Дж.Дж. (2003). «Обратное проектирование генных сетей: интеграция генетических возмущений с динамическим моделированием». Труды Национальной академии наук . 100 (10): 5944–5949. Bibcode : 2003PNAS..100.5944T. doi : 10.1073/pnas.0933416100 . ISSN  0027-8424. PMC 156306. PMID 12730377  . 
  45. ^ Фридель, Светлана; Усадель, Бьёрн; фон Вирен, Николаус; Шринивасулу, Несе (2012). «Обратное проектирование: ключевой компонент системной биологии для раскрытия глобальных перекрестных помех абиотического стресса». Frontiers in Plant Science . 3 : 294. doi : 10.3389/fpls.2012.00294 . ISSN  1664-462X. PMC 3533172. PMID 23293646  . 
  46. ^ Лефевр, Селин; Рикхоф, Габриэль; Калифано, Андреа (2012). «Обратное проектирование регуляторных сетей человека». Wiley Interdisciplinary Reviews: Systems Biology and Medicine . 4 (4): 311–325. doi :10.1002/wsbm.1159. ISSN  1939-5094. PMC 4128340. PMID 22246697  . 
  47. ^ "Торговые секреты 101", Статья, март 2011 г. ASME. Получено 31 октября 2013 г.
  48. Обсуждение дела Baystate против Bowers. Utsystem.edu. Получено 29.05.2011.
  49. ^ Гросс, Грант. (2003-06-26) Дело о контракте может повредить обратному проектированию | Developer World. InfoWorld. Получено 29-05-2011.
  50. ^ Директива Совета 91/250/EEC от 14 мая 1991 года о правовой защите компьютерных программ. Eur-lex.europa.eu. Получено 29.05.2011.
  51. ^ Директива 2009/24/EC Европейского парламента и Совета от 23 апреля 2009 года о правовой защите компьютерных программ

Источники