Ghidra: навигация и аннотирование двоичных файлов
Импортируйте двоичный файл, изучайте дизассемблированный и декомпилированный код, переименовывайте переменные и добавляйте комментарии.
«Ghidra: навигация и аннотирование двоичных файлов» — бесплатный урок Cyber Security Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cyber Security Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cyber Security Academy содержит 4 уроков всего.
Что такое Ghidra
Ghidra — бесплатный инструмент с открытым исходным кодом для обратной разработки, созданный NSA и опубликованный в 2019 году. Он поддерживает дизассемблирование, декомпиляцию, написание сценариев и совместный анализ в Linux, macOS и Windows.
Загрузка двоичного файла
Открытие двоичного файла в Ghidra:
- Создайте новый проект
- Импортируйте файл (Файл → Импортировать файл)
- Дождитесь завершения автоматического анализа (распознаются функции, строки и типы данных)
- Откроется CodeBrowser с представлениями дизассемблирования и декомпилятора
Интерфейс Ghidra
Основные окна Ghidra:
- Дерево программ — разделы (.text, .data, .plt)
- Дерево символов — функции, метки, импорт и экспорт
- Листинг — представление дизассемблирования
- Декомпилятор — реконструкция в виде псевдокода на C
- Функции — список всех распознанных функций
Переход к точке входа
Начните анализ с точки входа программы или main():
- Нажмите
G, чтобы перейти к адресу или символу - Найдите «main» в дереве символов
- Дважды щёлкните любую функцию, чтобы перейти к ней
Чтение вывода декомпилятора
Декомпилятор Ghidra создаёт псевдокод на C, который читать проще, чем ассемблер. Результат не будет идеальным: имена переменных обобщённые (param_1, local_10), а поток управления может выглядеть странно. Однако он достаточно ясно показывает логику, чтобы понять, что делает код.
Переименование переменных и функций
Аннотирование повышает читаемость:
- Щёлкните переменную правой кнопкой мыши → Переименовать (или нажмите
L) - Щёлкните функцию правой кнопкой мыши → Переименовать функцию
- Добавляйте комментарии с помощью
;(в конце строки) или в стиле/*...*/
Переименование помогает постепенно накапливать контекст по мере изучения двоичного файла.
Распознавание строк
Строки незаменимы для понимания назначения программы:
- Окно → Определённые строки показывает все строковые константы
- Щёлкните строку, чтобы перейти к месту её использования в коде
- Сообщения об ошибках, пути к файлам, URL-адреса и ключи реестра раскрывают функциональность
Перекрёстные ссылки (XREF)
Перекрёстные ссылки показывают, где вызывается или используется функция либо переменная. Нажмите X на любом символе, чтобы увидеть все ссылки. Это крайне важно для поиска места, где пользовательский ввод попадает в функцию или выполняются проверки безопасности.
Создание сценариев для Ghidra
В Ghidra есть API для создания сценариев на Python/Java:
# Python script to find all calls to strcpy:
from ghidra.program.model.symbol import RefType
for ref in currentProgram.getReferenceManager().getReferencesTo(toAddr(0x401234)):
print(ref.getFromAddress())Анализ вредоносных программ с помощью Ghidra
При анализе вредоносных программ:
- Распознавайте приёмы противодействия анализу (защиту от отладки и обфускацию кода)
- Находите функции сетевого взаимодействия (socket, connect, WinInet)
- Находите криптографические функции (ищите константы S-блока AES: 0x63, 0x7c...)
- Извлекайте URL-адреса C2 из расшифрованных строк
Ghidra и IDA Pro
Ghidra и IDA Pro:
- Ghidra: бесплатная, с открытым исходным кодом, поддерживает сценарии и имеет хороший декомпилятор
- IDA Pro: отраслевой стандарт, более быстрый анализ, лучшая экосистема подключаемых модулей, высокая стоимость ($$$)
- Для большинства задач возможностей Ghidra вполне достаточно; IDA подходит для профессиональных лабораторий анализа вредоносных программ
Быстрая проверка: Ghidra
Какая функция Ghidra показывает все места в двоичном файле, где вызывается определённая функция или на неё либо переменную ссылаются?
Итоги урока
Ghidra — бесплатный инструмент реверс-инжиниринга, разработанный NSA, с возможностями дизассемблирования, декомпиляции и создания сценариев. Основной рабочий процесс: загрузить двоичный файл, запустить автоматический анализ, перейти к main(), использовать декомпилятор для изучения логики, переименовать переменные, применять XREF для отслеживания потока данных и искать строки для получения контекста. Аннотирование помогает последовательно углублять понимание. Создание сценариев автоматизирует повторяющиеся задачи анализа.
Часто задаваемые вопросы
Урок «Ghidra: навигация и аннотирование двоичных файлов» бесплатный?
Да — полный текст урока «Ghidra: навигация и аннотирование двоичных файлов» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Cyber Security Academy, подпишись на CoddyKit PRO. Курс Cyber Security Academy содержит 4 уроков всего.
Чему я научусь в уроке «Ghidra: навигация и аннотирование двоичных файлов»?
Импортируйте двоичный файл, изучайте дизассемблированный и декомпилированный код, переименовывайте переменные и добавляйте комментарии. Ты практикуешь Cyber Security Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Cyber Security Academy?
Предыдущий опыт не требуется. Cyber Security Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Ghidra: навигация и аннотирование двоичных файлов»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Cyber Security Academy?
Да. Каждый урок Cyber Security Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Ghidra: навигация и аннотирование двоичных файлов
- Основы ассемблера x86/x64 для реверс-инженеров
- Динамический анализ с GDB и pwndbg
- Деобфускация и методы противодействия анализу