reverseenengineering:soft_ghidra:manual

Ghidra: Инструкция для начинающих

Ghidra — это мощный фреймворк для анализа бинарных файлов, разработанный Агентством национальной безопасности США (NSA) и опубликованный как open-source. Поддерживает множество процессорных архитектур и платформ, предоставляет встроенный декомпилятор, инструменты для редактирования кода, исследования памяти, поиска уязвимостей и реверс-инжиниринга.

  • ✅ Поддержка ELF, PE, Mach-O, raw binary и др.
  • ✅ Декомпиляция в Си-подобный код
  • ✅ Расширяемость на Java и Python (Jython)
  • ✅ Совместимость с IDA-скриптами через GhidraBridge
  • ✅ Интеграция с GDB, x64dbg, BinNavi, angr и др.
  • Скачать: https://ghidra-sre.org/
  • Установите Java JDK (рекомендуется 17+)
  • Распакуйте архив → откройте `ghidraRun`
  • Опционально: подключите GhidraBridge, Sleigh, BinExport
Раздел Описание
Project Manager Создание и загрузка проектов
CodeBrowser Основное рабочее окно
Decompiler Окно декомпиляции в C-подобный код
Listing/Bytes Ассемблер, байты, инструкции
Symbol Tree Символы, функции, метки, строки
Function Graph Визуальный граф вызовов
Memory/Registers Просмотр памяти, сегментов, регистров

1. Создайте новый проект

  1. Project → New Project → Non-Shared
  2. Назовите и выберите папку

2. Импортируйте бинарь

  1. File → Import File
  2. Выберите `.exe`, `.elf`, `.bin`, `.so`, `.dll` и т.д.
  3. Ghidra определит тип автоматически

3. Запустите анализ

  1. После импорта появится диалог `Auto Analysis`
  2. Выберите нужные опции (по умолчанию включены все)

4. Откройте CodeBrowser

  1. Дважды кликните на бинаре в дереве проекта
  2. Ghidra загрузит все сегменты, метки, функции

5. Навигация

  1. В CodeBrowser: переходите по функциям, меткам
  2. В Decompiler: читайте псевдокод
  3. Используйте Search → Functions, Strings, Constants
Горячая клавиша Действие
`Ctrl+Shift+G` Перейти к адресу
`D` Установить тип данных
`L` Переименовать метку
`F2` Декомпилировать функцию
`G` Создать функцию
`U` Удалить элемент
`Shift+E` Изменить байты вручную

1. Импортируйте файл 2. Разрешите Auto Analysis 3. Перейдите к точке входа (`entry`) 4. Используйте декомпилятор (F2) 5. Найдите вызов `printf` или `puts` 6. Переименуйте функцию, пометьте аргументы 7. Экспортируйте декомпилированный код (File → Export Function)

  • GhidraBridge — позволяет подключаться из IDA или Python
  • Sleigh — создание кастомных процессоров
  • BinExport + BinDiff — сравнение бинарей (как в IDA)
  • Jython — написание скриптов (анализ, маркировка, отчёты)
  • `FindStrings.py` — поиск строк
  • `RenameFunctionsFromSymbols.py` — автопереименование
  • `FunctionIDAnalyzer` — сигнатуры функций
  • `DecompileFunction.py` — экспорт всех функций в .c
  • Активно используйте декомпилятор — он очень точный
  • Переименовывайте функции и переменные
  • Сохраняйтесь часто — Ghidra не сохраняет автоматически!
  • Исследуйте `Symbol Tree` для поиска точек входа, API
  • Используйте `Function Graph` для анализа логики программы
  • reverseenengineering/soft_ghidra/manual.txt
  • Последнее изменение: 2025/07/18 12:47
  • Lex