REA und OpenCode: Installation und erste Untersuchung

Written by

in

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:

  1. Inspektion: REA stellt eine Verbindung zu Analysetools her und untersucht Ziele (Binärdateien, Anwendungen, Websites)
  2. Analyse: Verfolgt den Code und bestimmt Regeln und Verhalten
  3. 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.

  1. Laden Sie das Beispiel herunter:
    Download https://rea.tools/examples/notes-example.zip
    

    Entpacken Sie das Archiv in den Ordner notes-example.

  2. Geben Sie dem Agenten eine Aufgabe:

    „Verwenden Sie REA, um die App unter /absolute/path/to/notes-example zu ü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 schreibt notes.csv in den Download-Ordner des Benutzers. Die Spalten sind id und title.“

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

  1. Installieren Sie das 64-Bit-JDK 21 oder höher. Wählen Sie ein Paket für Ihre Computerarchitektur aus.
  2. 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“.
  3. Suchen Sie den entpackten Ordner, der ghidraRun oder ghidraRun.bat enthält. Dieser Pfad wird für die Variable GHIDRA_INSTALL_DIR benö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/program zu 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

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/

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *

DemensDeum
Privacy Overview

This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.