REA (Reverse Engineer Anything) ist ein MCP-Server, der es Ihnen ermöglicht, Softwareanwendungen, Binärdateien und Verhalten in Echtzeit zurückzuentwickeln. Das Tool deckt den Weg vom Anwendungsverhalten bis zum Maschinencode ab und es ist praktisch, OpenCode als Agent zu verwenden, der es verwaltet.
OpenCode ist ein offener Programmieragent, der im Terminal lebt. Es liest Projektdateien, bearbeitet Code, führt Befehle und Tests aus und, was am wichtigsten ist, es unterstützt MCP sofort, sodass REA eine direkte Verbindung dazu herstellt.
Was REA einzigartig macht
REA zeichnet sich im Bereich Reverse Engineering durch umfassende Unterstützung mehrerer Plattformen und Analysearten aus:
- Native Binärdateien: Hopper, Ghidra, IDA oder Kuna für die Demontage und Dekompilierung
- JavaScript-Anwendungen und Electron: Statische Analyse von Electron-Modulen, Importen und Grenzen
- Verwalteter Code: Analysieren von .NET-Assemblys
- Echtzeitanalyse: Überwachung des Prozessverhaltens
- Netzwerkverkehr: Erfassung und Analyse von HTTP/S-Anfragen und -Antworten
- Mobile Anwendungen: Analyse von APK- und IPA-Dateien für Android und iOS
- Embedded Software: Analyse eingebetteter Systeme und IoT-Geräte
- Modelldateien: Extrahieren von GGUF- und Safetensor-Metadaten
- GPU-Codeobjekte: Analyse von CUDA- und HIP-Kerneln
- Spiele speichern: Spiellogik und ausführbare Dateien wiederherstellen
Grundlegende Architektur und Philosophie
REA folgt einem dreistufigen Forschungsprozess, der Reverse Engineering für Entwickler zugänglich macht:
- Inspektion: REA stellt eine Verbindung zu Analysetools her und untersucht Ziele (Binärdateien, Anwendungen, Websites)
- Analyse: Verfolgt den Code und bestimmt Regeln und Verhalten
- Wiederherstellung: Der Agent verwendet die Ergebnisse, um das Verhalten zu erklären und eine Implementierung zu erstellen oder zu testen
Dieser Prozess ermöglicht es dem KI-Agenten, komplexe Fragen zu beantworten, wie zum Beispiel: „Verstehen Sie, wie die Suche in der Notes-App funktioniert, zeigen Sie mir die Beweise und erstellen Sie eine ähnliche Funktion für mein Projekt.“
Praktische Anwendungsbeispiele
1. Analyse mobiler Anwendungen
REA kann Android APK-Dateien zur Wiederherstellung analysieren:
- Deklarationen und Berechtigungen im Manifest;
- Klassenmethoden und Abhängigkeiten;
- Links zu nativen Bibliotheken;
- Netzwerkendpunkte und Datenflüsse.
Eine Analyse von Aegis Authenticator zeigte beispielsweise, wie sich sechsstellige Autorisierungscodes alle 30 Sekunden ändern: Es wurde untersucht, wie die zeitbasierte Codegenerierung (TOTP) funktioniert.
2. Extraktion von Desktop-Anwendungsfunktionen
Die Analyse der %-Schaltfläche im Windows-Rechner zeigt die Fähigkeiten von REA:
- unterschiedliches Verhalten je nach Kontext definieren (nach + oder ×);
- Montageanweisungen analysieren, um die Logik zu verstehen;
- Mathematische Operationen extrahieren und erklären;
- Wiederherstellung der Regeln: „Nach +: 10 % der ersten Zahl“ und „Nach ×: 10 % in 0,1 umwandeln.“
3. Wiederherstellung der Webanwendungs-API
REA kann eine Browsersitzung aufzeichnen und sie als RL-Umgebung rekonstruieren, in der der KI-Agent Aufgaben wie das Arbeiten mit Ordnern ausführt, ohne die ursprüngliche Anwendung auszuführen.
4. Spiellogik wiederherstellen
Der DX-Ball-Fall zeigte, wie REA die Soundscape-Berechnung aus dem Windows-Spiel von 1996 durch Reverse Engineering von C-Code wiederherstellte, der 3.205 Testfälle durchläuft und mit dem ursprünglich kompilierten Code übereinstimmt.
Technische Möglichkeiten
Native Analyse
- Funktioniert mit Hopper, Ghidra, IDA oder Kuna für eine umfassende Binärdateianalyse
- Unterstützt ELF, PE, Mach-O und andere ausführbare Dateiformate
- Extrahiert Pseudocode, Assembler, Symbole und Aufrufe
- Führt eine Offline-Analyse durch, ohne die ursprünglichen Tools starten zu müssen
JavaScript-Analyse
- Analysiert Node.js- und Electron-Anwendungen
- Verfolgt Modulimporte und -abhängigkeiten
- Erfasst Verhalten in Echtzeit über eine Browserverbindung
- Извлекает source maps и минифицированный код
Sicherheit
- Statische Analyse von PE-Zertifikaten (Authenticode)
- Analyse von Abwehrmechanismen (PIE, NX, RELRO, CFG)
- Importe und DLLs zuordnen
- Analyse von Absturzberichten (Apple IPS)
Was gibt REA zurück?
REA gibt dem Agenten keine vorgefertigten Schlussfolgerungen ohne Begründung. Das Ergebnis jeder Abfrage sind die Ergebnisse zusammen mit den Beweisen, auf denen sie basieren. Je nach Zweck umfasst die Antwort Folgendes:
- Links zum Code – spezifische Dateien und Zeilen, in denen die untersuchte Funktion implementiert ist.
- Pseudocode und Assembler – für native Binärdateien: dekompilierte Funktionen, Anweisungen und Verbindungen zwischen Aufrufen.
- Anwendungsstruktur – für JavaScript und Electron: Module, Importe, Routen, IPC und Verbindungen mit nativen Add-ons.
- Metadaten und Fakten – Manifeste, Zertifikate, Signaturen, Formatheader und andere statische Daten.
- Einschränkungen – Orte, die nicht geklärt werden konnten, mit einem Hinweis, was genau noch unbekannt ist.
Der Agent nutzt diese Daten, um Verhalten zu erklären, klärende Fragen zu beantworten oder seine Umsetzung zusammenzustellen und zu testen. Es ist das Vorhandensein von Beweisen und expliziten Einschränkungen, die ein REA-Ergebnis von einer einfachen Schätzung des Modells unterscheiden.
Bevor Sie beginnen
Es wird davon ausgegangen, dass OpenCode bereits installiert und das Modell damit verbunden ist. Node.js 22.23.4+, 24.22.1+ oder 26.12.1+ wird von REA selbst benötigt, also überprüfen Sie die Version:
node -v
Schritt 1: REA mit OpenCode verbinden
REA registriert sich bei OpenCode als MCP-Server. Im Terminal ausführen:
npx rea-agents@latest setup
Um OpenCode direkt anzugeben, verwenden Sie seinen Bezeichner opencode:
npx rea-agents@latest setup --client opencode
Was das Setup bewirkt:
- registriert REA als MCP-Server;
- fügt Workflow-Anweisungen hinzu;
- erstellt eine Sicherungskopie der vorhandenen Konfiguration;
- fragt nach Bestätigung, bevor Änderungen übernommen werden.
Wichtiger Punkt:
Für das erste Experiment können Sie die optionale Hopper-Installation überspringen. Nachdem das Setup abgeschlossen ist, starten Sie OpenCode neu: Beenden Sie die Sitzung und führen Sie opencode erneut aus.
Überprüfen Sie die Verbindung:
npx -y rea-agents@latest doctor --client opencode --json
Erfolgreiches Ergebnis: "healthy": true.
Dann fragen Sie den Agenten:
„Überprüfen Sie, ob REA angeschlossen ist, und zeigen Sie mir, welche REA-Tools Sie verwenden können.“
Schritt 2: Erste Untersuchung
REA kann Anwendungen analysieren, ohne sie zu starten.
- Laden Sie das Beispiel herunter:
Download https://rea.tools/examples/notes-example.zipEntpacken Sie das Archiv in den Ordner
notes-example. - Geben Sie dem Agenten eine Aufgabe:
„Verwenden Sie REA, um die App unter
/absolute/path/to/notes-examplezu überprüfen. Finden Sie heraus, was passiert, wenn ich auf „Notizen exportieren“ klicke. Zeigen Sie an, wo „notes.csv“ geschrieben ist, welche Felder es enthält und welche relevanten Dateien und Zeilen es enthält.“
Erwartete Antwort:
„Die Schaltfläche sendet eine
notes:export-Nachricht. Der Hauptprozess formatiert die Notizen als CSV und schreibtnotes.csvin den Download-Ordner des Benutzers. Die Spalten sindidundtitle.“
Schritt 3: Ghidra-Installation und native Analyse
Um native Binärdateien (ausführbare Dateien und Bibliotheken) zu analysieren, verwendet REA einen Analyseanbieter. Die günstigste kostenlose Option ist Ghidra von der NSA. Das Tool wird einmalig auf dem Computer installiert, auf dem REA ausgeführt wird.
Was Sie brauchen
- 64-Bit-JDK 21 oder höher, einschließlich Java-Compiler (
javac). - Ghidra-Archiv von der Veröffentlichungsseite.
Installation
- Installieren Sie das 64-Bit-JDK 21 oder höher. Wählen Sie ein Paket für Ihre Computerarchitektur aus.
- Laden Sie Ghidra aus der Assets-Liste auf der Veröffentlichungsseite herunter und entpacken Sie das Archiv
ghidra_…_PUBLIC_….zip. Nehmen Sie das Release-Archiv, nicht den „Quellcode“. - Suchen Sie den entpackten Ordner, der
ghidraRunoderghidraRun.batenthält. Dieser Pfad wird für die VariableGHIDRA_INSTALL_DIRbenötigt.
Schauen Sie sich Java an. Der erste Befehl gibt java.home aus – dieser Pfad wird für JAVA_HOME benötigt. Der zweite bestätigt, dass der Compiler installiert ist:
java -XshowSettings:properties -version
javac -version
Ghidra-Verbindung
Windows (PowerShell):
$env:GHIDRA_INSTALL_DIR = "C:/tools/ghidra_12.1.4_PUBLIC"
$env:JAVA_HOME = "C:/tools/jdk-21"
npx -y rea-agents@latest doctor --provider ghidra --json
npx -y rea-agents@latest setup
macOS / Linux:
export GHIDRA_INSTALL_DIR="/absolute/path/to/ghidra_12.1.4_PUBLIC"
export JAVA_HOME="/absolute/path/to/jdk-21"
npx -y rea-agents@latest doctor --provider ghidra --json
npx -y rea-agents@latest setup
Ersetzen Sie die Pfade durch Ihre eigenen. Behalten Sie die Befehle in einer Terminalsitzung bei: Führen Sie nach dem Festlegen der Umgebungsvariablen das Setup erneut aus, bestätigen Sie die Konfigurationsaktualisierung und starten Sie OpenCode neu.
Die Anbieterprüfung sollte einen erfolgreichen Bericht zurückgeben:
npx -y rea-agents@latest doctor --provider ghidra --json
Beispiel für eine native Analyse
Geben Sie dem Agenten den vollständigen Pfad zur ausführbaren Datei und geben Sie den Anbieter an:
„Verwenden Sie REA mit einem konfigurierten Anbieter, um
/absolute/path/to/programzu erkunden. Listen Sie die Funktionen und Zeilen auf und erklären Sie dann den Teil, der Benutzereingaben verarbeitet, mit Verweisen auf den Code.“
Oder führen Sie den Befehl direkt vom Terminal aus:
npx -y rea-agents@latest function "/absolute/path/to/program" main --provider ghidra --json
Ersetzen Sie main durch den Funktionsnamen oder die Adresse aus der Funktionsliste des Zielprogramms. Das Ergebnis enthält Pseudocode, Assembler und Referenzen zwischen Aufrufen.
Analyse einer anderen Art von Software
Wählen Sie die Kategorie der Zielsoftware aus:
- JavaScript / Electron – erfordert Node.js und npm. Anleitung.
- Websites – Erfordert Chrome, Chromium oder Edge-Browser. Anleitung.
- Android APK – erfordert JADX und JDK 17+. Handbuch.
- Native ausführbare Dateien – erfordert Hopper, Ghidra oder IDA. Anleitung.
- .NET-Assemblys – erfordert Node.js und npm. Handbuch.
Verwendung von REA vom Terminal aus
Statische Analyse der JavaScript/Electron-Anwendung
npx -y rea-agents@latest analyze-javascript-application "/absolute/path/to/app" --json
Ersetzen Sie den Pfad durch den Ordner mit der Anwendung oder der .asar-Datei.
Wo finde ich die .asar-Datei der Electron-Anwendung:
- Windows:
C:\Users\<you>\AppData\Local\Programs\<App>\resources\app.asar - macOS:
/Applications/<App>.app/Contents/Resources/app.asar - Linux:
/opt/<App>/resources/app.asar
Globale Installation des rea-Befehls
npm install --global rea-agents
Danach steht der Befehl rea --help zur Verfügung.
Installation über Curl (macOS / Linux)
curl -fsSL https://raw.githubusercontent.com/morluto/rea/main/install.sh | bash
Befolgen Sie nach der Installation die Anweisungen zur Konfiguration des Agenten. Wenn das Setup-Menü nicht angezeigt wird, führen Sie rea setup aus.
Aktualisieren und löschen
REA-Update
npx rea-agents@latest setup
Für globale Installation: rea update
REA wird entfernt
npx rea-agents@latest uninstall
Hilfe bekommen
- FAQ: rea.tools/faq/ – schnelle Antworten zu Updates, Agenten und Analysen
- Anleitungen: rea.tools/guides/ – Beispiele für Binär-, Elektronen- und Browseranalyse
- GitHub-Probleme: github.com/morluto/rea/issues – ein Problem melden
- Discord: discord.gg/GkcryMnJDM – Fragen, Untersuchungen und laufende Arbeiten
Typische Probleme
OpenCode sieht REA nicht
Starten Sie OpenCode nach dem Setup neu. Verwenden Sie den Befehl doctor, um die Verbindung zu testen:
npx -y rea-agents@latest doctor --client opencode --json
Der Anbieter erfordert eine Konfiguration
Für den Ghidra-Lauf:
npx -y rea-agents@latest doctor --provider ghidra --json
Der Bericht zeigt den fehlgeschlagenen Test und den vorgeschlagenen nächsten Schritt.
Windows, WSL und Pfade mit Leerzeichen
- Verwenden Sie PowerShell für Windows-Clients
- Wenn der Agent innerhalb der WSL ausgeführt wird, installieren Sie Node.js und REA in diesem Linux-System und verwenden Sie die Linux-Pfade
- Schließen Sie Pfade im Terminal mit Leerzeichen in Anführungszeichen ein
Hopper unter macOS einrichten
Wenn macOS Sie auffordert, die Automatisierung zuzulassen, erlauben Sie die App, die REA in den Systemeinstellungen ausführt: Systemeinstellungen → Datenschutz und Sicherheit → Automatisierung, und versuchen Sie es dann erneut.
Links
https://github.com/morluto/rea
https://rea.tools/
https://rea.tools/get-started/
https://rea.tools/guides/
https://opencode.ai/
https://opencode.ai/docs/
https://opencode.ai/docs/mcp-servers/
Leave a Reply