====== Ghidra: Инструкция для начинающих ====== ===== Что такое 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 ===== Интерфейс Ghidra ===== ^ Раздел ^ Описание ^ | **Project Manager** | Создание и загрузка проектов | | **CodeBrowser** | Основное рабочее окно | | **Decompiler** | Окно декомпиляции в C-подобный код | | **Listing/Bytes** | Ассемблер, байты, инструкции | | **Symbol Tree** | Символы, функции, метки, строки | | **Function Graph** | Визуальный граф вызовов | | **Memory/Registers** | Просмотр памяти, сегментов, регистров | ===== Первичный анализ ===== 1. **Создайте новый проект** - Project → New Project → Non-Shared - Назовите и выберите папку 2. **Импортируйте бинарь** - File → Import File - Выберите `.exe`, `.elf`, `.bin`, `.so`, `.dll` и т.д. - Ghidra определит тип автоматически 3. **Запустите анализ** - После импорта появится диалог `Auto Analysis` - Выберите нужные опции (по умолчанию включены все) 4. **Откройте CodeBrowser** - Дважды кликните на бинаре в дереве проекта - Ghidra загрузит все сегменты, метки, функции 5. **Навигация** - В CodeBrowser: переходите по функциям, меткам - В Decompiler: читайте псевдокод - Используйте Search → Functions, Strings, Constants ===== Клавиши и управление ===== ^ Горячая клавиша ^ Действие ^ | `Ctrl+Shift+G` | Перейти к адресу | | `D` | Установить тип данных | | `L` | Переименовать метку | | `F2` | Декомпилировать функцию | | `G` | Создать функцию | | `U` | Удалить элемент | | `Shift+E` | Изменить байты вручную | ===== Пример анализа "HelloWorld.exe" ===== 1. Импортируйте файл 2. Разрешите Auto Analysis 3. Перейдите к точке входа (`entry`) 4. Используйте декомпилятор (F2) 5. Найдите вызов `printf` или `puts` 6. Переименуйте функцию, пометьте аргументы 7. Экспортируйте декомпилированный код (File → Export Function) ===== Расширение возможностей ===== * **GhidraBridge** — позволяет подключаться из IDA или Python * **Sleigh** — создание кастомных процессоров * **BinExport + BinDiff** — сравнение бинарей (как в IDA) * **Jython** — написание скриптов (анализ, маркировка, отчёты) * **Plugins** — https://github.com/NationalSecurityAgency/ghidra ===== Полезные скрипты ===== * `FindStrings.py` — поиск строк * `RenameFunctionsFromSymbols.py` — автопереименование * `FunctionIDAnalyzer` — сигнатуры функций * `DecompileFunction.py` — экспорт всех функций в .c ===== Полезные ссылки ===== * Официальный сайт: https://ghidra-sre.org/ * Исходники: https://github.com/NationalSecurityAgency/ghidra * Скрипты: https://ghidra.re/ghidra_scripts/ * Туториалы: https://github.com/mandiant/GhidraCookbook ===== Советы новичку ===== * Активно используйте декомпилятор — он очень точный * Переименовывайте функции и переменные * Сохраняйтесь часто — Ghidra не сохраняет автоматически! * Исследуйте `Symbol Tree` для поиска точек входа, API * Используйте `Function Graph` для анализа логики программы