Zum Hauptinhalt springen
S-EDV news
← Alle Anleitungen
📘 Anleitung Sicherheit & Datenschutz 18.10.2026 · 12 min Lesezeit

REA und Ghidra: Was das Reverse-Engineering-Tool für KI-Agenten kann

REA verbindet Ghidra, objdump und weitere Werkzeuge per MCP mit KI-Agenten. Einrichtung auf Ubuntu, Test mit eigenem Programm und rechtliche Grenzen in DE und EU.

Mit KI erstellt – redaktionelle Prüfung ausstehend

WerbelinksMit * markierte Links sind Werbelinks: Bei einem Kauf erhalten wir eine Provision, der Preis bleibt gleich. Als Amazon-Partner verdiene ich an qualifizierten Verkäufen. Mehr dazu

Titelbild: REA und Ghidra, was das Reverse-Engineering-Tool kann

REA und Ghidra bringen Reverse Engineering in KI-Agenten: Das MIT-lizenzierte Projekt morluto/rea („Reverse engineer anything with agents“) stellt Analysewerkzeuge als MCP-Server und als Kommandozeile bereit. Diese Anleitung zeigt, was REA kann, wie Sie es auf Ubuntu 24.04 mit Ghidra 12.1.4 einrichten, was ein Test mit einem selbst kompilierten Programm ergab, und wo das Reverse Engineering fremder Software in Deutschland und der EU rechtlich endet.

Voraussetzungen

  • Linux-Server oder VM mit Ubuntu 24.04 LTS (x86_64), mindestens 2 CPU-Kerne. Der Test lief mit 2 Kernen und 1 GiB RAM bei einem Java-Heap von 512 MB. Ohne eigene Einstellung startet REA Ghidra laut Doku mit 2 GB Heap, und der Heap begrenzt nicht den gesamten Speicherbedarf. Für größere Ziele planen Sie deshalb 4 GB RAM oder mehr ein.
  • Rund 2 GB freier Speicher: npm-Paket 227 MB, Ghidra-Archiv rund 570 MB, dazu das JDK.
  • Node.js 22.x ab 22.19, 24.x ab 24.11 oder 26 und neuer, laut README. Der Test nutzte Node.js 24.22.0, installiert mit nvm.
  • Für Ghidra: OpenJDK 21 (vollständiges JDK mit javac) und Ghidra 12.1.x. REA installiert beides nicht selbst.
  • Paket procps (Befehl ps): Ohne ein procps-kompatibles ps verweigert REA unter Linux laut Doku den Start von Ghidra.
  • Ein eigenes Testobjekt: ein selbst geschriebenes und kompiliertes Programm oder Software, für die Sie eine schriftliche Erlaubnis haben. Arbeiten Sie mit einem eigenen Benutzer ohne sudo-Rechte und idealerweise in einer Wegwerf-VM.
EckdatenWert
Projektmorluto/rea, npm-Paket rea-agents, Lizenz MIT
Getestete Version6.5.0 (npm latest am 18.10.2026)
SchnittstellenCLI rea, MCP-Server über stdio (rea mcp)
Analyse-EnginesGhidra 12.1.x, IDA, Hopper, Kuna, objdump, Rizin, GDB, JADX und weitere, jeweils selbst installiert
Ghidra im Test12.1.4 mit OpenJDK 21.0.12.1, Heap 512 MB
Unterstützte Agentenlaut Doku 24 Clients per Setup, darunter Claude Code, Codex, Cursor, Gemini CLI, VS Code, OpenCode

Schritt 1: Node.js und Analysewerkzeuge vorbereiten

Legen Sie einen eigenen Analysebenutzer an und installieren Sie die Grundpakete; gcc dient dem Testprogramm, binutils liefert objdump:

sudo useradd -m -s /bin/bash analyst
sudo apt-get update
sudo apt-get install -y curl ca-certificates gcc libc6-dev binutils procps file

Node.js installieren Sie als Benutzer analyst mit nvm, siehe die Anleitung nvm auf Ubuntu Server einrichten:

sudo -iu analyst
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.8/install.sh | bash
source ~/.bashrc
nvm install 24

Verifizieren: node -v zeigt eine unterstützte Version, im Test v24.22.0. objdump --version meldete GNU objdump (GNU Binutils for Ubuntu) 2.42, ps --version ps from procps-ng 4.0.4.

Schritt 2: REA als CLI installieren

Für Agenten empfiehlt das Projekt npx rea-agents setup. Auf einem Server ist eine globale Installation mit fester Version übersichtlicher:

