Files
reverse-engineering-anything/docs/readme/README_de.md
T
4ef916da03 feat(pe): inspect import and delay-load tables (#6509)
* feat(pe): inspect import and delay-load tables

Add inspect_pe_imports / inspect-pe-imports to read PE32/PE32+ import
and delay-load directories without executing the image. The report keeps
DLL names, named and ordinal functions, ILT/IAT RVAs, and a pefile
import hash of the standard import table. A missing directory is
observed absence, not proof the image never imported APIs.

* fix(pe): default PE import fixture options

Allow peImportImage() without an argument so CLI and filesystem tests
can use the KERNEL32 sample without repeating an empty options object.

* test(pe): keep import path cases on the dedicated MCP contract

inspect_pe_imports already rejects relative MCP paths in its own
boundary test. Leave the shared absolute-path matrix to tools whose
handler issue projection matches that suite's expected shape.

* fix(native): index virtual-to-file mapping lookups

mappedFileOffset scans every mapping twice per span, so a parser that
translates one span per table entry costs sections x entries. Add
fileMappingLookup, which builds an O(n log n) interval index once and
answers each span in O(log n) with the same accept, reject and
translation results. A differential test checks it against
mappedFileOffset over randomized overlapping mappings and zero fills.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ra7LM2NyQ7DumdssxbUq5g

* fix(pe): report partial import evidence and exact pefile hashes

- Withhold imphash with an explicit reason whenever the standard import
  table is partial (unreadable names or thunks, missing tables), or when
  pefile 2024.8.26 would hash a different row sequence: invalid or
  truncated names, ordinal 0, descriptors without functions, tables its
  bounds or repeat/spread heuristics discard, and its 8192-thunk import
  symbol cap. Delay-load issues do not withhold it.
- Hash ordinal imports with pefile's complete ordlookup tables and its
  ord<decimal> fallback instead of declining unmapped ordinals.
- Report a nonterminal descriptor whose FirstThunk is zero, and a
  delay-load descriptor whose IAT or INT RVA is zero, as malformed_entry
  partial coverage instead of a complete empty inventory.
- Directory evidence lists the file spans actually consumed for the
  descriptor array and terminator; discontiguous mappings produce
  separate spans and separate Evidence ranges.
- Carry exhausted limits as PeImportLimitFailure.limit and derive
  recovery from it; the fixed 16 MiB retained-text ceiling reports a
  fixed allowance instead of max_file_bytes advice.
- Translate RVAs through the indexed mapping lookup and yield with a
  cancellation check every 1024 table entries.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ra7LM2NyQ7DumdssxbUq5g

* fix(pe): read only own ordinal tables for DLL names

DLL names such as constructor and __proto__ pass pefile's name rule but
resolved inherited object members, throwing before the ord<n> fallback.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ra7LM2NyQ7DumdssxbUq5g

* fix(native): preserve PE import facts and prove hash compatibility

* test(native): verify PE import workflows and measured costs

* refactor(native): narrow PE facts across the container union

* docs(native): record integrated PE import validation

* fix(native): bound every PE import RVA span

* docs(native): measure RVA guard completed workflows

* fix(pe): reconcile import coverage with retained rows

* fix(pe): retain partial imports at descriptor mapping gaps

---------

Co-authored-by: Matt Van Horn <455140+mvanhorn@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: gensokyo-dev <342580529+gensokyo-dev@users.noreply.github.com>
2026-10-24 11:44:12 +08:00

29 KiB
Raw Blame History

English · 简体中文 · 繁體中文 · 日本語 · 한국어 · Türkçe · Русский · Tiếng Việt · ไทย · Deutsch · Español · Français · Українська · Polski · Português (Brasil) · العربية · فارسی · Bahasa Indonesia · Italiano · Ελληνικά · മലയാളം · Roman Urdu

REA: Alles reverse-engineeren

Ein MCP für das Reverse Engineering von Binärdateien, Anwendungen und Laufzeitverhalten.

Eine Funktion gefällt dir? Verstehe, wie sie funktioniert – bis hinunter auf die Binärebene.

npm version MCP tool catalog Node.js requirements skills.sh MIT license Discord

morluto%2Frea | Trendshift

Website · Anleitungen · Fallstudien

Schnellstart · So funktioniert REA · Was du analysieren kannst · Fallstudien · Häufige Fragen · GNU-objdump- und Rizin-Tools · Dokumentation

npx rea-agents setup

Important

Offizielle Quellen für REA: morluto/rea, rea.tools, rea-agents (npm). Folge den Installations- und Release-Links aus diesen offiziellen Quellen. Ein ähnlicher Repository-Name oder eine kopierte README belegt nicht, dass ein Download offiziell ist.


REA startet seine Analysebrücke in Hopper und untersucht eine native Binärdatei



Discord
Der Reverse-Engineering-Community beitreten

Discord · Fragen und Antworten · Ergebnisse teilen


Du hast in einer App eine Funktion entdeckt, die du in dein eigenes Produkt übernehmen möchtest? Lass deinen Agenten sie mit REA untersuchen. Er kann die App ohne ihren Quellcode analysieren, die Funktionsweise erklären, Belege zeigen und eine passende Umsetzung für dein Projekt entwickeln.

REA verbindet deinen Agenten mit Werkzeugen zum Untersuchen nativer Binärdateien, von JavaScript- und Electron-Apps, .NET-Assemblies und Websites. Dieselben Werkzeuge kannst du auch im Terminal nutzen. Die Analyse läuft lokal; die Ergebnisse enthalten die Belege und Einschränkungen hinter jeder Schlussfolgerung.

Die Einrichtung registriert REA bei deinem Agenten und installiert passende Workflow-Anweisungen. Native Analysen nutzen eine vorhandene Installation von Hopper, Ghidra oder IDA; nach Zustimmung kann die Einrichtung Hopper installieren. Statische JavaScript-Analysen benötigen keine native Analyse-Engine.

Besuche die REA-Website für Einrichtungshinweise, bebilderte Anleitungen und echte Fallstudien.

Schnellstart

Unter Linux benötigen Starts von Ghidra, JADX und Firmware-Werkzeugen sowie statische JavaScript/Electron-Analysen ein procps-kompatibles ps in REAs PATH, um die Prozesseigentümerschaft zu prüfen. Abhilfe beschreibt die Linux-Voraussetzung.

Deinen Agenten einrichten

Wenn Node.js und npm installiert sind, führe diesen Befehl aus:

npx rea-agents setup

Wähle deine Agenten aus, prüfe die geplanten Änderungen und bestätige sie. Die Einrichtung fügt den MCP-Server von REA und passende Workflow-Anweisungen hinzu und sichert vorhandene Konfigurationen. Starte deinen Agenten anschließend neu.

Die Einrichtung unterstützt Claude Code, Codex, Cursor, Gemini CLI, Grok Build und weitere Agenten. Informationen zur Provider-Konfiguration und manuellen MCP-Registrierung findest du unter Installation und Einrichtung.

MCP verwendet standardmäßig kompakte Eingabeschemas. Für vollständige Feldhinweise und Details zur verschachtelten Validierung setze REA_MCP_INPUT_SCHEMA_PROFILE=full in der MCP-Registrierung. Beide Profile behalten alle Tools und dieselbe kanonische Servervalidierung; siehe MCP-Vertragsleitfaden.

Deinen Agenten fragen

Untersuche, wie die Suche in der Notes-App funktioniert, zeige mir die Belege und entwickle eine ähnliche Funktion für mein Projekt.

Ersetze Notes durch deine Ziel-App und benenne die Funktion, die du verstehen möchtest.

Das Terminal verwenden

Untersuche ein entpacktes JavaScript-/Electron-App-Verzeichnis oder eine ASAR-Datei:

npx -y rea-agents@latest analyze-javascript-application /absolute/path/to/app --json

Das Ergebnis enthält Module, Imports, Electron-Grenzen und die zugehörigen Belege. Ersetze den Pfad durch dein Ziel, beispielsweise "D:/apps/example" unter Windows.

Für die regelmäßige Nutzung kannst du den Befehl rea installieren:

npm install --global rea-agents
rea --help

Konfiguriere für native Analysen zuerst einen Provider. Native Befehle, Provider-Auswahl, Snapshots und Skriptnutzung beschreibt der CLI- und Evidence-Leitfaden.

REA aktualisieren

REA entwickelt sich schnell weiter; neue Versionen enthalten häufig Fehlerbehebungen. Halte deine Installation aktuell.

Für eine über npm install --global / bun add --global installierte CLI:

rea update

rea --update ist ein Alias für rea update mit denselben globalen Ausgabeoptionen. Update-Befehle behalten insgesamt höchstens 4 MiB stdout/stderr. Zu große Metadatenantworten werden nach Befehlsende abgelehnt; ausführliche Installationen behalten begrenzte Diagnosen. Fortschrittsausgabe berücksichtigt Terminal-Rückstau und wartet auf bereits übergebene Schreibvorgänge.

Globale Bun-Updates erfordern Bun 1.2.17 oder neuer. Aktualisiere ältere Bun-Versionen manuell, bevor du rea update ausführst.

Um die Agentenregistrierungen und den Skill zu aktualisieren, führe den Einrichtungsbefehl aus, den das Update ausgibt.

Wenn du npx verwendest, aktualisiere die Agenteneinrichtung mit:

npx rea-agents@latest setup

Prüfe die Änderungen und starte deinen Agenten neu. Für einzelne CLI-Aufrufe verwende npx rea-agents@latest, gefolgt vom gewünschten Befehl.

Mit Bun verwendest du bunx rea-agents@latest statt npx rea-agents@latest.

So funktioniert REA

Dein Agent ruft REA über MCP auf, um das Ziel zu untersuchen und relevanten Code zu verfolgen. REA liefert Ergebnisse mit ihren Belegen zurück. Der Agent nutzt sie für weitere Fragen, Erklärungen oder zum Schreiben und Testen einer Implementierung. CLI-Befehle verwenden dieselben Workflows.

REA-Untersuchungsablauf: Dein Agent fragt nach einem lokalen Ziel, REA untersucht und verfolgt es mit Analysewerkzeugen, und der Agent nutzt den zurückgegebenen Code, Verweise und offene Fragen zum Erklären, Implementieren und Testen.

Abbildung in voller Größe öffnen.

Was du analysieren kannst

REA benötigt Node.js 22.x (>=22.23.4), 24.x (>=24.22.1) oder 26+ (>=26.12.1) sowie npm. Zusätzliche Werkzeuge und unterstützte Hostsysteme hängen vom Ziel ab:

Ziel Was REA zurückgibt Voraussetzungen und Anleitung
Native Binärdateien Pseudocode, Assemblercode, Zeichenketten, Symbole, Aufrufe und Verweise Hopper, Ghidra oder IDA; native Analyse
Offline-ELF-Struktur Sektionen, Segmente, ursprüngliche Symbole/Relokationen und mögliche Schutzmaßnahmen aus statischer Analyse Vom Aufrufer bereitgestelltes pwntools unter Linux x64; Binärdiagnostik
PE certificates Authenticode WIN_CERTIFICATE entries and PKCS#7 signer/X.509 identity fields Built-in static PE inspection; PE certificates
PE imports Import and delay-load DLL names, ordinals, IAT RVAs and pefile import hash Built-in static PE inspection; PE imports
EVM-Bytecode Dispatch-Selektoren, Byte-Offsets, abgeleitete Argumente und Veränderbarkeit des Zustands Lokale Eingabe mit Rohbytes oder Hexdarstellung unter Linux x64; Offline-EVM-Leitfaden
Rust binaries Embedded cargo-auditable dependency list Rust binaries
ELF notes PT_NOTE/SHT_NOTE owners, types, GNU build-id and ABI-tag fields Built-in static ELF inspection; ELF notes
Erlang BEAM IFF chunks, atoms, exports, and tables Built-in static BEAM inspection; Erlang BEAM
Aufgezeichnete Linux-Abstürze Unverarbeitete Note-Einträge, Register/Signale aller aufgezeichneten Threads und optionale Zuordnungskandidaten Vom Aufrufer bereitgestelltes pwntools unter Linux x64; optional GDB/pwndbg; aufgezeichnete Abstürze
Desktop-Installationen Laufzeitkandidaten, Quelldateien, Komponenten und nächste Schritte Begrenzte Verzeichnis- und Headerprüfung;Desktop-Anwendungen
JavaScript / Electron Module, Imports, Source Maps, Routen, IPC und Beziehungen zu nativen Add-ons Node.js und npm; Anwendungsanalyse; Linux: procps ps
Websites Seitenstruktur, Skripte, Netzwerkbeobachtungen und angeforderte Screenshots Ein Browser aus der Chrome-Familie; Browseranalyse
Gespeicherte Netzwerkaufzeichnungen Anfragen, Antworten, zugängliche Nutzdaten und Quellpositionen HAR / Fiddler Everywhere SAZ; mitmdump unter Linux für Aufzeichnungen im nativen mitmproxy-Format; Leitfaden zu Netzwerkaufzeichnungen
Paketerfassungen Endpunkte, DNS, TLS SNI, Protokollverteilung und HTTP-Anfragen Vom Aufrufer bereitgestellte tshark- und capinfos-Binaries; pcap-Leitfaden
.NET-Assemblies Metadaten, CIL-Anweisungen, deklarierte native Abhängigkeiten und Build-Vergleiche Statische Untersuchung; Leitfaden für verwalteten Code
PyInstaller CArchive, PYZ, Python bytecode Static inspection; Python packaged applications
Android-APKs Manifest-Deklarationen, Klassen, dekompilierte Methoden und Verweise JADX ohne grafische Oberfläche und ein vollständiges JDK unter Linux/macOS/Windows x64; Android-Leitfaden
Android-Geräte Geräte, Pakete, Prozesse, Logs, Dumps, Bildschirmaufnahmen sowie APK- und Dateiübertragungen Vom Aufrufer bereitgestelltes adb (Emulator oder Gerät); ADB-Leitfaden
JEB-Projekte Engine-gestützte Projekteinheiten, Artefakt-Prüfsummen und Pseudokode von Typen/Methoden Ein vom Aufrufer gestarteter JEB-Client mit MCP, ausgewählt über REA_JEB_MCP_URL; JEB-Leitfaden
Android-Ressourcen Dekodiertes Manifest, String-Tabellen, Sprachen und Versionsfakten Vom Aufrufer bereitgestellter Apktool-Starter; Ressourcen-Leitfaden
Flutter-Apps Dart-Snapshot-Hash, Per-ABI-Bibliotheksprüfsummen und Engine-Build-Provenienz Keine (statische APK-Analyse); Flutter-Leitfaden
Firmware Bereiche, Extraktionsergebnisse und Übergaben an die native Analyse Binwalk / Unblob unter Linux; Firmware-Leitfaden
Aufgezeichnete Pakete Ausgewählte Felder, wiederholte Werte, Filter und Decode-as-Regeln Linux: TShark 4.x + prlimit; Mitschnitt-Anleitung
Aufgezeichnete Logiksignale Decoder-Anmerkungen, Sample-Bereiche und Diagnosen Linux: sigrok-cli 0.7.2 + prlimit; Signalaufzeichnungen
Pakete und Ressourcen Dateiinventare, Hashwerte, plists, Aufbau von Apple-Bundles und extrahierte Ressourcen Artefakt- und JavaScript-Leitfaden, Apple-Anwendungen
Prozessverhalten Terminalausgabe, Interaktionen, Beobachtungen zu Prozessende und Dateisystem sowie Laufvergleiche Linux/macOS mit nativer PTY; Prozessaufzeichnung
Go-Binärdateien Eingebettete Compilerversion, Module, Ersetzungen und Build-Einstellungen Integrierte statische Prüfung ELF/PE/thin Mach-O; Keine Go-Installation nötig
SQLite-Datenbanken Tabellen, Spalten, Indizes, Views, Trigger und ausgewählte Zeilen gewöhnlicher Tabellen Lokaler Datenbank/WAL-Snapshot; Node.js 24.x >=24.15 oder 26+ mit nativen SQLite-Grenzen
GPU-Codeobjekte CUDA/HIP-Ziele, ausgewählte Kernelparameter und Ressourcen, gespeicherter PTX-Text Integrierte statische Prüfung ELF/PE/fatbin/CUBIN/PTX; GPU
Modelldateien GGUF-/safetensors-Metadaten, Tensordeklarationen und abgeleitete Summen Headerprüfung; optionaler Hash der gesamten Datei; GGUF / safetensors
IL2CPP-Metadaten Unity global-metadata.dat: Assembly-Images, Typ-/Methodennamen und Indexbereiche Statische Dekodierung der Versionen 24, 27, 29, 31, 39; kein Unity nötig
Godot PCK Archivinventar und Extraktion, originale Header-/Verzeichnisdaten und ausgewählte Inhaltsidentitäten Statische Formate 2, 3, 4; kein Godot nötig
WASM-Artefakte Validierung, Sektionen, exakte Import-/Export-WAT-Formen und dekodiertes WAT Vom Aufrufer bereitgestellt WABT 1.0.42; inspect_wasm_artifact
APK-Signaturen v1/v2/v3/v3.1-Signer, Zertifikatfingerabdrücke, Schlüsselrotation und Digest-Selbstkonsistenz Integrierte statische Prüfung; inspect_apk_signature

Statische JavaScript- und .NET-Untersuchungen lesen die bereitgestellten Dateien, ohne die Anwendung auszuführen. Laufzeitaufzeichnungen führen das gewählte Ziel mit deinen Benutzerrechten aus oder interagieren damit; die jeweiligen Anleitungen beschreiben die Auswirkungen.

Bei großen Binärdateien kannst du die Startfrist mit REA_GHIDRA_STARTUP_TIMEOUT_MS oder REA_HOPPER_STARTUP_TIMEOUT_MS erhöhen.

Native Formate und unterstützte Hostsysteme unterscheiden sich je nach Provider. Siehe Hopper- und Ghidra-Einrichtung, den IDA-Leitfaden, Kuna und die experimentelle Ghidra-Unterstützung unter Windows. Ghidra unterstützt auch 16-Bit-DOS-Analyse. Die Provider-Auswahl beschreibt der CLI-Leitfaden. Prüfe die Verfügbarkeit in Releases für Funktionen, die seit der neuesten npm-Version hinzugekommen sind.

Fallstudien

Illustrationen der Fallstudien zu DX-Balls Klangbalance, Notions Zwischenablage-Brücke und TH04s Geschossring

DX-Ball: Eine Stereo-Panning-Berechnung rekonstruieren

Verfolge einen Sound-Aufruf zur Hilfsfunktion, die Positionen in Panning-Werte umrechnet, untersuche die Anweisungen und überführe unvollständigen Pseudocode in C. Die Rekonstruktion besteht 3.205 Tests mit dem ursprünglichen x86-Code und reproduziert alle 63 Bytes der kompilierten Funktion.

Fallstudie lesen · Rekonstruktionsrepository

Notion: Die Electron-Zwischenablagebrücke verfolgen

Finde die Zwischenablage-API des Renderers, verfolge sie über preload und IPC bis zum Hauptprozess und untersuche das Zwischenablageformat samt Formatierungsdaten.

Fallstudie lesen

TH04: Eine DOS-Geschossring-Berechnung wiederherstellen

Untersuche die 16-Bit-Anweisungen des ursprünglichen PC-98-Spiels, rekonstruiere die festen und zielgerichteten Winkelberechnungen und vergleiche das rekonstruierte C++ mit der Ausgabe des damaligen Compilers.

Fallstudie lesen · Rekonstruktionsrepository

Wenn du mit REA etwas Interessantes untersucht hast, würden wir es gern sehen. Teile deine Fallstudie in einem Issue oder Pull Request und beschreibe das Ziel, deine Frage, wie REA geholfen hat und was du herausgefunden hast.

Häufige Fragen

Welche Agenten können REA verwenden?

Jeder Agent, der lokale MCP-Server unterstützt. Die Einrichtung konfiguriert die unterstützten Agenten; andere Clients können die manuelle MCP-Registrierung nutzen.

Brauche ich Hopper, Ghidra oder IDA?

Für tiefgehende native Analysen wird eines dieser Programme verwendet. Statische JavaScript- und .NET-Untersuchungen funktionieren ohne native Analyse-Engine. Die Einrichtung kann Hopper nach Zustimmung installieren; Ghidra und IDA nutzen deine vorhandenen Installationen. Siehe Provider-Einrichtung.

Muss ich Hopper vorher starten?

REA startet Hopper, wenn eine Operation es benötigt. Unter macOS kann beim ersten Start ein Dialog erscheinen, in dem du den Demomodus auswählst oder deine Lizenz aktivierst. Siehe Hopper-Start und Fehlerbehebung.

Was bewirkt die Installation des Skills über skills.sh?

Der Skill stellt Untersuchungsanweisungen für deinen Agenten bereit. Verwende npx rea-agents setup, um den MCP-Server von REA zu registrieren und passende Anweisungen zu installieren. Starte deinen Agenten anschließend neu. Siehe Installation nur des Skills.

Welchen Code liefert REA zurück?

Native Analysen liefern Pseudocode und Assemblercode. JavaScript-/Electron-Analysen rekonstruieren Module und ihre Beziehungen. Dein Agent nutzt diese Ergebnisse zum Schreiben und Testen einer Implementierung; die Fallstudien zeigen konkrete Beispiele.

Lädt REA meine App hoch?

REA analysiert Ziele lokal. Dein Agent erhält die Werkzeugergebnisse; sein Modellanbieter hat eine eigene Datenrichtlinie.

Was soll ich tun, wenn ich einen Fehler finde?

Aktualisiere zuerst; eine neuere Version könnte den Fehler bereits behoben haben.

Für eine über npm installierte CLI:

rea update

Für die Agenteneinrichtung über npx:

npx rea-agents@latest setup

Wenn du einen Agenten verwendest, schließe die Aktualisierung der Einrichtung ab und starte ihn neu. Wiederhole dieselbe Aufgabe. Besteht das Problem weiterhin, öffne ein Issue mit deiner REA-Version, dem Zieltyp, den Reproduktionsschritten und der Fehlerausgabe.

Dokumentation

Beginne mit den praxisnahen Anleitungen auf der Website. Genaue Optionen, Voraussetzungen und Ergebniskontrakte findest du hier:

Melde Sicherheitslücken gemäß SECURITY.md.

Sternverlauf

🎉 300.000 GitHub-Sterne – vielen Dank!

Danke an alle, die REA nutzen, Fehler melden, Funktionswünsche äußern, Builds testen und Fehlerbehebungen beitragen.

GitHub-Sternverlauf von REA

Haftungsausschluss

Hinweise zur verantwortungsvollen Nutzung findest du in DISCLAIMER.md.

REA dient der rechtmäßigen Forschung, Bildung, Interoperabilität, Softwareerhaltung und Analyse von Software, die dir gehört oder die du mit entsprechender Genehmigung untersuchen darfst.

The project's position on illegal or unauthorized use covers all REA versions, distribution channels, and platforms; each copy retains its applicable licenses.

Mitwirken

Wir freuen uns über deine Hilfe bei REA! Öffne ein Issue, um einen Fehler zu melden oder eine Funktion vorzuschlagen, oder sende einen Pull Request, um Code oder Dokumentation zu verbessern.

Die Entwicklungsumgebung und Prüfungen beschreibt CONTRIBUTING.md, die Verifikationspfade der Testleitfaden und die Projektstruktur die Architekturübersicht.

Lizenz

MIT

REA-authored code is licensed under MIT. Third-party material retains its own licenses and copyright notices; see Third-party notices for the dependency inventory, preserved license texts, and external-tool terms.

You must legally obtain and be authorized to use commercial tools, including IDA Pro / Hex-Rays decompilers, Hopper, and JEB, under their applicable licenses. REA grants no tool license, key, or activation entitlement. Trials and demos remain subject to vendor terms, including user, feature, automation, and output sharing restrictions. Cracked copies, stolen keys, unauthorized key sharing, and bypassing license restrictions are not authorized. This guidance does not amend MIT or third-party licenses.