Такие читатели, как вы, помогают поддерживать MUO. Когда вы совершаете покупку по ссылкам на нашем сайте, мы можем получать партнерскую комиссию. Читать далее.

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

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

Что такое обратный инжиниринг?

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

  • Исходный анализ программного обеспечения с закрытым исходным кодом
  • Анализ уязвимостей
  • Анализ вредоносных программ
  • Взлом и исправление
instagram viewer

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

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

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

Основные части компьютерной архитектуры

Реверс-инжиниринг практически невозможен, если вы не понимаете архитектуру компьютера. Вам необходимо изучить четыре основные части:

  • Вход: Набор методов для ввода данных.
  • Процессор: CPU обрабатывает входящие данные и передает их владельцам. Это центральный процессор.
  • Память: Пространство, в котором временно хранятся данные во время обработки.
  • Выход: результат, который видит конечный пользователь.

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

Погрузитесь в глубины процессора

Если вы действительно хотите стать экспертом в обратном проектировании и глубоко погрузиться в эту тему, вам необходимо иметь подробные знания об оборудовании, низкоуровневых языках и особенно о процессоре. Ключевые темы, которые вам необходимо знать о ЦП:

  1. Устройство управления: отвечает за обработку данных в ЦП и их передачу в соответствующие поля. Вы можете думать об этом устройстве как о механизме управления маршрутизацией.
  2. АЛУ: это расшифровывается как арифметико-логическое устройство. Здесь происходят некоторые арифметические и логические операции. Если вы углубитесь в математику, вы увидите, что основные четыре операции по сути являются вариациями сложения. Таким образом, ALU основан на агрегации. Например, вычитание двух из трех равносильно прибавлению минус два к трем.
  3. Регистры: Это области внутри ЦП, которые содержат обработанные данные. Существуют различные типы регистров, как и различные типы переменных в языке программирования. Регистр отвечает за поддержание типа и атрибутов назначенных ему данных.
  4. Сигналы: Если вы хотите, чтобы ЦП выполнял множество различных операций одновременно, необходим какой-то метод их организации. Элементы, которые делают это, называются сигналами. Каждая транзакция действует в соответствии с сигналами, которые гарантируют, что она не будет мешать другому процессу.
  5. Автобус: Путь, используемый данными для перемещения от одного модуля к другому. Обратите внимание, как название предполагает транспорт.

Концепции, которые вы часто будете слышать в реверс-инжиниринге

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

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

  • 1. EAX: Обозначает накопительный регистр. Обычно он сохраняет данные, которые подпадают под категорию арифметических операций.
  • 2. EBX: Обозначает базовый регистр. Он играет роль в косвенной адресации.
  • 3. EDX: Обозначает регистр данных. EDX помогает другим регистрам.
  • 4. EIP: Обозначает указатель инструкций. Содержит адрес домена для запуска.
  • 5. ЭСП: Содержит базовый адрес.
  • 6. ЭСИ: содержит информацию об исходном индексе.
  • 7. ЭОД: Сохраняет информацию об индексе назначения.

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

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

Что вы будете делать со всем этим?

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

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