npm view rea-agents dist-tags
npm install --global rea-agents@6.5.0
rea --version

Ein Fallstrick im Test: Auf GitHub war am 18.10.2026 bereits das Release rea-agents-6.6.0 veröffentlicht, npm lieferte als latest aber noch 6.5.0. npm install --global rea-agents@6.6.0 brach mit npm error notarget No matching version found for rea-agents@6.6.0. ab. Prüfen Sie deshalb mit npm view, welche Version auf npm wirklich verfügbar ist.

npm meldete, dass das Installationsskript von frida@17.23.2 nicht ausgeführt wurde (install-scripts not yet covered by allowScripts). Die Schritte dieser Anleitung liefen trotzdem.

Verifizieren: rea --version gibt 6.5.0 aus, rea --help beginnt mit rea@6.5.0 und listet die Befehle, darunter decompile, function und doctor.

Schritt 3: Eigenes Testprogramm kompilieren und ohne Ghidra prüfen

Testobjekt ist ein kleines C-Programm mit einer Prüffunktion:

#include <stdio.h>
#include <string.h>

static int check_key(const char *k) {
    return strcmp(k, "s-edv-demo") == 0;
}

int main(int argc, char **argv) {
    if (argc > 1 && check_key(argv[1]))
        puts("Schluessel korrekt");
    else
        puts("Hallo Welt");
    return 0;
}
mkdir -p ~/re && cd ~/re
gcc -O0 -g -o hello hello.c
./hello; ./hello s-edv-demo

Zuerst die Bestandsaufnahme: rea doctor --json meldete node und host als gesund, Hopper, Ghidra, IDA und JADX als missing_analysis_engine. Ohne Engine arbeitet REA trotzdem, etwa mit dem installierten objdump:

rea inspect-with-objdump ~/re/hello symbols --json > sym.json
rea inspect-with-objdump ~/re/hello disassemble --json > dis.json

Das Ergebnis ist ein Evidence-Datensatz mit Rohausgabe, SHA-256 der Datei, exaktem Aufruf (objdump -t), Einstufung confidence: observed und Einschränkungen. In der Symboltabelle standen unter anderem:

0000000000001169 l     F .text	0000000000000030              check_key
0000000000000000       F *UND*	0000000000000000              strcmp@GLIBC_2.2.5
0000000000001199 g     F .text	0000000000000057              main

Verifizieren: Beide Befehle enden mit Exit-Code 0, die Disassemblierung zeigt in check_key die Zeile call 1070 <strcmp@plt>.

Schritt 4: REA und Ghidra 12.1.4 mit JDK 21 verbinden

REA verlangt laut Installationsdoku Ghidra 12.1.x und ein 64-Bit-JDK innerhalb der Grenzen, die Ghidra selbst angibt. Für 12.1.4 steht in application.properties application.java.min=21. Installieren Sie als Administrator das JDK und entpacken Sie Ghidra aus dem offiziellen GitHub-Release:

sudo apt-get install -y openjdk-21-jdk-headless unzip
cd /opt
sudo curl -sSLO https://github.com/NationalSecurityAgency/ghidra/releases/download/Ghidra_12.1.4_build/ghidra_12.1.4_PUBLIC_20260921.zip
sha256sum ghidra_12.1.4_PUBLIC_20260921.zip
sudo unzip -q ghidra_12.1.4_PUBLIC_20260921.zip

Der SHA-256 lautete im Test ddac49f903da9d5bac833e5cc79395098b9c33cfd3279be5f31bd00387d2d4db, identisch mit der Angabe auf der Release-Seite. Danach setzt der Benutzer analyst zwei Variablen, am besten dauerhaft in ~/.bashrc:

export GHIDRA_INSTALL_DIR=/opt/ghidra_12.1.4_PUBLIC
export GHIDRA_HEADLESS_MAXMEM=512M
rea doctor --provider ghidra --json

GHIDRA_HEADLESS_MAXMEM begrenzt den Java-Heap. Die Doku nennt 512 MB als mit kleinen Testdateien verifiziert, größere Ziele können mehr brauchen.

Verifizieren: Der Doctor meldet healthy: true. Im Test waren alle Prüfungen grün, darunter ghidra-version 12.1.4, der native Decompiler für linux_x86_64 und ghidra-java 21.0.12.1; 64-bit; JDK.

Schritt 5: Funktionen dekompilieren und durchsuchen

REA importiert das Ziel in ein temporäres Ghidra-Projekt, wartet auf die automatische Analyse und gibt das Ergebnis zurück:

