ghidralens
GhidraLens
Ghidra, отображаемый внутри вашего AI-клиента. Щёлкните по символу, чтобы переименовать его. Щёлкните по вызову, чтобы перейти по нему.

Все Ghidra MCP-серверы до сих пор возвращают текст. Модель может его прочитать; вы не можете по нему перемещаться. GhidraLens возвращает тот же анализ в виде интерактивного представления — построенного на MCP Apps (io.modelcontextprotocol/ui), расширении, которое позволяет серверу отправлять настоящий HTML в разговор.
Вы и модель смотрите на одну и ту же работающую программу. Переименуйте переменную, щёлкнув по ней, и при следующей декомпиляции модель увидит новое имя.
Это настоящий скриншот: where.exe, декомпилированный Ghidra; каждый идентификатор несёт адрес, из которого он пришёл.
Что вы получаете
Представление | Что оно делает |
Декомпилятор | C-вывод Ghidra в виде живого потока токенов — кажый идентфкатор несут своё адрес и своё тип. Щёлкните по локальной переменной, чтобы переименовать её, щёлкните по вызову, чтобы перейти по нему. Вызывающие и выззываемые фукции, а так же переменные — на боковой панели. |
Браузер функций | Каждая функция в бинарном файле, фильтруемая и сортируемая по адресу, имени, размеру или количеству вызывающих. Щёлкните по строке, чтобы декомпилировать её. |
Граф вызовов | Вызывающие слева, вызываемые справа, функция, о которой вы спрашивали, в центре. Щёлкните по любому узлу, чтобы сделать его центром. |
Браузер функций

Граф вызовов

