0Pricing
Ethical Hacking Academy · Урок

Основы дизассемблирования

Ghidra и IDA

«Основы дизассемблирования» — бесплатный урок Ethical Hacking Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Ethical Hacking Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Ethical Hacking Academy содержит 4 уроков всего.

Что такое дизассемблирование

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

Это необходимо, когда исходный код недоступен, как всегда бывает с вредоносным ПО.

Дизассемблирование и декомпиляция

Дизассемблирование создаёт ассемблерный код. Декомпиляция идёт дальше, восстанавливая приблизительный псевдокод высокого уровня, похожий на C.

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

Ghidra

Ghidra — бесплатный набор инструментов с открытым исходным кодом для реверс-инжиниринга, созданный NSA. Он дизассемблирует код для многих архитектур и включает мощный декомпилятор.

Благодаря цене и возможностям это основной стартовый инструмент для большинства аналитиков.

IDA Pro

IDA Pro — давно известный коммерческий стандарт с мощным дизассемблером и декомпилятором (при использовании расширения Hex-Rays).

Популярными альтернативами являются IDA Free и такие инструменты, как Binary Ninja и radare2/Cutter.

Загрузка двоичного файла

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

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

Чтение ассемблерного кода

Инструкции ассемблера перемещают данные и выполняют над ними операции. Вот несколько распространённых инструкций x86:

  • mov: копирование данных.
  • push / pop: операции со стеком.
  • call / ret: вызов и возврат из функции.
  • cmp / jmp / je: сравнение и переход.
mov eax, [ebp-4]
cmp eax, 0
je  short loc_401050

Перекрёстные ссылки

Перекрёстные ссылки (xrefs) показывают, где используется функция или строка. Поиск перекрёстных ссылок на подозрительный API, например CreateRemoteThread, сразу переводит Вас к соответствующему коду.

Это позволяет перемещаться по программе, ориентируясь на поведение, а не читать её от начала до конца.

Отслеживание вызовов API

Импортированные вызовы Windows API раскрывают назначение программы. Последовательность VirtualAlloc, затем WriteProcessMemory, а затем CreateRemoteThread — классический пример внедрения процесса.

Распознавание таких шаблонов — основа реверс-инжиниринга вредоносных программ.

Представление в виде графа

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

При сложной логике такое представление гораздо удобнее для чтения, чем линейный список инструкций.

Сочетание с отладкой

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

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

Переименование и аннотирование

По мере того как Вы разбираетесь в функциях и переменных, переименовывайте их и добавляйте комментарии в дизассемблере. Преобразование sub_401000 в decrypt_config значительно упрощает дальнейший анализ.

Именно так, постепенно добавляя обозначения, аналитики шаг за шагом восстанавливают всю логику образца вредоносной программы.

Быстрая проверка

Вспомните различие между двумя основными результатами работы Ghidra.

Итоги

Теперь Вы понимаете основы дизассемблировки:

  • Дизассемблировка выдаёт ассемблерный код, а декомпиляция — псевдокод.
  • Ghidra (бесплатная) и IDA Pro — основные инструменты.
  • Используйте перекрёстные ссылки и шаблоны вызовов API (например, последовательности внедрения), чтобы ориентироваться по поведению программы.
  • Представление в виде графа визуализирует поток управления; для обфусцированного кода сочетайте его с отладчиком.

Далее Вы научитесь обезвреживать упаковщики с помощью распаковки.

Часто задаваемые вопросы

Урок «Основы дизассемблирования» бесплатный?

Да — полный текст урока «Основы дизассемблирования» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Ethical Hacking Academy, подпишись на CoddyKit PRO. Курс Ethical Hacking Academy содержит 4 уроков всего.

Чему я научусь в уроке «Основы дизассемблирования»?

Ghidra и IDA Ты практикуешь Ethical Hacking Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Ethical Hacking Academy?

Предыдущий опыт не требуется. Ethical Hacking Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «Основы дизассемблирования»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Ethical Hacking Academy?

Да. Каждый урок Ethical Hacking Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Статический анализ
  2. Динамический анализ
  3. Основы дизассемблирования
  4. Распаковка
← Назад к Ethical Hacking Academy