rea decompile ~/re/hello main --provider ghidra

Der Aufruf dauerte im Test 10 Sekunden und lieferte als Pseudocode:

int main(int argc,char **argv)

{
  int iVar1;
  char **argv_local;
  int argc_local;
  
  if ((1 < argc) && (iVar1 = check_key(argv[1]), iVar1 != 0)) {
    puts("Schluessel korrekt");
    return 0;
  }
  puts("Hallo Welt");
  return 0;
}

Die Prüffunktion gibt ihr Geheimnis sofort preis: rea decompile ~/re/hello check_key --provider ghidra --json lieferte iVar1 = strcmp(k,"s-edv-demo");. Schlüssel gehören deshalb nie im Klartext in ausgelieferte Programme. Weitere Befehle aus dem Test:

  • rea function ~/re/hello main --provider ghidra --json: Funktionsdossier mit Signatur int __stdcall main(int argc, char * * argv), Adressbereich, lokalen Variablen, Pseudocode und Assembler.
  • rea search ~/re/hello "Hallo" --provider ghidra --json: [{"address":"0x102022","value":"Hallo Welt"}].
  • Bei einer mit strip bereinigten Kopie gibt es kein Symbol main mehr. rea decompile … main endete mit code: invalid_request, rea analyze lieferte weiterhin die Segmente und Sektionen.

Verifizieren: Der Pseudocode zeigt die Logik des Quelltexts. Während der Dekompilierung von check_key lag die Summe der RSS aller Prozesse des Analysebenutzers bei höchstens 747 MiB, danach lief kein Java-Prozess mehr (pgrep -a java ohne Treffer).

Schritt 6: REA als MCP-Server für Agenten

Für Agenten startet REA als MCP-Server über stdio. Die Registrierung erledigt laut README npx rea-agents setup: Sie wählen die Clients, prüfen die geplanten Änderungen und stimmen zu, bestehende Konfigurationen werden gesichert. Für Claude Code landet der Eintrag laut Doku in ~/.claude.json und gilt damit für jedes Projekt. Eine manuelle Registrierung nach dem Muster der Doku, auf die getestete Version festgelegt:

{
  "mcpServers": {
    "rea": {
      "command": "npx",
      "args": ["-y", "rea-agents@6.5.0", "mcp"]
    }
  }
}

Setzen Sie GHIDRA_INSTALL_DIR und GHIDRA_HEADLESS_MAXMEM in der Umgebung, aus der der Agent den Server startet. Laut Doku übernimmt ein bereits laufender Server Änderungen in einem anderen Terminal nicht.

Verifizieren: Ein MCP-Handshake mit initialize und tools/list an rea mcp ergab im Test {"name":"rea","version":"6.5.0"} und 207 Werkzeuge, darunter open_binary, analyze_function, batch_decompile und inspect_with_objdump.

Einordnung: REA, GhidraMCP und IDA Pro MCP

Zwei bekannte Alternativen im Vergleich:

ProjektAnsatzLizenz
REAMCP-Server und CLI für viele Werkzeuge (Ghidra headless, IDA, Hopper, objdump, Rizin, GDB, JADX) und Ziele wie JavaScript/Electron, .NET oder Webseiten; Ergebnisse als Evidence-Datensätze.MIT
GhidraMCPGhidra-Plugin plus Python-MCP-Server; Ghidra läuft mit Oberfläche, das Plugin stellt Dekompilieren, Umbenennen und Auflisten bereit.Apache-2.0
IDA Pro MCPMCP-Server für das kommerzielle IDA Pro ab 8.3, IDA Free wird nicht unterstützt. Das README empfiehlt inzwischen den offiziellen IDA-MCP-Server von Hex-Rays.MIT

Wer nur Ghidra mit Oberfläche an einen Agenten hängen will, kommt mit GhidraMCP schlanker aus. REA lohnt sich, wenn ein Agent verschiedene Arten von Zielen untersuchen soll oder Ergebnisse mit Prüfsummen nachvollziehbar bleiben müssen. Lizenzen für IDA, Hopper oder JEB stellt REA laut README nicht bereit.

Rechtliche Grenzen des Reverse Engineerings in Deutschland und der EU