Всего десять инструментов. Три открывают представления; остальные — это чтение и запись, включая два, которые модель никогда не видит, — они существуют только для того, чтобы щелчок в представлении мог их вызвать.
Related MCP server: GhidraMCP
Как это устроено
MCP client ──stdio──▶ server/ ──HTTP──▶ bridge/ ──JPype──▶ Ghidra (JVM)
(Claude, TypeScript PyGhidra program stays
Cursor, …) MCP server session resident
▲
│ ui:// HTML in a sandboxed iframe
└── ui/ three self-contained viewsМост намеренно является отдельным долгоживущим процессом. Автоанализ Ghidra — самый затратный шаг, и он выполняется один раз. Замеры на системной утилите Windows размером 64 КБ (198 функций):
Первое открытие с анализом | 25 с |
Повторное открытие того же бинарного файла | 0.3 с |
Декомпиляция одной функции размером 2 КБ | 0.4 с |
Граф вызовов на 87 узлов | < 0.1 с |
Перезапустите MCP-сервер или клиент — и проанализированная программа всё ещё будет на месте.
Установка
Предварительные требования: Ghidra 11.3+, JDK 21+, Python 3.9–3.13 (не 3.14 — для JPype ещё нет wheel-сборки), Node 20+. См. bridge/setup.py.md — Python-часть капризна, и в этом файле разобраны все способы, которыми она может сломаться. GhidraLens сам найдёт JDK, если JAVA_HOME не задан; это покрывает обычный случай «Java установлена, но оболочка не перезапускалась».
git clone https://github.com/hellosverre/ghidralens
cd ghidralens
npm install
npm run buildЗатем запустите мост для бинарного файла, который хотите изучить:
python bridge/serve.py --binary /path/to/target.exeОн выведет токен. Вставьте его и путь к собранному серверу в конфигурацию вашего MCP-клиента:
{
"mcpServers": {
"ghidralens": {
"command": "node",
"args": ["/absolute/path/to/ghidralens/server/dist/index.js"],
"env": {
"GHIDRALENS_BRIDGE_URL": "http://127.0.0.1:8799",
"GHIDRALENS_TOKEN": "paste-the-printed-token-here"
}
}
}
}Затем попросите клиента: «декомпилируй функцию, которая обрабатывает проверку лицензии».
Инструменты
Инструмент | Виден | Рендерит |
| модель | — |
| модель | — |
| модель + представление | Декомпилятор |
| модель + представление | Браузер фукций |
| модель + представление | Граф вызовов |
| модель | — |
| модель + представление | — |
| модель + представление | — |
| только представление | — |
| модель | — |
add_comment намеренно скрыт от модели. Видимость — это способ, которым MCP Apps отделяет «агент может это сделать» от «щёлчок может это сделать»; отсутствие инструментов записи в списке модели делает его коротким и не позволяет модели переименовывать вещи по собственной инициативе.
Переименования и коментарии живут в памяти, пока save_program не запишет их в проект Ghidra — после чего они появятся в графическом интерефейсе Ghidra, как и любые другие правки.
Разработка представлений без Ghidra
npm run dev:ui
# open http://localhost:5173/dev/harness.htmlui/dev/harness.ts — это настоящий хост MCP Apps: он запускает AppBridge из SDK для представления в iframe, так что рукопожатие ui/initialize, начальное ui/notifications/tool-result и каждый tools/call, вызываемый щелчком, проходят по настоящему postMessage JSON-RPC. Справа находятся трассировка сообщений и переключатель темы хоста, потому что представления должны хорошо выглядеть в обеих темах.
Два источника данных, переключаемых на панели инструментов:
fixtures — Ghidra не нужен, ничего устанавливать не требуется
live bridge — проксирует к запущенному мосту, что позволяет разрабатывать на реальной проанализированной программе
Прежде чем доверять чему-либо, используйте live. Fixtures аккуратны; реальный вывод — это функция на 400 строк с 56 локальными переменными и графом вызовов из 87 узлов, и именно здесь вёрстка действительно ломается.
Запуск на локальной модели
Реверс-инжиниринг — это как раз та работа, которую люди предпочли бы не отправлять размещённой модели, поэтому agent/ollama-agent.mjs — это небольшой MCP-хост, который вместо этого ставит GhidraLens за Ollama. Никаких API-ключей, ничего не покидает машину.
OLLAMA_MODEL=qwen3:14b node agent/ollama-agent.mjs "what does this binary do?"Он учитывает _meta.ui.visibility, поэтому инструменты, доступные только приложению, остются скрытыми от модели — то же разделение, которое обеспечивает графический клиент. Модели ~9B достаточно, чтобы сориентироваться с помощью find_strings и list_functions; 14B заметно лучше читает декомпилярованный C.
Тесты
Набор | Нужен Ghidra | Покрывает |
| нет | MCP-интерфейс: инструменты, ресурсы |
| нет | Аутентификация мосста, отклонение CSRF, маршрутизация, проверка входных данных |
| да | Каждый вызов Ghidra: анализ, кэширование, токены декомпилятора, импорт, переименования, запись |
| да (мост запущен) | Вся цепочка и то, что кажый payload по форме соответствует ожиданиям представлений |
Первые два — это то, что может запускать CI. test_session.py важен после изменений в bridge/session.py — это единственное, что доказывет корректность вызовов Ghidra API, и он поймал три реальных бага в день своего написания.
Безопасность
Мост привязыветься только к 127.0.0.1, требует в X-GhdirLens-Token токен, пересоздаваемый при кажом запуске, и отклоняет любой запрос с заголовком Origin или Referer — поэтому страница, открытая в вашем браузере, не сможет полуить доступ к вашем декомпилятору. У него нет многопользовательской модели, и он не преднозначен для публичного доступа; --host отказывет всему, кроме loopback.
Анализ бинарного файла не выпоняет его, но Ghidra с удоольствием откроет вредоносное ПО. Используйте ту же изоляцию, что и для любой другой работы по реверс-инжинирингу.
Лицензия
MIT.
Maintenance
Related MCP Servers
- FlicenseAqualityDmaintenanceEnables LLMs to perform binary analysis using Ghidra in headless mode, extracting functions, pseudocode, structs, and enums from binaries for interactive reverse-engineering.94
- AlicenseNot gradedqualityDmaintenanceEnables LLMs to autonomously reverse engineer binaries using Ghidra's capabilities including decompilation, function analysis, automatic renaming, and BSim integration for function similarity matching.1AGPL 3.0
- AlicenseNot gradedqualityCmaintenanceBridges Ghidra's reverse engineering capabilities with AI tools through 179 specialized tools for automated binary analysis and documentation. It supports full read/write access for function decompilation, renaming, and cross-binary documentation transfer in both GUI and headless modes.Apache 2.0
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to analyze binaries, debug processes, and inspect kernel state using Ghidra, x64dbg, WinDbg, and ILSpyCmd.5Apache 2.0
Related MCP Connectors
Renders interactive Chart.js charts and dashboards inline in AI conversations.
Live browser debugging for AI assistants — DOM, console, network via MCP.
AI Agent with Architectural Memory. Impact analysis (free), tests and code from the graph (pro).
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/hellosverre/ghidralens'
If you have feedback or need assistance with the MCP directory API, please join our Discord server