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

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

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

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

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

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

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

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

Исходный код

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

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

Протоколы

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Генные сети

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

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

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

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

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

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

Законность

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

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

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

Евросоюз

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

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

Примечания

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

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

Рекомендации

  1. ^ ab «Что такое реверс-инжиниринг? Как это работает». ПоискКачествоПрограммного обеспечения . Проверено 27 июля 2022 г.
  2. ^ «Реверс-инжиниринг». Ethics.csc.ncsu.edu . Проверено 27 июля 2022 г.
  3. ^ Гарсия, Хорхе (декабрь 2015 г.). «Разборка блоков: модель обратного проектирования и применимая эвристика» (PDF) . Core.ac.uk. _ Проверено 4 июня 2023 г.
  4. ^ Тайер, Кен. «Как работает обратный инжиниринг?». глобальная спец . Глобальная спецификация IEEE . Проверено 26 февраля 2018 г.
  5. ^ Вильяверде, Алехандро Ф.; Банга, Хулио Р. (6 февраля 2014 г.). «Обратный инжиниринг и идентификация в системной биологии: стратегии, перспективы и проблемы». Журнал интерфейса Королевского общества . 11 (91): 20130505. doi :10.1098/rsif.2013.0505. ПМЦ 3869153 . ПМИД  24307566. 
  6. ^ abc Чикофски, EJ и Кросс, JH II (1990). «Обратное проектирование и восстановление конструкции: таксономия». Программное обеспечение IEEE . 7 (1): 13–17. дои : 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 . МТИ Пресс. п. 136. ИСБН 978-0-262-29446-1.
  10. ^ abc Чикофски, Э.Дж.; Кросс, Дж. Х. (январь 1990 г.). «Обратное проектирование и восстановление конструкции: таксономия» (PDF) . Программное обеспечение IEEE . 7 : 13–17. дои : 10.1109/52.43044. S2CID  16266661. Архивировано из оригинала (PDF) 17 апреля 2018 г. Проверено 2 июля 2012 г.
  11. ^ abcdefgh Эйлам, Эльдад (2005). Реверс: секреты реверс-инжиниринга . Джон Уайли и сыновья. ISBN 978-0-7645-7481-8.
  12. ^ Целевая группа по интернет-инжинирингу RFC 2828 Глоссарий по интернет-безопасности
  13. ^ Карвовский, Вальдемар; Тшелински, Стефан; Мругальск, Беата; ДиНиколантонио, Массимо; Росси, Эмилио (2018). Достижения в производстве, управлении производством и контроле процессов . стр. 287–288.
  14. ^ Варади, Т; Мартин, Р; Кокс, Дж (1997). «Обратное проектирование геометрических моделей – введение». Системы автоматизированного проектирования . 29 (4): 255–268. дои : 10.1016/S0010-4485(96)00054-1.
  15. ^ «Реверс-инжиниринг».
  16. ^ Патель, Суреш (25 августа 2022 г.). «Реверс-инжиниринг печатной платы». Электронный дизайн . Проверено 1 февраля 2024 г.
  17. ^ Патель, Суреш (25 августа 2022 г.). «Реверс-инжиниринг печатной платы». Электронный дизайн . Проверено 1 февраля 2024 г.
  18. ^ Уорден, Р. (1992). Повторное использование программного обеспечения и обратное проектирование на практике . Лондон, Англия: Чепмен и Холл. стр. 283–305.
  19. ^ «Рабочая конференция по обратному проектированию (WCRE)» . uni-trier.de . Библиография по информатике. Архивировано из оригинала 14 марта 2017 года . Проверено 22 февраля 2018 г.
  20. ^ Шахбаз, Музаммил (2012). Обратное проектирование и тестирование компонентов программного обеспечения «черного ящика»: методами грамматического вывода . ЛАП ЛАМБЕРТ Академическое издательство. ISBN 978-3-659-14073-0.
  21. ^ Чувакин, Антон; Сайрус Пейкари (январь 2004 г.). Воин безопасности (1-е изд.). О'Рейли. Архивировано из оригинала 22 мая 2006 г. Проверено 25 мая 2006 г.
  22. ^ Самуэльсон, Памела и Скотчмер, Сюзанна (2002). «Закон и экономика обратного инжиниринга». Йельский юридический журнал . 111 (7): 1575–1663. дои : 10.2307/797533. JSTOR  797533. Архивировано из оригинала 15 июля 2010 г. Проверено 31 октября 2011 г.
  23. ^ «Самба: Введение». 27 ноября 2001 г. Проверено 7 мая 2009 г.
  24. ^ Ли, Ньютон (2013). Борьба с терроризмом и кибербезопасность: полная информационная осведомленность (2-е изд.). Springer Science+Business Media. п. 110. ИСБН 978-1-4614-7204-9.
  25. ^ В. Цуй, Дж. Каннан и Х. Дж. Ван. Discoverer: автоматическое обратное проектирование протоколов на основе сетевых трассировок. В материалах 16-го симпозиума по безопасности USENIX на симпозиуме по безопасности USENIX, стр. 1–14.
  26. ^ В. Цуй, М. Пейнадо, К. Чен, Х. Дж. Ван и Л. Ирун-Бриз. Тупни: Автоматический реверс-инжиниринг входных форматов. В материалах 15-й конференции ACM по компьютерной и коммуникационной безопасности, стр. 391–402. АКМ, октябрь 2008 г.
  27. ^ ab PM Comparetti, G. Wondracek, C. Kruegel и E. Kirda. Prospex: извлечение спецификации протокола. В материалах 30-го симпозиума IEEE по безопасности и конфиденциальности 2009 г., стр. 110–125, Вашингтон, 2009 г. Компьютерное общество IEEE.
  28. ^ Голд, E (1978). «Сложность идентификации автомата по заданным данным». Информация и контроль . 37 (3): 302–320. дои : 10.1016/S0019-9958(78)90562-4 .
  29. ^ Д. Англуин (1987). «Изучение регулярных множеств на основе запросов и контрпримеров». Информация и вычисления . 75 (2): 87–106. дои : 10.1016/0890-5401(87)90052-6 .
  30. ^ Сай Чо, Д. Бабич, Р. Шин и Д. Сонг. Вывод и анализ формальных моделей протоколов управления и контроля ботнетов, Конференция ACM 2010 г. по компьютерной и коммуникационной безопасности.
  31. ^ Полиглот: автоматическое извлечение формата сообщения протокола с использованием динамического двоичного анализа. Дж. Кабальеро, Х. Инь, З. Лян и Д. Сун. Материалы 14-й конференции ACM по компьютерной и коммуникационной безопасности, стр. 317–329.
  32. ^ Вольфганг Ранкл, Вольфганг Эффинг, Справочник по смарт-картам (2004)
  33. ^ Т. Вельц: Смарт-карты как способ оплаты [ мертвая ссылка ] (2008), Семинар ITS-Security Ruhr-Universität Bochum
  34. Дэвид К. Маскер: Защита и использование интеллектуальной собственности в электронике. Архивировано 9 июля 2011 г. на Wayback Machine , конференции IBC, 10 июня 1998 г.
  35. ^ Йем Гордон и Владимир Ригмант, Туполев Ту-4: Советская суперкрепость (Хинкли, Великобритания: Мидленд, 2002).
  36. ^ "Ракета Редстоун". Centennialofflight.net . Проверено 27 апреля 2010 г.
  37. ^ «ВВС Китая: развивающиеся концепции, роли и возможности», Центр изучения военных дел Китая (США), издательство National Defense University Press, стр. 277
  38. ^ Чандрашекар, С., Р. Нагаппа, Л. Сундаресан и Н. Рамани. 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 -истребитель-реактивный-китайский-официальные лица-защитить-новый-истребитель- [ постоянная мертвая ссылка ] как-китайский-оригинал-но-вопросы-остаются
  39. ^ Джорджи, Федерико М. (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.
  40. ^ аб Меркателли, Даниэле; Скаламбра, Лаура; Триболи, Лука; Рэй, Форест; Джорджи, Федерико М. (2020). «Ресурсы для вывода о генной регуляторной сети: практический обзор». Biochimica et Biophysica Acta (BBA) - Механизмы регуляции генов . 1863 (6): 194430. doi :10.1016/j.bbagrm.2019.194430. ISSN  1874-9399. PMID  31678629. S2CID  207895066.
  41. ^ Тегнер, Дж.; Юнг, МКС; Хэсти, Дж.; Коллинз, Джей-Джей (2003). «Обратное проектирование генных сетей: интеграция генетических возмущений с динамическим моделированием». Труды Национальной академии наук . 100 (10): 5944–5949. Бибкод : 2003PNAS..100.5944T. дои : 10.1073/pnas.0933416100 . ISSN  0027-8424. ПМК 156306 . ПМИД  12730377. 
  42. ^ Фридель, Светлана; Усадель, Бьёрн; фон Вирен, Николаус; Сринивасулу, Несе (2012). «Обратный инжиниринг: ключевой компонент системной биологии для выявления глобальных перекрестных помех абиотического стресса». Границы в науке о растениях . 3 : 294. doi : 10.3389/fpls.2012.00294 . ISSN  1664-462X. ПМЦ 3533172 . ПМИД  23293646. 
  43. ^ Лефевр, Селин; Рикхоф, Габриэль; Калифано, Андреа (2012). «Реверс-инжиниринг человеческих регуляторных сетей». Междисциплинарные обзоры Wiley: системная биология и медицина . 4 (4): 311–325. дои : 10.1002/wsbm.1159. ISSN  1939-5094. ПМЦ 4128340 . ПМИД  22246697. 
  44. ^ «Коммерческая тайна 101», Тематическая статья, март 2011 г. ASME. Проверено 31 октября 2013 г.
  45. ^ Обсуждение Бэйстейт против Бауэрса. Utsystem.edu. Проверено 29 мая 2011 г.
  46. ^ Гросс, Грант. (26 июня 2003 г.) Дело о контракте может навредить реверс-инжинирингу | Мир разработчиков. ИнфоМир. Проверено 29 мая 2011 г.
  47. ^ Директива Совета 91/250/EEC от 14 мая 1991 г. о правовой защите компьютерных программ. Eur-lex.europa.eu. Проверено 29 мая 2011 г.
  48. ^ ДИРЕКТИВА 2009/24/EC ЕВРОПЕЙСКОГО ПАРЛАМЕНТА И СОВЕТА от 23 апреля 2009 г. о правовой защите компьютерных программ.

Источники