Dieser Abschnitt ordnet die einschlägigen Vorschriften sachlich ein und ist keine Rechtsberatung. Vor der Analyse fremder Software, besonders im Auftrag oder mit Veröffentlichungsabsicht, holen Sie juristischen Rat ein.

  • Grundsatz: Computerprogramme sind urheberrechtlich geschützt. Vervielfältigen und Übersetzen der Codeform, also auch Disassemblieren und Dekompilieren, stehen nach § 69c UrhG dem Rechtsinhaber zu. Ideen und Grundsätze, die einem Programmelement zugrunde liegen, sind nach § 69a Abs. 2 UrhG nicht geschützt.
  • Beobachten, Untersuchen, Testen: Wer zur Verwendung des Programms berechtigt ist, darf nach § 69d Abs. 3 UrhG ohne Zustimmung das Funktionieren beobachten, untersuchen oder testen, um diese Ideen und Grundsätze zu ermitteln, allerdings nur durch Laden, Anzeigen, Ablaufen, Übertragen oder Speichern, zu denen er berechtigt ist. Gemeint ist die Analyse im laufenden Betrieb; das Dekompilieren regelt das Gesetz gesondert.
  • Dekompilieren: § 69e UrhG erlaubt das Übersetzen der Codeform nur, wenn es unerlässlich ist, um Interoperabilität eines unabhängig geschaffenen Programms herzustellen. Bedingungen: berechtigter Nutzer, Informationen nicht ohne Weiteres zugänglich, Beschränkung auf die nötigen Programmteile. Die Erkenntnisse dürfen nicht für andere Zwecke genutzt, nur eingeschränkt weitergegeben und nicht für ein Programm mit im Wesentlichen ähnlicher Ausdrucksform verwendet werden. „Funktion nachbauen“ fällt damit nicht automatisch darunter. Der EuGH hat zudem entschieden, dass der rechtmäßige Erwerber ein Programm dekompilieren darf, soweit das zur Berichtigung von Fehlern erforderlich ist, die sein Funktionieren beeinträchtigen (Urteil C-13/20, zu Art. 5 Abs. 1 der Vorgängerrichtlinie); vertraglich festgelegte Bedingungen sind dabei einzuhalten.
  • EU-Recht: Beide Regeln setzen Richtlinie 2009/24/EG um, Art. 5 Abs. 3 (Beobachten, Untersuchen, Testen) und Art. 6 (Dekompilierung). Nach Art. 8 der Richtlinie und § 69g Abs. 2 UrhG sind Vertragsklauseln unwirksam beziehungsweise nichtig, die diesen Ausnahmen widersprechen.
  • Geschäftsgeheimnisse: Nach § 3 Abs. 1 Nr. 2 GeschGehG darf ein Geschäftsgeheimnis durch Beobachten, Untersuchen, Rückbauen oder Testen eines Produkts erlangt werden, das öffentlich verfügbar gemacht wurde oder rechtmäßig im eigenen Besitz ist, sofern keine Pflicht zur Beschränkung besteht. Eine solche Pflicht kann sich aus einem Vertrag ergeben. Der urheberrechtliche Rahmen gilt daneben weiter.
  • Lizenzbedingungen: EULAs verbieten Reverse Engineering häufig. Soweit sie § 69d Abs. 3 oder § 69e widersprechen, sind sie nach § 69g Abs. 2 UrhG nichtig; im Übrigen können sie wirksam sein.
  • Schutzmaßnahmen und Strafrecht: Wirksame technische Maßnahmen zum Schutz geschützter Werke dürfen nach § 95a UrhG ohne Zustimmung des Rechtsinhabers nicht umgangen werden. Für Mittel, die allein dazu bestimmt sind, die unerlaubte Umgehung technischer Programmschutzmechanismen zu erleichtern, kann der Rechtsinhaber nach § 69f Abs. 2 UrhG die Vernichtung verlangen. Wer sich unbefugt unter Überwindung der Zugangssicherung Zugang zu Daten verschafft, die nicht für ihn bestimmt und besonders gesichert sind, macht sich nach § 202a StGB strafbar. § 202c StGB stellt die Vorbereitung unter Strafe, etwa durch Herstellen oder Verbreiten von Passwörtern oder sonstigen Sicherungscodes oder von Computerprogrammen, deren Zweck die Begehung einer solchen Tat ist.

Das REA-Projekt zieht im DISCLAIMER eigene Grenzen: keine Hilfe beim Umgehen von DRM, Lizenzprüfungen und Anti-Cheat-Systemen, kein Kopieren proprietärer Software. Es betont, dass der Besitz einer Datei nicht jede Operation erlaubt. Als vorgesehene Einsatzzwecke nennt es unter anderem Sicherheitsforschung, Malware- und Vorfallsanalyse, Interoperabilität und die Prüfung eigener oder freigegebener Software.

