Skip to main content
Glama

GhidraLens

Ghidra, gerendert in Ihrem KI-Client. Klicken Sie auf ein Symbol, um es umzubenennen. Klicken Sie auf einen Aufruf, um ihm zu folgen.

MCP Apps Ghidra 11.3+ Local models MIT

Die Decompiler-Ansicht

Jeder Ghidra-MCP-Server bisher gibt Text zurück. Das Modell kann ihn lesen; Sie können nicht darin navigieren. GhidraLens liefert dieselbe Analyse als interaktive Ansicht – basierend auf MCP Apps (io.modelcontextprotocol/ui), der Erweiterung, die es einem Server erlaubt, echtes HTML in die Konversation zu bringen.

Sie und das Modell betrachten dasselbe laufende Programm. Benennen Sie eine Variable um, indem Sie darauf klicken, und der nächste Decompile des Modells sieht den neuen Namen.

Das ist ein echter Screenshot: where.exe, von Ghidra dekompiliert, jede Kennung trägt die Adresse, von der sie stammt.


Was Sie bekommen

Ansicht

Was sie tut

Decompiler

Ghidras C-Ausgabe als Live-Token-Strom – jede Kennung trägt ihre Adresse und ihre Art. Klicken Sie auf eine lokale Variable, um sie umzubenennen, auf einen Aufruf, um ihm zu folgen. Aufrufer, Aufgerufene und Variablen in einer Seitenleiste.

Funktionsbrowser

Jede Funktion im Binary, filterbar und sortierbar nach Adresse, Name, Größe oder Anzahl der Aufrufer. Klicken Sie auf eine Zeile, um sie zu dekompilieren.

Aufrufgraph

Aufrufer links, Aufgerufene rechts, die angefragte Funktion in der Mitte. Klicken Sie auf einen Knoten, um neu zu zentrieren.

Funktionsbrowser

Der Funktionsbrowser

Aufrufgraph

Der Aufrufgraph

Zehn Tools insgesamt. Drei offene Ansichten; der Rest sind Lookups und Schreibvorgänge, darunter zwei, die das Modell nie sieht – sie existieren nur, damit ein Klick in einer Ansicht sie auslösen kann.

Related MCP server: GhidraMCP

Wie es zusammenhängt

  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

Die Brücke ist bewusst ein separater langlebiger Prozess. Ghidras Auto-Analyse ist der teure Schritt, und sie passiert einmal. Gemessen an einem 64-KB-Windows-Systemprogramm (198 Funktionen):

Erstes Öffnen, mit Analyse

25 s

Dasselbe Binary erneut öffnen

0,3 s

Eine 2-KB-Funktion dekompilieren

0,4 s

87-Knoten-Aufrufgraph

< 0,1 s

Starten Sie den MCP-Server oder den Client neu, und das analysierte Programm ist immer noch da.

Einrichtung

Voraussetzungen: Ghidra 11.3+, ein JDK 21+, Python 3.9–3.13 (nicht 3.14 – JPype hat dafür noch kein Wheel), Node 20+. Siehe bridge/setup.py.md – die Python-Seite ist eigenwillig, und diese Datei behandelt jeden Weg, auf dem es schiefgehen kann. GhidraLens findet ein JDK für Sie, wenn JAVA_HOME nicht gesetzt ist, was den üblichen Fall »Java installiert, Shell nicht neu gestartet« abdeckt.

git clone https://github.com/hellosverre/ghidralens
cd ghidralens
npm install
npm run build

Starten Sie dann die Brücke auf dem Binary, das Sie ansehen möchten:

python bridge/serve.py --binary /path/to/target.exe

Sie gibt ein Token aus. Fügen Sie das und den Pfad zum gebauten Server in die Konfiguration Ihres MCP-Clients ein:

{
  "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"
      }
    }
  }
}

Fragen Sie dann Ihren Client: »dekompiliere die Funktion, die die Lizenzvalidierung übernimmt«.

Tools

Tool

Sichtbar für

Rendert

open_binary

Modell

program_info

Modell

decompile

Modell + Ansicht

Decompiler

list_functions

Modell + Ansicht

Funktionsbrowser

call_graph

Modell + Ansicht

Aufrufgraph

find_strings

Modell

xrefs_to

Modell + Ansicht

rename_symbol

Modell + Ansicht

add_comment

nur Ansicht

save_program

Modell

add_comment ist absichtlich vor dem Modell verborgen. Sichtbarkeit ist, wie MCP Apps trennt zwischen »der Agent darf das tun« und »ein Klick darf das tun«; Schreib-Tools aus der Liste des Modells herauszuhalten hält sie kurz und verhindert, dass das Modell von sich aus Dinge umbenennt.

