Reverse engineering, Реверс-инжиниринг

#3 Реверс-инжиниринг. Инструменты.

Здравствуйте, дорогие друзья.

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


Инструменты бинарного анализа
Инструменты бинарного анализа используются для анализа двоичных файлов и извлечения информации о файле. Аналитик сможет определить, какие приложения могут считывать или запускать двоичный файл. Типы файлов обычно определяются по их байтам магического заголовка. Эти волшебные байты заголовка обычно располагаются в начале файла. Например, исполняемый файл Microsoft, EXE-файл, начинается с заголовка MZ (считается, что MZ — это инициалы Марка Збиковски, разработчика из Microsoft во времена DOS). С другой стороны, документы Microsoft Office Word содержат эти первые четыре байта в качестве волшебного заголовка:

документы Microsoft Office Word содержат эти первые четыре байта в качестве волшебного заголовка

Шестнадцатеричные байты на предыдущем скриншоте отображаются как DOC-файл, другая информация, такая как текстовая строка, также содержит подсказки. На следующем скриншоте показана информация, указывающая на то, что программа, скорее всего, была создана с использованием Window Forms:

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

Дизассемблеры
Дизассемблеры используются для просмотра низкоуровневого кода программы. Чтение низкоуровневого кода требует знания языка ассемблера. Анализ, выполняемый с помощью дизассемблера, дает информацию об условиях выполнения и системных взаимодействиях, которые программа будет выполнять при выполнении. Однако при чтении низкоуровневого кода особенно важно, чтобы программа использовала функции интерфейса прикладных программ (API). На следующем снимке экрана показан фрагмент кода программного модуля, который использует API Get Job(). Этот API используется для получения информации о задании на печать, как показано здесь:

API Get Job()

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


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


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


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

На этом все. Всем хорошего дня!

Цикл статей по реверс-инжинирингу.