Datenschutz: lokal analysiert, aber nicht lokal ausgewertet

Auf die Frage, ob REA die App hochlädt, antwortet die FAQ im README: REA analysiert Ziele lokal, der Agent erhält die Ergebnisse der Werkzeuge, und für dessen Modellanbieter gilt dessen eigene Datenrichtlinie. Pseudocode, Zeichenketten, Symbolnamen oder mitgeschnittene Netzwerkdaten können also beim Anbieter des Sprachmodells landen, wenn Sie einen Cloud-Agenten nutzen. Im Testprogramm wäre das der Schlüssel s-edv-demo gewesen. Prüfen Sie bei Kundensoftware oder personenbezogenen Daten, ob ein Auftragsverarbeitungsvertrag besteht oder ein lokal betriebenes Modell besser passt. Laut Doku behält ein Agent unter demselben Systemkonto Shell-, Datei- und Netzwerkzugriff; echte Trennung erfordert ein eigenes Konto oder einen Container.

Typische Fehler

MeldungUrsacheLösung
npm error notarget No matching version found for rea-agents@6.6.0GitHub-Release ist schon da, npm noch nichtnpm view rea-agents dist-tags, verfügbare Version wählen
code: provider_unavailable, Set GHIDRA_INSTALL_DIR to an extracted Ghidra 12.1.x release directory.Variable fehlt in der Umgebung des AufrufsGHIDRA_INSTALL_DIR setzen, rea doctor --provider ghidra
missing_analysis_engine im DoctorEngine nicht installiert; betrifft nur Funktionen, die sie brauchenMit --provider gezielt prüfen
code: invalid_request bei decompile … mainBinärdatei ohne Symbole (gestrippt)Funktion laut CLI-Doku über ihre Adresse ansprechen (z. B. 0x1000), vorher mit rea analyze einen Überblick holen
Ghidra-Start scheitert mit unspezifischer MeldungLaut Doku kann unter Linux ein procps-kompatibles ps fehlen; manche Adapter melden dann nur einen allgemeinen StartfehlerPaket procps installieren

Häufige Fragen

Ist REA kostenlos?

Ja, REA steht unter MIT-Lizenz, Ghidra unter Apache-2.0. IDA Pro, Hopper und JEB sind kommerziell und müssen laut README rechtmäßig lizenziert sein.

Läuft REA ohne KI-Agent?

Ja. Alle Schritte dieser Anleitung liefen über die CLI rea, ohne Sprachmodell.

Brauche ich Ghidra zwingend?

Nein. Für Pseudocode nativer Programme brauchen Sie eine Engine wie Ghidra, IDA oder Hopper. Symbole, Disassemblierung per objdump, Go- und Rust-Metadaten, .NET-Metadaten und statische JavaScript-Analyse funktionieren laut README ohne Engine.

Darf ich eine gekaufte Software mit REA dekompilieren?

Ohne Zustimmung des Rechtsinhabers nur in engen Grenzen: nach § 69e UrhG, wenn das Dekompilieren unerlässlich ist, um Interoperabilität eines eigenen, unabhängig geschaffenen Programms herzustellen, und die Informationen nicht anders zugänglich sind, sowie nach der EuGH-Rechtsprechung im erforderlichen Umfang zur Fehlerberichtigung. Beobachten, Untersuchen und Testen im normalen Betrieb erlaubt § 69d Abs. 3 UrhG ohne diese Zweckbindung, aber nur durch Handlungen, zu denen Sie als Nutzer ohnehin berechtigt sind.

Wie entferne ich REA wieder?

Die CLI entfernen Sie mit npm uninstall --global rea-agents, im Test meldete npm removed 173 packages. Registrierungen in Agenten nimmt laut Doku rea uninstall zurück.

Fazit

REA macht aus Ghidra und anderen Werkzeugen eine einheitliche Schnittstelle für Agenten und Skripte. Im Test lieferte Ghidra selbst mit 1 GiB RAM in 10 Sekunden lesbaren Pseudocode, der die eingebaute Schlüsselprüfung offenlegte. Die Technik ist der leichtere Teil: Das Dekompilieren fremder Software ist rechtlich eng begrenzt, und wer einen Cloud-Agenten nutzt, gibt Analyseergebnisse an dessen Anbieter weiter. Für eigene Programme und beauftragte Sicherheitsprüfungen ist REA ein starkes Werkzeug.

Weiterführende Anleitungen und Quellen

reaghidrareverse-engineeringmcpki-agenten