Umbenennungen und Kommentare leben im Speicher, bis save_program sie in das Ghidra-Projekt schreibt – danach erscheinen sie im Ghidra-GUI wie jede andere Bearbeitung.

Die Ansichten ohne Ghidra entwickeln

npm run dev:ui
# open http://localhost:5173/dev/harness.html

ui/dev/harness.ts ist ein echter MCP-Apps-Host – er führt die AppBridge des SDK gegen die Ansicht in einem iframe aus, sodass der ui/initialize-Handshake, das eröffnende ui/notifications/tool-result und jeder tools/call, den ein Klick auslöst, über echte postMessage-JSON-RPC laufen. Rechts unten gibt es eine Nachrichtenverfolgung und einen Host-Theme-Umschalter, weil die Ansichten in beiden richtig aussehen müssen.

Zwei Datenquellen, in der Symbolleiste umschaltbar:

  • Fixtures – kein Ghidra nötig, nichts zu installieren

  • Live-Brücke – proxyt zu einer laufenden Brücke, sodass Sie gegen ein echtes analysiertes Programm entwickeln

Nutzen Sie Live, bevor Sie irgendetwas vertrauen. Fixtures sind aufgeräumt; echte Ausgabe ist eine 400-Zeilen-Funktion mit 56 lokalen Variablen und einem 87-Knoten-Aufrufgraph, und genau dort bricht das Layout tatsächlich.

Mit einem lokalen Modell ausführen

Reverse Engineering ist genau die Arbeit, die man nicht gern an ein gehostetes Modell schickt, daher ist agent/ollama-agent.mjs ein kleiner MCP-Host, der GhidraLens hinter Ollama stellt. Kein API-Schlüssel, nichts verlässt die Maschine.

OLLAMA_MODEL=qwen3:14b node agent/ollama-agent.mjs "what does this binary do?"

Er respektiert _meta.ui.visibility, sodass die Nur-App-Tools vor dem Modell verborgen bleiben – dieselbe Trennung, die ein grafischer Client durchsetzt. Ein ~9B-Modell reicht, um sich mit find_strings und list_functions zu orientieren; ein 14B ist deutlich besser beim Lesen dekompilierten C-Codes.

Tests

Suite

Braucht Ghidra

Deckt ab

node server/smoke.mjs

nein

MCP-Oberfläche: Tools, ui://-Ressourcen, Tool-Sichtbarkeit, sauberer Fehlschlag ohne Brücke

python bridge/test_serve.py

nein

Brücken-Auth, CSRF-Ablehnung, Routing, Eingabevalidierung

python bridge/test_session.py

ja

Jeder Ghidra-Aufruf: Analyse, Caching, Decompiler-Tokens, Importe, Umbenennungen, Schreibvorgänge

node server/live.mjs

ja (Brücke läuft)

Die ganze Kette und dass jede Nutzlast zur Form passt, in die die Ansichten indexieren

Die ersten beiden sind das, was CI ausführen kann. test_session.py ist das, was zählt, nachdem man bridge/session.py angefasst hat – es ist das Einzige, das beweist, dass die Ghidra-API-Aufrufe richtig sind, und es hat am Tag seiner Entstehung drei echte Bugs gefunden.

Sicherheit

Die Brücke bindet nur an 127.0.0.1, verlangt ein Pro-Lauf-Token in X-GhidraLens-Token und lehnt jede Anfrage mit einem Origin- oder Referer-Header ab – eine in Ihrem Browser geöffnete Seite kann also nicht auf Ihren Decompiler zugreifen. Sie hat kein Mehrbenutzermodell und ist nicht dafür gedacht, exponiert zu werden; --host lehnt alles außer Loopback ab.

Das Analysieren eines Binaries führt es nicht aus, aber Ghidra öffnet bereitwillig Malware. Nutzen Sie dieselbe Isolation, die Sie für jede andere RE-Arbeit nutzen würden.

Lizenz

MIT.

A
license - permissive license
Not graded
quality - not tested
A
maintenance

Maintenance

Maintainers
Response time
0dRelease cycle
2Releases (12mo)
Commit activity

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables LLMs to autonomously reverse engineer binaries using Ghidra's capabilities including decompilation, function analysis, automatic renaming, and BSim integration for function similarity matching.
    1
    AGPL 3.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    Bridges 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

View all related MCP servers

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).

View all MCP Connectors

Latest Blog Posts

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