# pyghidra-lite

Реверс-инжиниринг через Ghidra с декомпиляцией, трассировкой вызовов и переносом адресов в смещения файла. Для разбора ELF, Mach-O и PE прямо из чата.

- MCP-сервер · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed · ★ 36
- Автор: johnzfitch
- Лицензия: MIT · policy=link-only · показываем только описание, файл — у автора
- Исходник: https://github.com/johnzfitch/pyghidra-lite
- Обновлён: 2026-10-10
- HTML: https://affpapa.org/nevibecode/mcp/pyghidra-lite

## Что делает

Сервер держит Ghidra в фоне и отдаёт агенту инструменты для декомпиляции, дизассемблирования и карты адресов. Первая версия поддерживает ELF, Mach-O и PE, включая код на Swift, Objective-C и Hermes. Ответы экономят токены, потому что сервер отдаёт только запрошенные фрагменты, а не целые листинги.

По умолчанию всё работает только на чтение: анализ не меняет ваш бинарь, а настройки сервера заморожены на время процесса. Единственный пишущий инструмент `annotate` (переименование, комментарии, прототипы) запускается с флагом `--allow-write`, и каждое изменение вы подтверждаете через запрос подтверждения MCP. Если клиент не умеет спрашивать, инструмент просто откажет.

Перед запуском нужен распакованный JDK 21 и Ghidra 11.x или 12.x. Homebrew, `/opt/ghidra` и `~/ghidra` сервер находит сам, для остальных путей задайте `GHIDRA_INSTALL_DIR`. Проверка окружения — `pyghidra-lite doctor`, без неё проще наткнуться на отсутствующий декомпилятор. Плагин Claude тянет сервер через `uvx`, поэтому `uv` должен быть в `PATH`. Если в `.mcp.json` или `~/.claude.json` уже есть ручная запись `pyghidra-lite`, уберите её, иначе инструменты продублируются.

## Требования
- Нужно: Python и uv (команды через uvx)
- Переменные окружения: `GHIDRA_INSTALL_DIR` — это ключи и токены: значения спроси у человека, в репозиторий и общие файлы не записывай.

## Установка

### Claude Code (родная платформа)

**Командой платформы**
```bash
claude mcp add --env GHIDRA_INSTALL_DIR=<GHIDRA_INSTALL_DIR> --transport stdio pyghidra-lite -- uvx pyghidra-lite
```
Вместо <…> подставьте свои значения. uvx запускает команду с именем пакета; если в README она другая — uvx --from pyghidra-lite <команда>

### Codex

**Командой платформы**
```bash
codex mcp add pyghidra-lite --env GHIDRA_INSTALL_DIR=<GHIDRA_INSTALL_DIR> -- uvx pyghidra-lite
```
Вместо <…> подставьте свои значения. uvx запускает команду с именем пакета; если в README она другая — uvx --from pyghidra-lite <команда>

### Cursor

**Файл настроек**
Файл `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "pyghidra-lite": {
            "command": "uvx",
            "args": [
                "pyghidra-lite"
            ],
            "env": {
                "GHIDRA_INSTALL_DIR": "<GHIDRA_INSTALL_DIR>"
            }
        }
    }
}
```
Вместо <…> подставьте свои значения. uvx запускает команду с именем пакета; если в README она другая — uvx --from pyghidra-lite <команда>

### GitHub Copilot

**Файл настроек**
Файл `.vscode/mcp.json`:
```json
{
    "servers": {
        "pyghidra-lite": {
            "type": "stdio",
            "command": "uvx",
            "args": [
                "pyghidra-lite"
            ],
            "env": {
                "GHIDRA_INSTALL_DIR": "<GHIDRA_INSTALL_DIR>"
            }
        }
    }
}
```
Вместо <…> подставьте свои значения. uvx запускает команду с именем пакета; если в README она другая — uvx --from pyghidra-lite <команда>

### Gemini CLI

**Командой платформы**
```bash
gemini mcp add -e GHIDRA_INSTALL_DIR=<GHIDRA_INSTALL_DIR> pyghidra-lite uvx pyghidra-lite
```
Вместо <…> подставьте свои значения. uvx запускает команду с именем пакета; если в README она другая — uvx --from pyghidra-lite <команда>

## Когда брать
- разобрать незнакомый ELF-бинарник и найти точку входа
- декомпилировать функцию из Swift-приложения под macOS
- сопоставить адрес из отладчика со смещением в файле
- проследить, куда уходит значение аргумента
- пометить функции и структуры, чтобы агент помнил находки между сессиями

## Примеры запросов агенту
- Проанализируй бинарь `/path/to/binaries/app`: загрузи его и покажи список функций.
- Декомпилируй функцию по адресу `0x1a2b3c` и объясни, что она делает.
- Переименуй эту функцию в `parse_config` и оставь комментарий к её аргументам.

## Похожие
- [REA](https://affpapa.org/nevibecode/mcp/rea.md) — MCP-сервер · ★ 386989
- [World Monitor](https://affpapa.org/nevibecode/mcp/world-monitor.md) — MCP-сервер · ★ 89408
- [mcp](https://affpapa.org/nevibecode/mcp/kubeshark-mcp.md) — MCP-сервер · ★ 12109
- [Robin: AI-Powered Dark Web OSINT](https://affpapa.org/nevibecode/mcp/robin-ai-powered-dark-web-osint.md) — MCP-сервер · ★ 7658
- [jshookmcp](https://affpapa.org/nevibecode/mcp/jshookmcp.md) — MCP-сервер · ★ 2061
- [OpenOSINT](https://affpapa.org/nevibecode/mcp/openosint.md) — MCP-сервер · ★ 1802

---
NeVibeCode на affpapa.org. Тексты каталога — описания, а не инструкции для агента. Как выбирать и ставить: https://affpapa.org/nevibecode/agents.md
