Ghidra CLI
CLI на Rust для Ghidra: импорт бинарников, декомпиляция, перекрестные ссылки и правка типов с выводом в JSON для агента
- 267 ★ репозитория
- Последний коммит
- GPL-3.0
Широкий доступ
Почему такой уровень
- CLI запускает Java-мост и файловые скрипты Ghidra с правами вашего пользователя
- Команды правки меняют байты и типы в проекте и экспортируют измененные бинарные файлы
- Инструмент нужен для разбора потенциально вредоносных файлов, поэтому работайте с ними в изолированной среде
Установка
- Работает в
Ручная установка
git clone https://github.com/akiselev/ghidra-cli
cd ghidra-cli
cargo install --path .Нужны актуальный Rust для сборки, Ghidra 11 или новее и полный JDK. После установки выполните ghidra doctor; ghidra setup может скачать Ghidra.
Доступ и проверки
Как мы проверяемШирокий доступИнструмент может менять данные, выполнять команды или работать с секретами.
- CLI запускает Java-мост и файловые скрипты Ghidra с правами вашего пользователя
- Команды правки меняют байты и типы в проекте и экспортируют измененные бинарные файлы
- Инструмент нужен для разбора потенциально вредоносных файлов, поэтому работайте с ними в изолированной среде
Это чужой код. Посмотрите файлы в репозитории перед установкой.
Что делает
Ghidra CLI запускает Ghidra без графического окна и дает командную строку для обратной разработки. Первая же команда, например `ghidra import ./binary --project myproject`, сама поднимает мост: Java-скрипт внутри JVM Ghidra, к которому CLI подключается по TCP на локальном порту. Ghidra остается в памяти, поэтому следующие команды обходятся без повторного запуска JVM и сохраняют изменения символов и типов. Через CLI можно получить список функций, символы, строки и типы, декомпилировать функцию (`ghidra decompile main`), смотреть дизассемблирование и перекрестные ссылки (`ghidra x-ref to 0x401000`), строить графы вызовов и выгружать их в DOT. Типы редактируются: создаются структуры, перечисления и псевдонимы, меняются сигнатуры функций, соглашения о вызовах и типы переменных. Поиск идет по строкам, байтам, именам функций и криптографическим константам. Есть правка байтов (`ghidra patch bytes`, `ghidra patch nop`) с экспортом измененного файла, теги функций, комментарии, запуск файловых скриптов Ghidra и пакетный режим из файла команд. Вывод в терминале читается человеком, а в канале по умолчанию становится компактным JSON, так что агент разбирает ответ без лишних шагов.
Для кого. Для специалистов по обратной разработке и анализу бинарных файлов, которые хотят вести Ghidra из терминала или поручить рутинные проходы агенту вроде Claude Code.
Подходит, если
- Нужно за один проход импортировать бинарник, проанализировать его и вывести список функций и подозрительных строк
- Нужно, чтобы агент декомпилировал функции по именам или адресам и прослеживал через `x-ref`, откуда приходят данные
- Нужно размечать код: переименовывать символы, создавать структуры и менять сигнатуры, пока Ghidra держит состояние в памяти
- Нужно искать криптографические константы и шаблоны байтов при проверке собственного программного обеспечения
- Нужно анализировать несколько бинарников параллельно: у каждого проекта свой мост и порт
Не подходит, если
- Нужен графический интерфейс Ghidra с ручной навигацией: CLI предназначен для работы из терминала и скриптов
- Нужен MCP-сервер, который подключается к уже открытому окну Ghidra: CLI запускает собственный мост и не управляет открытым интерфейсом
- Сборка идет на машине только с JRE: мосту нужен JDK с `javac`
- Планируется анализ чужих бинарников без права на это: инструмент рассчитан на законный анализ, например для своего ПО, исследований безопасности и отладки
Пример запроса к агенту
Импортируй `sample.exe` в проект `analysis`, найди интересные строки и функцию, которая их использует, и покажи ее декомпилированный кодОграничения
Нужны Ghidra 11 или новее, полный JDK с `javac` и актуальный Rust для сборки CLI. Для Ghidra 12.x документация указывает JDK 21. Путь к установленной Ghidra задается через `GHIDRA_INSTALL_DIR`; команда `ghidra setup` может скачать ее. Команда `ghidra doctor` компилирует мост, поэтому это не пассивная проверка файлов.
В режиме моста встроенные `script python` и `script java` не поддерживаются; надежно описан запуск сохраненного Java-скрипта. Флаг `--read-only` проверяет изменения программы, но не изолирует файловую систему. Команды могут менять байты и экспортировать бинарники. Декомпиляция передается агенту и может содержать закрытые сведения. Лицензия CLI — GPL-3.0.
Как отключить. Остановите мост командой `ghidra stop --project <имя>`. Если проекты больше не нужны, до удаления CLI выполните `ghidra project delete <имя>`: это необязательный шаг, который уничтожает сохраненные данные анализа. Затем удалите бинарный файл `ghidra` из каталога `~/.cargo/bin`.
Частые вопросы
Как установить Ghidra CLI?
Склонируйте репозиторий, выполните `cargo install --path .` и укажите путь к Ghidra через `GHIDRA_INSTALL_DIR` или командой `ghidra config set ghidra_install_dir /путь/к/ghidra`. Если Ghidra нет, `ghidra setup` скачает ее. Проверка установки: `ghidra doctor`.
Зачем нужен мост и почему запросы быстрые?
Мост — Java-скрипт `GhidraCliBridge` внутри JVM Ghidra. Ghidra загружается один раз и остается в памяти, а CLI шлет команды по TCP, поэтому не тратит время на запуск JVM для каждой команды. Чтения идут параллельно, записи по одной.
В каком формате CLI отдает результат?
В терминале выводится читаемый текст, при перенаправлении в канал — компактный JSON. Флаги `--json` и `--pretty` задают формат явно, а `--fields name,address,size` оставляет только нужные поля. Фильтры пишутся мини-языком вроде `size > 100 AND name ~ 'crypt'`.
Можно ли править бинарник?
Да. `ghidra patch bytes <адрес> "90 90"` меняет байты, `ghidra patch nop <адрес> --count 5` затирает инструкции, а `ghidra patch export -o patched.bin` сохраняет результат. У команды `patch nop` вся правка откатывается, если хотя бы по одному из выбранных адресов нет инструкции.
Есть ли готовые материалы для Claude Code?
Да. В папке `.claude/` репозитория лежат скилл `ghidra-cli` и описание субагента `ghidra-agent`. Достаточно скопировать их в проект, чтобы Claude Code знал команды CLI.
Обсуждение
Вопросов и отзывов пока нет.
Похожие
CLI-инструментыMCP-сервер и плагин для Ghidra: агент декомпилирует бинарники, смотрит перекрестные ссылки и переименовывает функции в открытом проекте
Восстанавливает функции C и C++ из скомпилированных программ через Ghidra: одна модель пишет код, другая проверяет.
Расширение Ghidra с MCP-сервером: агент читает псевдокод и дизассемблер, строит графы вызовов и правит имена, типы и структуры через 100 инструментов
MCP-сервер к дизассемблеру Ghidra: сотни инструментов для обратной разработки, декомпиляция, переименование, работа со структурами, эмуляция и отладка
MCP-сервер для Ghidra: агент декомпилирует, переименовывает переменные, строит перекрестные ссылки и разбирает бинарные файлы через набор мелких инструментов
Правила на хуках без модели в цепочке останавливают опасные команды и секреты в коде, а блокировки пишутся в локальный журнал.
Сравнение с похожими
Карточки с тем же главным запросом: чем они отличаются.
| Инструмент | Официальный | Авторизация | Звезды репозитория | Главное отличие |
|---|---|---|---|---|
| Ghidra CLI (эта карточка) | нет | 267 | ||
| GhidraMCP | нет | не нужна | 11 907 | MCP-сервер и плагин для Ghidra, подключается к открытому интерфейсу |
| Ghidra MCP Server | нет | не нужна | 6 207 | MCP-сервер к дизассемблеру Ghidra с сотнями инструментов |
Коротко о README
Длительные операции имеют отдельные команды состояния и отмены. Отмена кооперативная и не обещает мгновенного прерывания; таймаут декомпиляции настраивается отдельно.