Реверс-инжиниринг
Эта статья включает список общих ссылок , но в ней отсутствуют достаточные соответствующие встроенные цитаты . ( январь 2018 г. ) |
Обратное проектирование (также известное как обратное проектирование или обратное проектирование ) — это процесс или метод, с помощью которого человек пытается понять с помощью дедуктивного рассуждения, как ранее созданное устройство, процесс, система или часть программного обеспечения выполняет задачу с очень небольшими затратами (если таковые имеются) понимание того, как именно это происходит. В зависимости от рассматриваемой системы и используемых технологий знания, полученные в ходе реверс-инжиниринга, могут помочь в перепрофилировании устаревших объектов, проведении анализа безопасности или изучении того, как что-то работает. [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
Есть и другие применения реверс-инжиниринга:
- Интерфейс . Обратное проектирование можно использовать, когда системе необходимо взаимодействовать с другой системой и необходимо установить, как обе системы будут согласовывать свои действия. Такие требования обычно существуют для обеспечения совместимости .
- Военный или коммерческий шпионаж . Изучение последних исследований врага или конкурента путем кражи или захвата прототипа и его демонтажа может привести к разработке аналогичного продукта или лучшим мерам противодействия ему.
- Устаревание . Интегральные схемы часто разрабатываются на основе запатентованных систем и производятся на производственных линиях, которые устаревают всего за несколько лет. Когда системы, в которых используются эти детали, больше невозможно обслуживать, поскольку детали больше не производятся, единственный способ включить эту функциональность в новую технологию — это провести реверс-инжиниринг существующего чипа, а затем перепроектировать его с использованием новых инструментов, используя понимание, полученное в результате гид. Еще одна проблема, связанная с устареванием, которую можно решить путем обратного проектирования, — это необходимость поддержки (технического обслуживания и поставки для непрерывной работы) существующих устаревших устройств, которые больше не поддерживаются производителем их оригинального оборудования . Эта проблема особенно остра в военных операциях.
- Анализ безопасности продукта . При этом исследуется принцип работы продукта путем определения характеристик его компонентов и оценки затрат, а также выявляются потенциальные нарушения патентных прав . Также частью анализа безопасности продукта является сбор конфиденциальных данных путем разборки и анализа конструкции компонента системы. [12] Другой целью может быть снятие защиты от копирования или обход ограничений доступа.
- Конкурентная техническая разведка . То есть понять, что на самом деле делает конкурент, а не то, что он говорит.
- Экономия денег . Выяснение того, на что способна электроника, может избавить пользователя от покупки отдельного продукта.
- Перепрофилирование . Устаревшие объекты затем повторно используются другим, но полезным способом.
- Дизайн . Производственные и проектные компании применили реверс-инжиниринг для практического производственного процесса. Компании могут работать над «историческими» производственными коллекциями посредством 3D-сканирования, 3D-моделирования и редизайна. В 2013 году итальянские производители Baldi и Savio Firmino совместно с Флорентийским университетом оптимизировали свои инновации, дизайн и производственные процессы. [13]
Обычное использование
[ редактировать ]Машины
[ редактировать ]Поскольку автоматизированное проектирование (САПР) стало более популярным, реверс-инжиниринг стал жизнеспособным методом создания виртуальной 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. Одним из известных случаев обратного проектирования стала первая , не принадлежащая IBM реализация ПК BIOS , которая положила начало исторической индустрии совместимости с 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]
Методы двоичного программного обеспечения
[ редактировать ]Обратное проектирование программного обеспечения может быть выполнено различными методами.Три основные группы обратного проектирования программного обеспечения:
- Анализ посредством наблюдения за обменом информацией, наиболее распространенный в обратном проектировании протоколов, который включает использование анализаторов шин и анализаторов пакетов , например, для доступа к компьютерной шине или соединению компьютерной сети и выявления данных трафика на них. Затем можно проанализировать поведение шины или сети, чтобы создать автономную реализацию, имитирующую это поведение. Это особенно полезно для обратного проектирования драйверов устройств . Иногда обратному проектированию встроенных систем очень помогают инструменты, намеренно представленные производителем, такие как порты JTAG или другие средства отладки. В Microsoft Windows низкоуровневые отладчики, такие как SoftICE . популярны
- Дизассемблирование с использованием дизассемблера , что означает, что необработанный машинный язык программы читается и понимается в его собственных терминах, только с помощью мнемоники машинного языка . Это работает с любой компьютерной программой, но может занять довольно много времени, особенно для тех, кто не привык к машинному коду. Интерактивный дизассемблер — особенно популярный инструмент.
- Декомпиляция с использованием декомпилятора — процесс, который с разными результатами пытается воссоздать исходный код на каком-то языке высокого уровня для программы, доступной только в машинном коде или байт-коде .
Классификация программного обеспечения
[ редактировать ]Классификация программного обеспечения — это процесс выявления сходства между различными двоичными файлами программного обеспечения (например, двумя разными версиями одного и того же двоичного файла), используемый для обнаружения взаимосвязей кода между образцами программного обеспечения. Традиционно задача выполнялась вручную по нескольким причинам (например, анализ исправлений для обнаружения уязвимостей и нарушения авторских прав ), но теперь ее можно выполнять в некоторой степени автоматически для большого количества образцов.
Этот метод используется в основном для длительных и тщательных задач реверс-инжиниринга (полный анализ сложного алгоритма или большой части программного обеспечения). В целом, статистическая классификация считается сложной проблемой, что также верно и для классификации программного обеспечения, и поэтому мало решений/инструментов, которые хорошо справляются с этой задачей.
Исходный код
[ редактировать ]В ряде инструментов 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, является сшивка изображений вместе, что необходимо, поскольку каждый слой не может быть запечатлен за один снимок. СЭМ необходимо провести сканирование по всей площади схемы и сделать несколько сотен изображений, чтобы охватить весь слой. Сшивка изображений принимает на вход несколько сотен изображений и выводит одно правильно перекрывающееся изображение всего слоя.
Далее сшитые слои необходимо выровнять, поскольку образец после травления невозможно каждый раз ставить в одно и то же положение относительно СЭМ. Поэтому сшитые версии не будут перекрываться корректным образом, как на реальной схеме. Обычно выбираются три соответствующие точки и на их основе применяется преобразование.
Чтобы извлечь структуру схемы, выровненные, сшитые изображения необходимо сегментировать, чтобы выделить важную схему и отделить ее от неинтересного фона и изолирующих материалов.
Наконец, можно проследить провода от одного слоя к другому и восстановить список соединений схемы, содержащий всю информацию о схеме.
Военное применение
[ редактировать ]Этот раздел нуждается в дополнительных цитатах для проверки . ( Июль 2014 г. ) |
Обратное проектирование часто используется людьми для копирования технологий, устройств или информации других стран, которые были получены регулярными войсками на полях или в ходе разведывательных операций. Его часто использовали во время Второй мировой войны и Холодной войны . Вот хорошо известные примеры из Второй мировой войны и позже:
- Канистра : Британские и американские войска во время Второй мировой войны заметили, что у немцев были канистры с бензином превосходного дизайна. Они реконструировали копии этих банок, которые были широко известны как «канистры канистры».
- Nakajima G5N : В 1939 году американская компания Douglas Aircraft Company продала свой DC-4E прототип авиалайнера компании Imperial Japan Airways , которая тайно выступала в качестве прикрытия для Императорского флота Японии дальнего действия , который хотел иметь стратегический бомбардировщик , но ему помешали Неопытность японской авиапромышленности в области тяжелых дальнемагистральных самолетов. DC-4E был передан авиастроительной компании Накадзима и разобран для изучения; В качестве прикрытия японская пресса сообщила, что он разбился в Токийском заливе . [35] [36] Крылья, двигатели и шасси G5N были скопированы непосредственно с DC-4E. [37]
- Panzerschreck : Немцы захватили американскую базуку во время Второй мировой войны и перепроектировали ее, чтобы создать более крупный Panzerschreck.
- Туполев Ту-4 : В 1944 году три американских бомбардировщика B-29, выполнявшие полеты над Японией , были вынуждены приземлиться в Советском Союзе . Советы, у которых не было подобного стратегического бомбардировщика, решили скопировать B-29. За три года они разработали Ту-4, практически идеальную копию. [38]
- РЛС СЦР-584 : скопирована Советским Союзом после Второй мировой войны, известна несколькими модификациями - СЦР-584, Бинокль-Д.
- Ракета Фау-2 . Технические документы на Фау-2 и связанные с ним технологии были захвачены западными союзниками в конце войны. Американцы сосредоточили свои усилия по обратному проектированию с помощью операции «Скрепка» , которая привела к разработке ракеты PGM-11 Redstone . [39] Советы использовали захваченных немецких инженеров для воспроизведения технической документации и планов и работали на захваченном оборудовании, чтобы создать свой клон ракеты Р-1 . Так началась послевоенная советская ракетная программа, которая привела к созданию Р-7 и началу космической гонки .
- К-13/Р-3С Ракета ( по классификации НАТО AA-2 Atoll), советская реконструированная копия AIM-9 Sidewinder , стала возможной после того, как тайваньская (ROCAF) AIM-9B поразила китайский МиГ-17 НОАК. без взрыва в сентябре 1958 года. [40] Ракета застряла в корпусе планера, и пилот вернулся на базу, пройдя, как сказали бы советские ученые, университетский курс разработки ракет.
- Ракета Toophan : В мае 1975 года переговоры между Ираном и Hughes Missile Systems о совместном производстве ракет BGM-71 TOW и Maverick зашли в тупик из-за разногласий в структуре цен, а последующая революция 1979 года положила конец всем планам такого совместного производства. Позже Ирану удалось провести реверс-инжиниринг ракеты и теперь производит свою собственную копию Toophan.
- Китай провел реверс-инжиниринг многих образцов западной и российской техники, от истребителей до ракет и автомобилей HMMWV , таких как МиГ-15,17,19,21 (который стал J-2,5,6,7) и Су. -33 (ставший J-15). [41]
- Во время Второй мировой войны польские и британские криптографы изучали захваченные немецкие машины шифрования сообщений « Энигма » на наличие слабых мест. Их работа затем была смоделирована на электромеханических устройствах, « бомбах », которые испробовали все возможные настройки шифраторов машин «Энигма», которые помогли взломать закодированные сообщения, отправленные немцами.
- Также во время Второй мировой войны британские ученые проанализировали и разрушили ряд все более совершенных радионавигационных систем, используемых Люфтваффе для выполнения управляемых бомбардировок в ночное время. Британские меры противодействия этой системе были настолько эффективными, что в некоторых случаях немецкие самолеты по сигналам направлялись на посадку на базах Королевских ВВС, поскольку они считали, что вернулись на территорию Германии.
Генные сети
[ редактировать ]Концепции обратного проектирования также применялись в биологии , в частности, для понимания структуры и функций сетей регуляции генов . Они регулируют почти все аспекты биологического поведения и позволяют клеткам осуществлять физиологические процессы и реагировать на возмущения. Таким образом, понимание структуры и динамического поведения генных сетей является одной из важнейших задач системной биологии, имеющей немедленные практические последствия в ряде приложений, выходящих за рамки фундаментальных исследований. [42] Существует несколько методов обратного проектирования сетей регуляции генов с использованием методов молекулярной биологии и науки о данных. Обычно их делят на шесть классов: [43]
- Методы совместной экспрессии основаны на идее, что если два гена демонстрируют схожий профиль экспрессии, они могут быть связаны между собой, хотя на основе совместной экспрессии нельзя просто вывести причинно-следственную связь.
- Методы последовательностей мотивов анализируют промоторы генов, чтобы найти специфические факторы транскрипции домены, связывающие . Если прогнозируется, что фактор транскрипции связывается с промотором определенного гена, можно предположить наличие регуляторной связи.
- иммунопреципитации хроматина Методы (ChIP) исследуют общегеномный профиль связывания ДНК выбранных факторов транскрипции, чтобы сделать вывод об их нижестоящих генных сетях.
- Методы ортологии передают знания о генных сетях от одного вида к другому.
- Литературные методы включают интеллектуальный анализ текста и ручные исследования для выявления предполагаемых или экспериментально доказанных связей генных сетей.
- Методы транскрипционных комплексов используют информацию о белок-белковых взаимодействиях между факторами транскрипции, тем самым расширяя концепцию генных сетей, включив в нее комплексы регуляции транскрипции.
Часто надежность генной сети проверяется с помощью экспериментов по генетическим возмущениям с последующим динамическим моделированием, основанным на том принципе, что удаление одного узла сети оказывает предсказуемое влияние на функционирование остальных узлов сети. [44] Приложения обратной инженерии генных сетей варьируются от понимания механизмов физиологии растений. [45] к выделению новых целей противораковой терапии. [46]
Перекрытие с патентным законодательством
[ редактировать ]Обратное проектирование применяется в первую очередь для понимания процесса или артефакта, способ его создания, использования или внутренние процессы не были разъяснены его создателем.
Запатентованные объекты сами по себе не требуют обратного проектирования для изучения, поскольку суть патента заключается в том, что изобретатели сами предоставляют подробное публичное раскрытие и взамен получают юридическую защиту изобретения соответствующего . Однако предмет, произведенный по одному или нескольким патентам, может также включать в себя другую технологию, которая не запатентована и не раскрыта. Действительно, одной из распространенных целей реверс-инжиниринга является определение того, содержит ли продукт конкурента нарушение патентных прав или авторских прав .
Законность
[ редактировать ]Соединенные Штаты
[ редактировать ]В Соединенных Штатах, даже если артефакт или процесс защищены коммерческой тайной , реверс-инжиниринг артефакта или процесса часто является законным, если он был получен законным путем. [47]
Реверс-инжиниринг компьютерного программного обеспечения часто подпадает как под действие договорного права как нарушение договора , так и под действие любых других соответствующих законов. Это связано с тем, что большинство лицензионных соглашений с конечными пользователями прямо запрещают это, а суды США постановили, что если такие условия присутствуют, они отменяют закон об авторском праве, который прямо разрешает это (см. Bowers v. Baystate Technologies). [48] [49] ). В соответствии с разделом 103(f) Закона об авторском праве в цифровую эпоху ( 17 USC § 1201 (f) ), лицо, законно владеющее программой, может провести обратный инжиниринг и обойти ее защиту, если это необходимо для достижения «взаимодействия», т.е. термин, который широко охватывает другие устройства и программы, которые могут взаимодействовать с ним, использовать его, а также использовать и передавать данные на него и обратно полезными способами. Существует ограниченное исключение, которое позволяет делиться полученными таким образом знаниями и использовать их в целях совместимости. [а]
Евросоюз
[ редактировать ]Директива ЕС 2009/24 о правовой защите компьютерных программ, которая заменила предыдущую директиву (1991 г.), [50] регулирует реверс-инжиниринг в Европейском Союзе . [51] [б]
См. также
[ редактировать ]- Антикитерский механизм
- Обратная индукция
- Бенчмаркинг
- Анализатор шины
- Конда
- Клон (вычисления)
- Дизайн чистой комнаты
- ШМ
- Морфинг кода
- Виртуальная игровая станция Connectix
- Подделка
- Криптоанализ
- Декомпилировать
- Деформация
- Закон об авторском праве в цифровую эпоху (DMCA)
- Дизассемблер
- Ключ
- Судебная инженерия
- Промышленное компьютерное сканирование
- Интерактивный дизассемблер
- Метамодель открытия знаний
- Лазерный сканер
- Список тем производства
- Листероидные двигатели
- Логический анализатор
- зарплата
- Перепрофилирование
- Обратная архитектура
- Круглосуточный инжиниринг
- Ретродикция
- Sega v. Accolade
- Программная археология
- Взлом программного обеспечения
- Дигитайзер структурированного света
- Инжиниринг стоимости
Примечания
[ редактировать ]- ^ В разделе говорится:
(f) Реверс-инжиниринг.
(1) Несмотря на положения подраздела (a)(1)(A), лицо, законно получившее право на использование копии компьютерной программы, может обойти технологическую меру, которая эффективно контролирует доступ к определенной части этой программы. с единственной целью идентификации и анализа тех элементов программы, которые необходимы для достижения совместимости независимо созданной компьютерной программы с другими программами и которые ранее не были легко доступны лицу, участвующему в обходе, в той степени, в которой это возможно. действия по идентификации и анализу не являются нарушением прав согласно этому разделу.
(2) Несмотря на положения подразделов (a)(2) и (b), лицо может разрабатывать и использовать технологические средства для обхода технологических мер или для обхода защиты, обеспечиваемой технологическими мерами, чтобы обеспечить идентификацию и анализа в соответствии с параграфом (1) или с целью обеспечения совместимости независимо созданной компьютерной программы с другими программами, если такие средства необходимы для достижения такой совместимости, в той степени, в которой это не представляет собой нарушение авторских прав в соответствии с настоящим заголовком.
(3) Информация, полученная посредством действий, разрешенных в соответствии с параграфом (1), и средствами, разрешенными в соответствии с параграфом (2), может быть предоставлена другим лицам, если лицо, упомянутое в параграфе (1) или (2), в зависимости от случая может быть, предоставляет такую информацию или средства исключительно с целью обеспечения совместимости независимо созданной компьютерной программы с другими программами, и в той степени, в которой это не представляет собой нарушение прав в соответствии с настоящим заголовком или применимое законодательство, кроме этого раздела.
(4) Для целей настоящего подраздела термин «взаимодействие» означает способность компьютерных программ обмениваться информацией, а также способность таких программ взаимно использовать информацию, которой был произведен обмен. - ^ В директиве говорится:
Несанкционированное воспроизведение, перевод, адаптация или преобразование формы кода, в котором предоставлена копия программы для ЭВМ, является нарушением исключительных прав автора. Тем не менее, могут существовать обстоятельства, когда такое воспроизведение кода и трансляция его формы необходимы для получения необходимой информации для достижения совместимости самостоятельно созданной программы с другими программами. Поэтому следует учитывать, что только в этих ограниченных обстоятельствах выполнение действий по воспроизведению и переводу лицом, имеющим право на использование копии программы, или от его имени является законным и совместимым с добросовестной практикой и, следовательно, должно быть разрешено. считается не требующим разрешения правообладателя. Целью этого исключения является предоставление возможности соединить все компоненты компьютерной системы, в том числе разных производителей, для совместной работы. Такое исключение из исключительных прав автора не может быть использовано способом, который ущемляет законные интересы правообладателя или противоречит нормальному использованию программы.
Ссылки
[ редактировать ]- ^ Jump up to: а б «Что такое реверс-инжиниринг? Как он работает» . ПоискКачествоПрограммного обеспечения . Проверено 27 июля 2022 г.
- ^ «Реверс-инжиниринг» . Ethics.csc.ncsu.edu . Проверено 27 июля 2022 г.
- ^ Гарсия, Хорхе (декабрь 2015 г.). «Разборка блоков: модель обратного проектирования и применимая эвристика» (PDF) . Core.ac.uk. Проверено 4 июня 2023 г.
- ^ Тайер, Кен. «Как работает обратный инжиниринг?» . глобальная спец . Глобальная спецификация IEEE . Проверено 26 февраля 2018 г.
- ^ Вильяверде, Алехандро Ф.; Банга, Хулио Р. (6 февраля 2014 г.). «Обратный инжиниринг и идентификация в системной биологии: стратегии, перспективы и проблемы» . Журнал интерфейса Королевского общества . 11 (91): 20130505. doi : 10.1098/rsif.2013.0505 . ПМЦ 3869153 . ПМИД 24307566 .
- ^ Jump up to: а б с Чикофски, Э.Дж. и Кросс, Дж.Х. II (1990). «Обратное проектирование и восстановление конструкции: таксономия». Программное обеспечение IEEE . 7 (1): 13–17. дои : 10.1109/52.43044 . S2CID 16266661 .
- ^ Jump up to: а б Обзор обратного проектирования и понимания программ. Майкл Л. Нельсон, 19 апреля 1996 г., ODU CS 551 – Исследование разработки программного обеспечения. arXiv : cs/0503068v1
- ^ Винеш Раджа; Киран Дж. Фернандес (2007). Реверс-инжиниринг: промышленная перспектива . Springer Science & Business Media. п. 3. ISBN 978-1-84628-856-2 .
- ^ Джонатан Бэнд; Масанобу Като (2011). Интерфейсы в пробной версии 2.0 . МТИ Пресс. п. 136. ИСБН 978-0-262-29446-1 .
- ^ Jump up to: а б с Чикофски, Э.Дж.; Кросс, Дж. Х. (январь 1990 г.). «Обратное проектирование и восстановление конструкции: таксономия» (PDF) . Программное обеспечение IEEE . 7 : 13–17. дои : 10.1109/52.43044 . S2CID 16266661 . Архивировано из оригинала (PDF) 17 апреля 2018 г. Проверено 2 июля 2012 г.
- ^ Jump up to: а б с д и ж г час Эйлам, Эльдад (2005). Реверс: секреты реверс-инжиниринга . Джон Уайли и сыновья. ISBN 978-0-7645-7481-8 .
- ^ Целевая группа по интернет-инжинирингу RFC 2828 Глоссарий по интернет-безопасности
- ^ Карвовский, Вальдемар; Тшелински, Стефан; Мругальск, Беата; ДиНиколантонио, Массимо; Росси, Эмилио (2018). Достижения в производстве, управлении производством и контроле процессов . стр. 287–288.
- ^ Варади, Т; Мартин, Р; Кокс, Дж (1997). «Обратное проектирование геометрических моделей – введение». Компьютерное проектирование . 29 (4): 255–268. дои : 10.1016/S0010-4485(96)00054-1 .
- ^ «Реверс-инжиниринг» .
- ^ Патель, Суреш (25 августа 2022 г.). «Реверс-инжиниринг печатной платы» . Электронный дизайн . Проверено 1 февраля 2024 г.
- ^ Патель, Суреш (25 августа 2022 г.). «Реверс-инжиниринг печатной платы» . Электронный дизайн . Проверено 1 февраля 2024 г.
- ^ Уорден, Р. (1992). Повторное использование программного обеспечения и обратное проектирование на практике . Лондон, Англия: Чепмен и Холл. стр. 283–305.
- ^ «Рабочая конференция по обратному проектированию (WCRE)» . uni-trier.de . Библиография по информатике. Архивировано из оригинала 14 марта 2017 года . Проверено 22 февраля 2018 г.
- ^ Шахбаз, Музаммил (2012). Обратное проектирование и тестирование компонентов программного обеспечения «черного ящика»: методами грамматического вывода . ЛАП ЛАМБЕРТ Академическое издательство. ISBN 978-3-659-14073-0 .
- ^ Чувакин Антон; Сайрус Пейкари (январь 2004 г.). Воин безопасности (1-е изд.). О'Рейли. Архивировано из оригинала 22 мая 2006 г. Проверено 25 мая 2006 г.
- ^ Самуэльсон, Памела и Скотчмер, Сюзанна (2002). «Закон и экономика обратного инжиниринга» . Йельский юридический журнал . 111 (7): 1575–1663. дои : 10.2307/797533 . JSTOR 797533 . Архивировано из оригинала 15 июля 2010 г. Проверено 31 октября 2011 г.
- ^ «Самба: Введение» . 27 ноября 2001 г. Проверено 7 мая 2009 г.
- ^ Ли, Ньютон (2013). Борьба с терроризмом и кибербезопасность: полная информационная осведомленность (2-е изд.). Springer Science+Business Media. п. 110. ИСБН 978-1-4614-7204-9 .
- ^ В. Цуй, Дж. Каннан и Х. Дж. Ван. Discoverer: автоматическое обратное проектирование протоколов на основе сетевых трассировок. В материалах 16-го симпозиума по безопасности USENIX на симпозиуме по безопасности USENIX, стр. 1–14.
- ^ В. Цуй, М. Пейнадо, К. Чен, Х. Дж. Ван и Л. Ирун-Бриз. Тупни: Автоматический реверс-инжиниринг входных форматов. В материалах 15-й конференции ACM по компьютерной и коммуникационной безопасности, стр. 391–402. АКМ, октябрь 2008 г.
- ^ Jump up to: а б П. М. Компаретти, Г. Вондрачек, К. Крюгель и Э. Кирда. Prospex: извлечение спецификации протокола. В материалах 30-го симпозиума IEEE по безопасности и конфиденциальности 2009 г., стр. 110–125, Вашингтон, 2009 г. Компьютерное общество IEEE.
- ^ Голд, Э (1978). «Сложность идентификации автомата по заданным данным» . Информация и контроль . 37 (3): 302–320. дои : 10.1016/S0019-9958(78)90562-4 .
- ^ Д. Англуин (1987). «Изучение регулярных множеств из запросов и контрпримеров» . Информация и вычисления . 75 (2): 87–106. дои : 10.1016/0890-5401(87)90052-6 .
- ^ Сай Чо, Д. Бабич, Р. Шин и Д. Сонг. Вывод и анализ формальных моделей протоколов управления и контроля ботнетов , Конференция ACM 2010 г. по компьютерной и коммуникационной безопасности.
- ^ Полиглот: автоматическое извлечение формата сообщения протокола с использованием динамического двоичного анализа . Дж. Кабальеро, Х. Инь, З. Лян и Д. Сун. Материалы 14-й конференции ACM по компьютерной и коммуникационной безопасности, стр. 317–329.
- ^ Вольфганг Ранкл, Вольфганг Эффинг, Справочник по смарт-картам (2004)
- ^ Т. Вельц: Смарт-карты как способы оплаты. [ мертвая ссылка ] (2008), Семинар ITS Security, Рурский университет, Бохум
- ↑ Дэвид К. Маскер: Защита и использование интеллектуальной собственности в электронике. Архивировано 9 июля 2011 г. на Wayback Machine , конференции IBC, 10 июня 1998 г.
- ^ Франсильон, Рене Дж. (1988) [1979]. McDonnell Douglas Aircraft с 1920 года . Том. 1 (2-е изд.). Аннаполис, Мэриленд: Издательство Военно-морского института. стр. 265–268. ISBN 0-87021-428-4 .
- ^ Уэстелл, Фриман (ноябрь 1999 г.). «Большое железо, большие двигатели и еще большие головные боли: создание первых экспериментальных стратегических бомбардировщиков». Воздушная мощь . 29 (6): 18, 49–50.
- ^ Анджелуччи, Энцо; Матрикарди, Паоло (1978). -Самолеты времен Второй мировой войны: Том 2 . Чикаго: Рэнд МакНелли и компания. п. 127. ИСБН 0-528-88171-Х .
- ^ Йем Гордон и Владимир Ригмант, Туполев Ту-4: Советская суперкрепость (Хинкли, Великобритания: Мидленд, 2002).
- ^ «Ракета Редстоун» . Centennialofflight.net . Проверено 27 апреля 2010 г.
- ^ «ВВС Китая: развивающиеся концепции, роли и возможности», Центр изучения военных дел Китая (США), издательство National Defense University Press, стр. 277
- ^ Чандрашекар, С., Р. Нагаппа, Л. Сундаресан и Н. Рамани. 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 -истребитель-китайские-чиновники-защитят-новый-истребитель- [ постоянная мертвая ссылка ] как-китайский-оригинал, но-вопросы-остаются
- ^ Джорджи, Федерико М. (2020). «Реверс-инжиниринг генной сети: следующее поколение». Biochimica et Biophysica Acta (BBA) - Механизмы регуляции генов . 1863 (6): 194523. doi : 10.1016/j.bbagrm.2020.194523 . hdl : 11585/753853 . ISSN 1874-9399 . ПМИД 32145356 . S2CID 212629142 .
- ^ Jump up to: а б Меркателли, Даниэле; Скаламбра, Лаура; Триболи, Лука; Рэй, Форест; Джорджи, Федерико М. (2020). «Ресурсы для вывода о генной регуляторной сети: практический обзор». Biochimica et Biophysica Acta (BBA) - Механизмы регуляции генов . 1863 (6): 194430. doi : 10.1016/j.bbagrm.2019.194430 . ISSN 1874-9399 . ПМИД 31678629 . S2CID 207895066 .
- ^ Тегнер, Дж.; Юнг, МКС; Хэсти, Дж.; Коллинз, Джей-Джей (2003). «Обратное проектирование генных сетей: интеграция генетических возмущений с динамическим моделированием» . Труды Национальной академии наук . 100 (10): 5944–5949. Бибкод : 2003PNAS..100.5944T . дои : 10.1073/pnas.0933416100 . ISSN 0027-8424 . ПМК 156306 . ПМИД 12730377 .
- ^ Фридель, Светлана; Усадель, Бьорн; фон Вирен, Николаус; Сринивасулу, Несе (2012). «Обратный инжиниринг: ключевой компонент системной биологии, позволяющий раскрыть глобальные перекрестные помехи абиотического стресса» . Границы в науке о растениях . 3 : 294. doi : 10.3389/fpls.2012.00294 . ISSN 1664-462X . ПМЦ 3533172 . ПМИД 23293646 .
- ^ Лефевр, Селин; Рикхоф, Габриэль; Калифано, Андреа (2012). «Реверс-инжиниринг человеческих регуляторных сетей» . Междисциплинарные обзоры Wiley: системная биология и медицина . 4 (4): 311–325. дои : 10.1002/wsbm.1159 . ISSN 1939-5094 . ПМК 4128340 . ПМИД 22246697 .
- ^ «Коммерческая тайна 101», Тематическая статья, март 2011 г. АСМЭ. Проверено 31 октября 2013 г.
- ^ Обсуждение дела Бэйстейт против Бауэрса . Utsystem.edu. Проверено 29 мая 2011 г.
- ^ Гросс, Грант. (2003-06-26) Дело о контракте может навредить реверс-инжинирингу | Мир разработчиков . ИнфоМир. Проверено 29 мая 2011 г.
- ^ Директива Совета 91/250/EEC от 14 мая 1991 г. о правовой защите компьютерных программ . Eur-lex.europa.eu. Проверено 29 мая 2011 г.
- ^ Директива 2009/24/EC Европейского парламента и Совета от 23 апреля 2009 г. о правовой защите компьютерных программ.
Источники
[ редактировать ]- Эйлам, Эльдад (2005). Реверс: секреты реверс-инжиниринга . Издательство Уайли . п. 595. ИСБН 978-0-7645-7481-8 .
- Элвидж, Джулия, «Использование обратного проектирования для выявления нарушений патентных прав», Chipworks, сентябрь 2010 г. Интернет: http://www.photonics.com/Article.aspx?AID=44063
- Чипрессо, Теодоро (2009). «Образование в области обратного инжиниринга программного обеспечения» . Магистерская диссертация СЖГУ . Проверено 22 августа 2009 г.
- Хаузи А. Мюллер и Хольгер М. Кинле, «Небольшой учебник по обратному проектированию программного обеспечения», технический отчет, Университет Виктории, 17 страниц, март 2009 г. Интернет: http://holgerkienle.wikispaces.com/file/view/MK -UVic-09.pdf
- Хейнс, Генри, «Определение нарушений с помощью дифракции рентгеновских лучей», « Процесс химического машиностроения » , январь 1999 г. (пример обратного проектирования, используемого для обнаружения нарушения прав интеллектуальной собственности)
- Хуанг, Эндрю (2003). Взлом Xbox: введение в обратный инжиниринг . Пресс без крахмала . ISBN 978-1-59327-029-2 .
- Джеймс, Дик (19 января 2006 г.). «Обратное проектирование обеспечивает знание продукта и способствует распространению технологий» . Электронный дизайн . Пентон Медиа, Инк . Проверено 3 февраля 2009 г.
- Месслер, Роберт (2013). Реверс-инжиниринг: механизмы, конструкции, системы и материалы . МакГроу Хилл . ISBN 978-0-07-182516-0 . (введение в демонтаж оборудования, включая методологию и цели)
- Раджа, Винеш; Фернандес, Киран Дж. (2008). Реверс-инжиниринг – промышленная перспектива . Спрингер . п. 242. ИСБН 978-1-84628-855-5 .
- Самуэльсон, Памела и Скотчмер, Сюзанна, «Закон и экономика обратного проектирования», 111 Yale LJ 1575 (2002). Онлайн: http://people.ischool.berkeley.edu/~pam/papers/l&e%20reveng3.pdf.
- Шульман, Эндрю; Браун, Ральф Д .; Макси, Дэвид; Михелс, Раймонд Дж.; Кайл, Джим (1994) [ноябрь 1993 г.]. Недокументированная DOS: Руководство программиста по зарезервированным функциям и структурам данных MS-DOS - расширено и включает MS-DOS 6, Novell DOS и Windows 3.1 (2-е изд.). Ридинг, Массачусетс: Эддисон Уэсли . стр. 229–241 . ISBN 0-201-63287-Х . (xviii+856+vi страниц, 3,5-дюймовая дискета) Опечатки: [1] [2] (Примечание. Об общей методологии обратного проектирования, применяемой к программному обеспечению массового рынка: программа для изучения DOS, дизассемблирование DOS.)
- Шульман, Эндрю; и др. (1992). Недокументированная Windows: Руководство программиста по зарезервированным функциям API Microsoft Windows . Эддисон Уэсли . ISBN 978-0-201-60834-2 . (стр. 59–188 по общей методологии обратного проектирования, применимой к программному обеспечению массового рынка: исследование исполняемых файлов Windows, дизассемблирование Windows, инструменты для изучения Windows)
- Шульман, Эндрю, «Спрятаться на виду: использование обратного проектирования для выявления нарушений патентных прав на программное обеспечение», Intellectual Property Today , ноябрь 2010 г. Интернет: http://www.iptoday.com/issues/2010/11/hiding-in- простое-использование-реверс-инжиниринга-для-раскрытия-нарушения-патента-программного обеспечения.asp
- Шульман, Эндрю, «Открыто для проверки: использование обратного проектирования для выявления предшествующего уровня программного обеспечения», New Matter (Секция интеллектуальной собственности штата Калифорния), лето 2011 г. (Часть 1); Осень 2011 г. (Часть 2). Интернет: http://www.SoftwareLitigationConsulting.com .
- Тамм, Майк (2007). «Говорящая тактика» (PDF) . Конференция IEEE 2007 по пользовательским интегральным схемам (CICC) . IEEE, Inc. Проверено 3 февраля 2009 г.