{"content_id":"mqxmod7ehz","slug":"rea-ai-reverse-engineering-performance-and-limits","locale":"de","schema_type":"TechArticle","category":"knowledge_base","category_name":"Wissensdatenbank","title":"REA AI-Reverse-Engineering: Prinzip und Leistungsgrenzen","summary":"REA verbindet AI-Agenten mit Reverse-Engineering-Werkzeugen, um das Verhalten von Software zu untersuchen. Der Beitrag unterscheidet zwischen dem Prüfumfang öffentlicher Fallbeispiele und den Grenzen der Serveranalyse. Außerdem erläutert er Sicherheit, Urheberrecht und die Reproduzierbarkeit der Analyseergebnisse.","sponsorship_disclosure":null,"affiliate_disclosure":null,"commerce_disclosure":null,"author":{"name":"injoys","url":"https://injoys.com/ko/about"},"key_points":["REA verbindet AI-Agenten über MCP mit Reverse-Engineering-Werkzeugen, damit sie diese aufrufen können.","Das Verhalten einer ausführbaren Datei zu verstehen, ist etwas anderes, als den ursprünglichen Quellcode wiederherzustellen.","Der veröffentlichte DX-Ball-Fall zeigt das Prüfergebnis für eine bestimmte Funktion. Er bedeutet nicht, dass das gesamte Spiel wiederhergestellt wurde.","Servercode oder nicht öffentlich zugängliche Modelle, die nicht in der App enthalten sind, lassen sich nicht allein durch die Analyse der App beschaffen.","Für Analyseergebnisse müssen Belege und ungeprüfte Bereiche dokumentiert und das Verhalten mit dem Original verglichen werden."],"content_markdown":"REA verbindet KI mit Reverse-Engineering-Werkzeugen, damit sie diese aufrufen und das Verhalten von Apps untersuchen kann. Die veröffentlichten Beispiele zeigen, dass sich bestimmte Funktionen analysieren und möglicherweise neu implementieren lassen. Sie sind weder ein Beleg für das Ende der Softwarebranche noch für die vollständige Kopierbarkeit eines Dienstes.\n\nDie Angaben zur Überprüfung von DX-Ball beziehen sich auf die Verlaufsaufzeichnung des offiziellen Fallbeispiels vom 7. Oktober 2026.\n\n## Was ist REA?\n\nREA steht für Reverse Engineer Anything. Das Projekt verbindet Softwareanalyse-Werkzeuge mit KI-Agenten. Es ist kein einzelnes KI-Modell, das sämtliche Analysen selbst durchführt.\n\nBeim Reverse Engineering werden Struktur und Verhalten fertiger Software untersucht. Ziel ist es, die Informationen zu ermitteln, die nötig sind, um Funktionen zu erklären oder Kompatibilität herzustellen.\n\nBei der Kompilierung wird von Menschen geschriebener Code in eine ausführbare Form umgewandelt. Dabei können Kommentare und manche Informationen zu Namen verloren gehen. Durch Optimierung können sich auch Funktionen und Berechnungen in ihrer Form verändern.\n\nAllerdings bleibt nicht von jeder App nur namenloser Maschinencode übrig. Manche ausgelieferten Programme enthalten JavaScript-Code oder Debugging-Informationen. Die Analysemethode hängt daher vom Dateiformat und den verbliebenen Informationen ab.\n\n| Begriff | Einfache Erklärung | Worauf bei der Bewertung der Ergebnisse zu achten ist |\n| --- | --- | --- |\n| Disassemblierung | Maschinencode als Assemblerbefehle darstellen | Der Zweck der Befehle muss zusätzlich interpretiert werden |\n| Dekompilierung | Ausführbaren Code in einer quellcodeähnlichen Form darstellen | Keine Garantie, dass diese dem ursprünglichen Quellcode entspricht |\n| Statische Analyse | Dateien untersuchen, ohne das Programm auszuführen | Von den tatsächlichen Ausführungspfaden unterscheiden |\n| Dynamische Analyse | Das Programm ausführen und sein Verhalten beobachten | Verhalten außerhalb der beobachteten Bedingungen bleibt ungeprüft |\n| Neuimplementierung | Ermitteltes Verhalten in neuem Code umsetzen | Vergleichende Überprüfung mit dem Original erforderlich |\n\n## Wie werden KI und Ghidra verbunden?\n\nREA übermittelt Analyseanfragen eines Agenten über MCP an Werkzeuge. MCP ist ein Verbindungsstandard, über den KI und externe Werkzeuge Anfragen und Ergebnisse austauschen. Ghidra ist ein Reverse-Engineering-Werkzeug zur Untersuchung ausführbarer Dateien.\n\nDie offizielle README beschreibt neben Ghidra auch die Anbindung von Hopper und IDA. Für die statische Analyse von JavaScript ist keine native Analyse-Engine erforderlich. REA allein als automatisierte Bedienung von Ghidra zu beschreiben, würde seinen Funktionsumfang daher zu eng fassen.\n\nDie Analyse läuft üblicherweise in dieser Reihenfolge ab:\n\n1. Die zu untersuchende App und Funktion festlegen.\n2. Anhand von Zeichenketten oder Funktionsaufrufen die relevanten Stellen finden.\n3. Befehlen und Datenflüssen folgen, um das Verhalten zu interpretieren.\n4. Fehlende Belege durch weitere Werkzeugaufrufe prüfen.\n5. Das neu implementierte Ergebnis mit dem Verhalten des Originals vergleichen.\n\nAuch Ghidra verfügt bereits über Funktionen zur automatischen Analyse. REA ermöglicht es einem Agenten, Analyseanfragen fortlaufend zu stellen. Wie genau die Ergebnisse tatsächlich sind, hängt vom Untersuchungsobjekt, der Analyse-Engine, dem Modell und der Prüfmethode ab.\n\n## Analyseumfang je nach Bedingungen\n\nWas sich mit REA überprüfen lässt, hängt von den zugänglichen Dateien und der Ausführungsumgebung ab. Eine lokale App kann Code für die Kommunikation mit einem Server enthalten. Das bedeutet nicht, dass dieser Code auch die interne Implementierung des Servers enthält.\n\n| Analyseobjekt | Was überprüft werden kann | Was sich allein aus der Analyse nicht sicher ableiten lässt |\n| --- | --- | --- |\n| Lokale ausführbare Datei | Berechnungen, Zeichenketten, Beziehungen zwischen Funktionsaufrufen | Sämtliche ursprünglichen Kommentare und Entwurfsabsichten |\n| JavaScript- und Electron-App | Modulstruktur, Verbindung zwischen Oberfläche und interner Verarbeitung | Verarbeitungslogik, die nur auf dem Server vorhanden ist |\n| Webseite und Kommunikationsprotokolle | Heruntergeladene Skripte, beobachtete Anfragen und Antworten | Gesamter Serverquellcode und gesamte Datenbank |\n| Lokal enthaltene Modelldatei | Struktur und Informationen der zugänglichen Datei | Nicht öffentliches Modell, das nur auf dem Server verwendet wird |\n| Zur Laufzeit beobachtete Funktion | Verhalten bei den betreffenden Eingaben und in der betreffenden Umgebung | Verhalten bei allen Eingaben und Fehlerbedingungen |\n\nFür die Neuimplementierung eines Dienstes müssen auch Anforderungen außerhalb der beobachteten Funktionen berücksichtigt werden. Dazu gehören etwa das Verhalten bei Kontoberechtigungen und die Fehlerbehandlung. Selbst wenn eine Oberfläche ähnlich funktioniert, lässt sich daraus nicht schließen, dass der gesamte Dienst gleich ist.\n\n## Was das Taschenrechnerexperiment von 8 Minuten und 41 Sekunden belegt\n\nDie Angabe von 8 Minuten und 41 Sekunden ist eine Behauptung zu einer Vorführung, deren Originalaufzeichnung nicht überprüft wurde. Die dazu genannte Zahl der Werkzeugaufrufe beträgt 17. Auch die Behauptung, vier Rechenregeln gefunden zu haben, konnte nicht unabhängig überprüft werden.\n\nDie Versuchsbedingungen müssten anhand des Originalvideos und der Ausführungsprotokolle überprüft werden. Die benötigte Zeit variiert je nach Modell und Programmgröße. Aus einem einzelnen Erfolg lässt sich weder die allgemeine Analysegeschwindigkeit noch die Genauigkeit beurteilen.\n\nBei der Analyse eines Taschenrechners reicht es zur Überprüfung nicht aus, Formeln zu lesen. Die Reihenfolge, in der Rabatt und Gutschein angewendet werden, kann das Ergebnis verändern. Auch das Abschneiden bei ganzzahliger Division muss gesondert geprüft werden.\n\n- Reihenfolge der Anwendung von Rabatt und Gutschein\n- Betrag, auf dessen Grundlage die Steuer berechnet wird\n- Stelle, an der Zwischenergebnisse gerundet oder abgeschnitten werden\n- Ausgabe an Grenzwerten, bei denen sich Bedingungen ändern\n- Vergleichsprotokolle mit denselben Eingaben für Original und neu implementierten Code\n\nUm eine schnelle Analyse zu belegen, braucht es auch Aufzeichnungen jenseits der erfolgreichen Antwort. Fehlgeschlagene Ausführungen und die Zahl der erneuten Versuche beeinflussen den Vergleich. Die bisher überprüften Belege reichen nicht für eine allgemeine Bewertung aus, wonach das System Menschen überlegen sei.\n\n## In veröffentlichten Beispielen belegte Ergebnisse\n\nDie offiziellen Fallbeispiele zeigen den Zwischenablagepfad von Notion und eine Berechnungsfunktion von DX-Ball. Beide benennen den Umfang der untersuchten Funktion. Dabei ist auch zu berücksichtigen, dass die Aufzeichnungen vom REA-Projekt selbst veröffentlicht wurden.\n\n| Beispiel | In den veröffentlichten Dokumenten belegte Arbeit | Was daraus nicht abgeleitet werden darf |\n| --- | --- | --- |\n| Notion Desktop 7.6.1 | Den Pfad von einem internen App-Aufruf bis zur Systemzwischenablage nachverfolgt | Kopie des gesamten Notion-Dienstes |\n| DX-Ball 1.07 | Funktion neu implementiert, die eine Bildschirmposition in Audiowerte für links und rechts umwandelt | Abgeschlossene Rekonstruktion des gesamten Spiels |\n| Schlanke Ersatz-App für Razer Synapse | Bei dieser Prüfung keine konkreten Aufzeichnungen zur Überprüfung am Original gefunden | Als offiziell überprüftes Ergebnis von REA einstufen |\n| Folieneditor im Zusammenhang mit Claude | Bei dieser Prüfung Untersuchungsobjekt und Umfang der Neuimplementierung nicht geklärt | Als Rekonstruktion eines nicht öffentlichen Modells von Claude deuten |\n\nDas Notion-Beispiel verfolgt, wie ein Aufruf von der Oberfläche aus die interne Kommunikation durchläuft. Am Ende führt der Pfad zur Funktion von Electron, die in die Zwischenablage schreibt. Das Beispiel erklärt damit den Verarbeitungsweg einer bestimmten Funktion.\n\nIm DX-Ball-Beispiel wurden Funktionseingaben und Berechnungskonstanten anhand der ausführbaren Datei überprüft. Für die betreffende Funktion wurden **3.205 Vergleichstests** durchgeführt. Das Kompilierungsergebnis stimmte unter Berücksichtigung der geprüften Relokationsbehandlung in 63 Bytes überein.\n\nDiese Aufzeichnungen stützen die Neuimplementierung einer bestimmten Funktion. Laut offizieller Dokumentation wird noch an einer lauffähigen Rekonstruktion des gesamten Spiels gearbeitet. Die Überprüfung einzelner Funktionen ist von der Fertigstellung des gesamten Produkts zu unterscheiden.\n\n## Was gewährleisten Kennzeichnungen für Beobachtungen und Schlussfolgerungen?\n\nBelegkennzeichnungen dienen dazu, die Herkunft einer Schlussfolgerung erkennbar zu machen. Die REA-Dokumentation unterscheidet Beobachtungen, Schlussfolgerungen und ungeprüfte Informationen. Allerdings verwenden nicht alle Werkzeuge dieselben vier Kennzeichnungen.\n\nIn den offiziellen Dokumenten erscheinen je nach Analyseart unterschiedliche Status- und Vertrauensangaben. Beim Lesen hilft es, die Bedeutungen wie folgt zu unterscheiden. Die Einteilung in der Tabelle dient der Erläuterung.\n\n| Kategorie | Bedeutung | Was zu prüfen ist |\n| --- | --- | --- |\n| Beobachtung | Direkt anhand einer Datei oder eines Ausführungsergebnisses überprüft | Version des Untersuchungsobjekts und Fundstelle |\n| Ableitung | Aus beobachteten Werten und Zusammenhängen berechnetes Ergebnis | Rechenweg und Annahmen |\n| Vermutung | Interpretation, die weiterer Überprüfung bedarf | Möglichkeit anderer Erklärungen |\n| Ungeprüft | Bereich, für den kein Beleg gesichert werden konnte | Untersuchungsumfang und Grund für die fehlgeschlagene Überprüfung |\n\nDie offizielle DISCLAIMER.md nennt die Grenzen der Analyseergebnisse ausdrücklich.\n\n\u003e Dekompilierung, Rekonstruktion, Heuristiken und KI-gestützte Analysen können unvollständig oder falsch sein.\n\u003e\n\u003e Quelle: REA DISCLAIMER.md\n\nDas bedeutet, dass Dekompilierung und KI-Analysen unvollständig oder falsch sein können. Auch eine als Beobachtung gekennzeichnete Aussage schließt Werkzeugfehler nicht aus. Der Wert einer Belegkennzeichnung liegt darin, die Stelle für eine erneute Prüfung festzuhalten.\n\n## Häufige Fehler\n\nEin besonders häufiges Missverständnis besteht darin, ein nachvollziehbar erklärtes Ergebnis als vollständig überprüft anzusehen. Gut lesbarer Code kann sich anders verhalten als das Original. Nicht untersuchte Pfade müssen gesondert ausgewiesen werden.\n\n| Missverständnis | Genauere Einordnung |\n| --- | --- |\n| Durch Dekompilierung erhält man den ursprünglichen Quellcode zurück | Oft erhält man eine quellcodeähnliche Darstellung |\n| Im Code gibt es einen Pfad, also wurde er tatsächlich ausgeführt | Ein statisch erkennbarer Zusammenhang ist keine Beobachtung zur Laufzeit |\n| Die Funktion wurde nicht gefunden, also gibt es sie nicht | Der Untersuchungsumfang oder die Werkzeugunterstützung kann unzureichend sein |\n| Das Werkzeug wurde erfolgreich beendet, also ist die Analyse vollständig | Auch bei einem erfolgreichen Ergebnis können ungeprüfte Punkte bleiben |\n| Das Ergebnis hat Belege, also gibt es keine Halluzinationen | Belege und Interpretation müssen gemeinsam geprüft werden |\n\nAuch die CLI-Dokumentation von REA unterscheidet zwischen erfolgreichem Abschluss und vollständiger Analyse. Selbst nach Abschluss einer Aufgabe können Belege oder Fragen offenbleiben. Prüfen Sie statt der Abschlussmeldung die Einschränkungen des Ergebnisses.\n\n## Aufzeichnungen, mit denen sich Analyseergebnisse erneut prüfen lassen\n\nZu einer reproduzierbaren Analyse gehören auch die Bedingungen, unter denen die Schlussfolgerungen gewonnen wurden. Selbst bei derselben App kann sich der Code durch Updates ändern. Wird nur die Adresse einer Funktion notiert, lässt sich das Untersuchungsobjekt in einer anderen Version schwer wiederfinden.\n\nDie Evidence-Aufzeichnungen von REA bewahren Identifikationsdaten des Untersuchungsobjekts und Fundstellen der Belege auf. Snapshots ermöglichen es, Analyseergebnisse wiederzuverwenden, wenn die Bedingungen übereinstimmen. Ein gespeichertes Ergebnis bedeutet nicht, dass auch die neueste Version überprüft wurde.\n\nGehen Sie beim Festhalten der Überprüfung wie folgt vor:\n\n1. Notieren Sie Version und Hash der untersuchten Datei.\n2. Halten Sie die Versionen von REA und der Analyse-Engine fest.\n3. Verknüpfen Sie jede Schlussfolgerung mit einer Dateiposition oder Funktionsadresse.\n4. Bewahren Sie die Ein- und Ausgaben des Originals und des neu implementierten Codes gemeinsam auf.\n5. Notieren Sie nicht untersuchte Bedingungen und fehlgeschlagene Tests gesondert.\n\nEin Hash ist ein Identifikationswert, mit dem sich feststellen lässt, ob Dateien gleich sind. Wenn er festgehalten wird, lässt sich nachvollziehen, auf welche ausgelieferte Version sich eine Beschreibung bezieht. Auch wenn eine KI das Ergebnis später zitiert, kann so sein Geltungsbereich abgegrenzt werden.\n\n## Lokale Analyse und externe Datenübertragung\n\nEine lokale Analyse schließt nicht aus, dass bei der gesamten Arbeit Daten nach außen übertragen werden. Laut der offiziellen README erfolgt die Analyse des Untersuchungsobjekts durch REA lokal. Die Werkzeugergebnisse erhält der verbundene KI-Agent.\n\nWird ein externes Modell verwendet, können Analyseergebnisse an dessen Anbieter übermittelt werden. Welche Datenrichtlinien gelten, hängt vom verbundenen Dienst ab. Prüfen Sie bei Unternehmens-Apps oder nicht öffentlichen Dateien zuerst die Übertragungswege.\n\n- Umfang des Codes und der Zeichenketten, die an das Modell übermittelt werden\n- Kontodaten und Zugriffstoken in Protokollen\n- Personenbezogene Daten in Kommunikationsprotokollen\n- Speicherort und Aufbewahrungsrichtlinien für Analyseergebnisse\n\nAuch die statische Untersuchung einer Datei ist von der Ausführung eines Programms zu unterscheiden. Beobachtungen zur Laufzeit können Dateien oder den Zustand eines Kontos beeinflussen. Behandeln Sie nicht vertrauenswürdige Programme in einer isolierten Testumgebung.\n\n## Sicherheit und Rechte: Was Entwickler prüfen sollten\n\nIn eine App eingebettete Geheimnisse können durch Reverse Engineering offengelegt werden. OWASP beschreibt das Problem sensibler Informationen in ausgelieferten Paketen. Dieses Risiko bestand schon vor REA.\n\nInsbesondere dürfen keine geheimen API-Schlüssel mit Serverberechtigungen in eine App aufgenommen werden. OWASP empfiehlt, statische Geheimnisse auf dem Server zu belassen. Obfuskation kann das Auslesen erschweren, gewährleistet aber keine Geheimhaltung.\n\n- Prüfen Sie ausgelieferte Dateien auf enthaltene Passwörter und geheime Schlüssel.\n- Begrenzen Sie Berechtigungen und Gültigkeitsdauer von Authentifizierungstoken.\n- Überprüfen Sie die Berechtigungen der anfragenden Person auf dem Server.\n- Ersetzen Sie offengelegte Zugangsdaten.\n\nWelche Formen des Reverse Engineering zulässig sind, hängt vom Land, von Verträgen und von der konkreten Tätigkeit ab. Dass ein Vorhaben der Kompatibilität dient, bedeutet nicht, dass jede Handlung erlaubt ist. Analyse und Weiterverbreitung von Code oder Bildern müssen getrennt geprüft werden.\n\nDie MIT-Lizenz von REA gewährt keine Rechte am untersuchten Objekt. Die Nutzungsgrundsätze des Projekts stehen in der offiziellen DISCLAIMER.md. Prüfen Sie die tatsächlichen Grenzen anhand des anwendbaren Rechts und der Bedingungen der untersuchten Software.\n\n## Was verändert sich für die Softwarebranche?\n\nREA zeigt, dass sich der Aufwand für das Verständnis bestehender Funktionen möglicherweise verringern lässt. Diese Einschätzung lässt sich aus den veröffentlichten Analysebeispielen ableiten. Über das Ausmaß einer Kostensenkung in der gesamten Branche liegen keine bestätigten Zahlen vor.\n\nSelbst wenn die Implementierung einzelner Funktionen bekannt ist, ist der Betrieb eines Dienstes eine andere Aufgabe. Datenqualität und Störungsbehebung lassen sich nicht allein durch die Analyse einer ausführbaren Datei kopieren. Deshalb müssen die Leichtigkeit der Nachahmung von Funktionen und die Wettbewerbsfähigkeit eines Unternehmens getrennt bewertet werden.\n\n| Geschäftsaspekt | Schlussfolgerung aus dem Analyseumfang von REA |\n| --- | --- |\n| Einzelne Funktion innerhalb einer App | Untersuchung der Implementierung und Neuimplementierung könnten weniger Aufwand erfordern |\n| Verarbeitung ausschließlich auf dem Server | Durch Client-Analyse allein schwer zu erschließen |\n| Daten und Zugriffsrechte | Müssen unabhängig vom Codeverständnis beschafft und verwaltet werden |\n| Stabilität und zuverlässiger Betrieb | Tests, Wartung und Störungsbehebung bleiben erforderlich |\n| Erhaltung bestehender Software | Rekonstruktion ist von kleinen Funktionen aus möglich, wenn Belege festgehalten werden |\n\nDie veröffentlichten REA-Beispiele zeigen eine Veränderung darin, wie Software verstanden werden kann. Sie belegen nicht, dass der Bedarf an Entwicklung verschwindet. Auch nach der Neuimplementierung einer Funktion müssen Kompatibilität und Betriebsqualität überprüft werden.","content_html":"\u003cp\u003eREA verbindet KI mit Reverse-Engineering-Werkzeugen, damit sie diese aufrufen und das Verhalten von Apps untersuchen kann. Die veröffentlichten Beispiele zeigen, dass sich bestimmte Funktionen analysieren und möglicherweise neu implementieren lassen. Sie sind weder ein Beleg für das Ende der Softwarebranche noch für die vollständige Kopierbarkeit eines Dienstes.\u003c/p\u003e\n\u003cp\u003eDie Angaben zur Überprüfung von DX-Ball beziehen sich auf die Verlaufsaufzeichnung des offiziellen Fallbeispiels vom 7. Oktober 2026.\u003c/p\u003e\n\u003ch2\u003e\n\u003ca href=\"#was-ist-rea\" class=\"anchor\" id=\"was-ist-rea\"\u003e\u003c/a\u003eWas ist REA?\u003c/h2\u003e\n\u003cp\u003eREA steht für Reverse Engineer Anything. Das Projekt verbindet Softwareanalyse-Werkzeuge mit KI-Agenten. Es ist kein einzelnes KI-Modell, das sämtliche Analysen selbst durchführt.\u003c/p\u003e\n\u003cp\u003eBeim Reverse Engineering werden Struktur und Verhalten fertiger Software untersucht. Ziel ist es, die Informationen zu ermitteln, die nötig sind, um Funktionen zu erklären oder Kompatibilität herzustellen.\u003c/p\u003e\n\u003cp\u003eBei der Kompilierung wird von Menschen geschriebener Code in eine ausführbare Form umgewandelt. Dabei können Kommentare und manche Informationen zu Namen verloren gehen. Durch Optimierung können sich auch Funktionen und Berechnungen in ihrer Form verändern.\u003c/p\u003e\n\u003cp\u003eAllerdings bleibt nicht von jeder App nur namenloser Maschinencode übrig. Manche ausgelieferten Programme enthalten JavaScript-Code oder Debugging-Informationen. Die Analysemethode hängt daher vom Dateiformat und den verbliebenen Informationen ab.\u003c/p\u003e\n\u003cdiv class=\"overflow-x-auto\"\u003e\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eBegriff\u003c/th\u003e\n\u003cth\u003eEinfache Erklärung\u003c/th\u003e\n\u003cth\u003eWorauf bei der Bewertung der Ergebnisse zu achten ist\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Begriff\"\u003eDisassemblierung\u003c/td\u003e\n\u003ctd data-label=\"Einfache Erklärung\"\u003eMaschinencode als Assemblerbefehle darstellen\u003c/td\u003e\n\u003ctd data-label=\"Worauf bei der Bewertung der Ergebnisse zu achten ist\"\u003eDer Zweck der Befehle muss zusätzlich interpretiert werden\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Begriff\"\u003eDekompilierung\u003c/td\u003e\n\u003ctd data-label=\"Einfache Erklärung\"\u003eAusführbaren Code in einer quellcodeähnlichen Form darstellen\u003c/td\u003e\n\u003ctd data-label=\"Worauf bei der Bewertung der Ergebnisse zu achten ist\"\u003eKeine Garantie, dass diese dem ursprünglichen Quellcode entspricht\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Begriff\"\u003eStatische Analyse\u003c/td\u003e\n\u003ctd data-label=\"Einfache Erklärung\"\u003eDateien untersuchen, ohne das Programm auszuführen\u003c/td\u003e\n\u003ctd data-label=\"Worauf bei der Bewertung der Ergebnisse zu achten ist\"\u003eVon den tatsächlichen Ausführungspfaden unterscheiden\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Begriff\"\u003eDynamische Analyse\u003c/td\u003e\n\u003ctd data-label=\"Einfache Erklärung\"\u003eDas Programm ausführen und sein Verhalten beobachten\u003c/td\u003e\n\u003ctd data-label=\"Worauf bei der Bewertung der Ergebnisse zu achten ist\"\u003eVerhalten außerhalb der beobachteten Bedingungen bleibt ungeprüft\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Begriff\"\u003eNeuimplementierung\u003c/td\u003e\n\u003ctd data-label=\"Einfache Erklärung\"\u003eErmitteltes Verhalten in neuem Code umsetzen\u003c/td\u003e\n\u003ctd data-label=\"Worauf bei der Bewertung der Ergebnisse zu achten ist\"\u003eVergleichende Überprüfung mit dem Original erforderlich\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\u003c/div\u003e\n\u003ch2\u003e\n\u003ca href=\"#wie-werden-ki-und-ghidra-verbunden\" class=\"anchor\" id=\"wie-werden-ki-und-ghidra-verbunden\"\u003e\u003c/a\u003eWie werden KI und Ghidra verbunden?\u003c/h2\u003e\n\u003cp\u003eREA übermittelt Analyseanfragen eines Agenten über MCP an Werkzeuge. MCP ist ein Verbindungsstandard, über den KI und externe Werkzeuge Anfragen und Ergebnisse austauschen. Ghidra ist ein Reverse-Engineering-Werkzeug zur Untersuchung ausführbarer Dateien.\u003c/p\u003e\n\u003cp\u003eDie offizielle README beschreibt neben Ghidra auch die Anbindung von Hopper und IDA. Für die statische Analyse von JavaScript ist keine native Analyse-Engine erforderlich. REA allein als automatisierte Bedienung von Ghidra zu beschreiben, würde seinen Funktionsumfang daher zu eng fassen.\u003c/p\u003e\n\u003cp\u003eDie Analyse läuft üblicherweise in dieser Reihenfolge ab:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eDie zu untersuchende App und Funktion festlegen.\u003c/li\u003e\n\u003cli\u003eAnhand von Zeichenketten oder Funktionsaufrufen die relevanten Stellen finden.\u003c/li\u003e\n\u003cli\u003eBefehlen und Datenflüssen folgen, um das Verhalten zu interpretieren.\u003c/li\u003e\n\u003cli\u003eFehlende Belege durch weitere Werkzeugaufrufe prüfen.\u003c/li\u003e\n\u003cli\u003eDas neu implementierte Ergebnis mit dem Verhalten des Originals vergleichen.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eAuch Ghidra verfügt bereits über Funktionen zur automatischen Analyse. REA ermöglicht es einem Agenten, Analyseanfragen fortlaufend zu stellen. Wie genau die Ergebnisse tatsächlich sind, hängt vom Untersuchungsobjekt, der Analyse-Engine, dem Modell und der Prüfmethode ab.\u003c/p\u003e\n\u003ch2\u003e\n\u003ca href=\"#analyseumfang-je-nach-bedingungen\" class=\"anchor\" id=\"analyseumfang-je-nach-bedingungen\"\u003e\u003c/a\u003eAnalyseumfang je nach Bedingungen\u003c/h2\u003e\n\u003cp\u003eWas sich mit REA überprüfen lässt, hängt von den zugänglichen Dateien und der Ausführungsumgebung ab. Eine lokale App kann Code für die Kommunikation mit einem Server enthalten. Das bedeutet nicht, dass dieser Code auch die interne Implementierung des Servers enthält.\u003c/p\u003e\n\u003cdiv class=\"overflow-x-auto\"\u003e\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eAnalyseobjekt\u003c/th\u003e\n\u003cth\u003eWas überprüft werden kann\u003c/th\u003e\n\u003cth\u003eWas sich allein aus der Analyse nicht sicher ableiten lässt\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Analyseobjekt\"\u003eLokale ausführbare Datei\u003c/td\u003e\n\u003ctd data-label=\"Was überprüft werden kann\"\u003eBerechnungen, Zeichenketten, Beziehungen zwischen Funktionsaufrufen\u003c/td\u003e\n\u003ctd data-label=\"Was sich allein aus der Analyse nicht sicher ableiten lässt\"\u003eSämtliche ursprünglichen Kommentare und Entwurfsabsichten\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Analyseobjekt\"\u003eJavaScript- und Electron-App\u003c/td\u003e\n\u003ctd data-label=\"Was überprüft werden kann\"\u003eModulstruktur, Verbindung zwischen Oberfläche und interner Verarbeitung\u003c/td\u003e\n\u003ctd data-label=\"Was sich allein aus der Analyse nicht sicher ableiten lässt\"\u003eVerarbeitungslogik, die nur auf dem Server vorhanden ist\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Analyseobjekt\"\u003eWebseite und Kommunikationsprotokolle\u003c/td\u003e\n\u003ctd data-label=\"Was überprüft werden kann\"\u003eHeruntergeladene Skripte, beobachtete Anfragen und Antworten\u003c/td\u003e\n\u003ctd data-label=\"Was sich allein aus der Analyse nicht sicher ableiten lässt\"\u003eGesamter Serverquellcode und gesamte Datenbank\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Analyseobjekt\"\u003eLokal enthaltene Modelldatei\u003c/td\u003e\n\u003ctd data-label=\"Was überprüft werden kann\"\u003eStruktur und Informationen der zugänglichen Datei\u003c/td\u003e\n\u003ctd data-label=\"Was sich allein aus der Analyse nicht sicher ableiten lässt\"\u003eNicht öffentliches Modell, das nur auf dem Server verwendet wird\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Analyseobjekt\"\u003eZur Laufzeit beobachtete Funktion\u003c/td\u003e\n\u003ctd data-label=\"Was überprüft werden kann\"\u003eVerhalten bei den betreffenden Eingaben und in der betreffenden Umgebung\u003c/td\u003e\n\u003ctd data-label=\"Was sich allein aus der Analyse nicht sicher ableiten lässt\"\u003eVerhalten bei allen Eingaben und Fehlerbedingungen\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\u003c/div\u003e\n\u003cp\u003eFür die Neuimplementierung eines Dienstes müssen auch Anforderungen außerhalb der beobachteten Funktionen berücksichtigt werden. Dazu gehören etwa das Verhalten bei Kontoberechtigungen und die Fehlerbehandlung. Selbst wenn eine Oberfläche ähnlich funktioniert, lässt sich daraus nicht schließen, dass der gesamte Dienst gleich ist.\u003c/p\u003e\n\u003ch2\u003e\n\u003ca href=\"#was-das-taschenrechnerexperiment-von-8-minuten-und-41-sekunden-belegt\" class=\"anchor\" id=\"was-das-taschenrechnerexperiment-von-8-minuten-und-41-sekunden-belegt\"\u003e\u003c/a\u003eWas das Taschenrechnerexperiment von 8 Minuten und 41 Sekunden belegt\u003c/h2\u003e\n\u003cp\u003eDie Angabe von 8 Minuten und 41 Sekunden ist eine Behauptung zu einer Vorführung, deren Originalaufzeichnung nicht überprüft wurde. Die dazu genannte Zahl der Werkzeugaufrufe beträgt 17. Auch die Behauptung, vier Rechenregeln gefunden zu haben, konnte nicht unabhängig überprüft werden.\u003c/p\u003e\n\u003cp\u003eDie Versuchsbedingungen müssten anhand des Originalvideos und der Ausführungsprotokolle überprüft werden. Die benötigte Zeit variiert je nach Modell und Programmgröße. Aus einem einzelnen Erfolg lässt sich weder die allgemeine Analysegeschwindigkeit noch die Genauigkeit beurteilen.\u003c/p\u003e\n\u003cp\u003eBei der Analyse eines Taschenrechners reicht es zur Überprüfung nicht aus, Formeln zu lesen. Die Reihenfolge, in der Rabatt und Gutschein angewendet werden, kann das Ergebnis verändern. Auch das Abschneiden bei ganzzahliger Division muss gesondert geprüft werden.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eReihenfolge der Anwendung von Rabatt und Gutschein\u003c/li\u003e\n\u003cli\u003eBetrag, auf dessen Grundlage die Steuer berechnet wird\u003c/li\u003e\n\u003cli\u003eStelle, an der Zwischenergebnisse gerundet oder abgeschnitten werden\u003c/li\u003e\n\u003cli\u003eAusgabe an Grenzwerten, bei denen sich Bedingungen ändern\u003c/li\u003e\n\u003cli\u003eVergleichsprotokolle mit denselben Eingaben für Original und neu implementierten Code\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eUm eine schnelle Analyse zu belegen, braucht es auch Aufzeichnungen jenseits der erfolgreichen Antwort. Fehlgeschlagene Ausführungen und die Zahl der erneuten Versuche beeinflussen den Vergleich. Die bisher überprüften Belege reichen nicht für eine allgemeine Bewertung aus, wonach das System Menschen überlegen sei.\u003c/p\u003e\n\u003ch2\u003e\n\u003ca href=\"#in-ver%C3%B6ffentlichten-beispielen-belegte-ergebnisse\" class=\"anchor\" id=\"in-veröffentlichten-beispielen-belegte-ergebnisse\"\u003e\u003c/a\u003eIn veröffentlichten Beispielen belegte Ergebnisse\u003c/h2\u003e\n\u003cp\u003eDie offiziellen Fallbeispiele zeigen den Zwischenablagepfad von Notion und eine Berechnungsfunktion von DX-Ball. Beide benennen den Umfang der untersuchten Funktion. Dabei ist auch zu berücksichtigen, dass die Aufzeichnungen vom REA-Projekt selbst veröffentlicht wurden.\u003c/p\u003e\n\u003cdiv class=\"overflow-x-auto\"\u003e\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eBeispiel\u003c/th\u003e\n\u003cth\u003eIn den veröffentlichten Dokumenten belegte Arbeit\u003c/th\u003e\n\u003cth\u003eWas daraus nicht abgeleitet werden darf\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Beispiel\"\u003eNotion Desktop 7.6.1\u003c/td\u003e\n\u003ctd data-label=\"In den veröffentlichten Dokumenten belegte Arbeit\"\u003eDen Pfad von einem internen App-Aufruf bis zur Systemzwischenablage nachverfolgt\u003c/td\u003e\n\u003ctd data-label=\"Was daraus nicht abgeleitet werden darf\"\u003eKopie des gesamten Notion-Dienstes\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Beispiel\"\u003eDX-Ball 1.07\u003c/td\u003e\n\u003ctd data-label=\"In den veröffentlichten Dokumenten belegte Arbeit\"\u003eFunktion neu implementiert, die eine Bildschirmposition in Audiowerte für links und rechts umwandelt\u003c/td\u003e\n\u003ctd data-label=\"Was daraus nicht abgeleitet werden darf\"\u003eAbgeschlossene Rekonstruktion des gesamten Spiels\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Beispiel\"\u003eSchlanke Ersatz-App für Razer Synapse\u003c/td\u003e\n\u003ctd data-label=\"In den veröffentlichten Dokumenten belegte Arbeit\"\u003eBei dieser Prüfung keine konkreten Aufzeichnungen zur Überprüfung am Original gefunden\u003c/td\u003e\n\u003ctd data-label=\"Was daraus nicht abgeleitet werden darf\"\u003eAls offiziell überprüftes Ergebnis von REA einstufen\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Beispiel\"\u003eFolieneditor im Zusammenhang mit Claude\u003c/td\u003e\n\u003ctd data-label=\"In den veröffentlichten Dokumenten belegte Arbeit\"\u003eBei dieser Prüfung Untersuchungsobjekt und Umfang der Neuimplementierung nicht geklärt\u003c/td\u003e\n\u003ctd data-label=\"Was daraus nicht abgeleitet werden darf\"\u003eAls Rekonstruktion eines nicht öffentlichen Modells von Claude deuten\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\u003c/div\u003e\n\u003cp\u003eDas Notion-Beispiel verfolgt, wie ein Aufruf von der Oberfläche aus die interne Kommunikation durchläuft. Am Ende führt der Pfad zur Funktion von Electron, die in die Zwischenablage schreibt. Das Beispiel erklärt damit den Verarbeitungsweg einer bestimmten Funktion.\u003c/p\u003e\n\u003cp\u003eIm DX-Ball-Beispiel wurden Funktionseingaben und Berechnungskonstanten anhand der ausführbaren Datei überprüft. Für die betreffende Funktion wurden \u003cstrong\u003e3.205 Vergleichstests\u003c/strong\u003e durchgeführt. Das Kompilierungsergebnis stimmte unter Berücksichtigung der geprüften Relokationsbehandlung in 63 Bytes überein.\u003c/p\u003e\n\u003cp\u003eDiese Aufzeichnungen stützen die Neuimplementierung einer bestimmten Funktion. Laut offizieller Dokumentation wird noch an einer lauffähigen Rekonstruktion des gesamten Spiels gearbeitet. Die Überprüfung einzelner Funktionen ist von der Fertigstellung des gesamten Produkts zu unterscheiden.\u003c/p\u003e\n\u003ch2\u003e\n\u003ca href=\"#was-gew%C3%A4hrleisten-kennzeichnungen-f%C3%BCr-beobachtungen-und-schlussfolgerungen\" class=\"anchor\" id=\"was-gewährleisten-kennzeichnungen-für-beobachtungen-und-schlussfolgerungen\"\u003e\u003c/a\u003eWas gewährleisten Kennzeichnungen für Beobachtungen und Schlussfolgerungen?\u003c/h2\u003e\n\u003cp\u003eBelegkennzeichnungen dienen dazu, die Herkunft einer Schlussfolgerung erkennbar zu machen. Die REA-Dokumentation unterscheidet Beobachtungen, Schlussfolgerungen und ungeprüfte Informationen. Allerdings verwenden nicht alle Werkzeuge dieselben vier Kennzeichnungen.\u003c/p\u003e\n\u003cp\u003eIn den offiziellen Dokumenten erscheinen je nach Analyseart unterschiedliche Status- und Vertrauensangaben. Beim Lesen hilft es, die Bedeutungen wie folgt zu unterscheiden. Die Einteilung in der Tabelle dient der Erläuterung.\u003c/p\u003e\n\u003cdiv class=\"overflow-x-auto\"\u003e\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eKategorie\u003c/th\u003e\n\u003cth\u003eBedeutung\u003c/th\u003e\n\u003cth\u003eWas zu prüfen ist\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Kategorie\"\u003eBeobachtung\u003c/td\u003e\n\u003ctd data-label=\"Bedeutung\"\u003eDirekt anhand einer Datei oder eines Ausführungsergebnisses überprüft\u003c/td\u003e\n\u003ctd data-label=\"Was zu prüfen ist\"\u003eVersion des Untersuchungsobjekts und Fundstelle\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Kategorie\"\u003eAbleitung\u003c/td\u003e\n\u003ctd data-label=\"Bedeutung\"\u003eAus beobachteten Werten und Zusammenhängen berechnetes Ergebnis\u003c/td\u003e\n\u003ctd data-label=\"Was zu prüfen ist\"\u003eRechenweg und Annahmen\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Kategorie\"\u003eVermutung\u003c/td\u003e\n\u003ctd data-label=\"Bedeutung\"\u003eInterpretation, die weiterer Überprüfung bedarf\u003c/td\u003e\n\u003ctd data-label=\"Was zu prüfen ist\"\u003eMöglichkeit anderer Erklärungen\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Kategorie\"\u003eUngeprüft\u003c/td\u003e\n\u003ctd data-label=\"Bedeutung\"\u003eBereich, für den kein Beleg gesichert werden konnte\u003c/td\u003e\n\u003ctd data-label=\"Was zu prüfen ist\"\u003eUntersuchungsumfang und Grund für die fehlgeschlagene Überprüfung\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\u003c/div\u003e\n\u003cp\u003eDie offizielle DISCLAIMER.md nennt die Grenzen der Analyseergebnisse ausdrücklich.\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eDekompilierung, Rekonstruktion, Heuristiken und KI-gestützte Analysen können unvollständig oder falsch sein.\u003c/p\u003e\n\u003cp\u003eQuelle: REA DISCLAIMER.md\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eDas bedeutet, dass Dekompilierung und KI-Analysen unvollständig oder falsch sein können. Auch eine als Beobachtung gekennzeichnete Aussage schließt Werkzeugfehler nicht aus. Der Wert einer Belegkennzeichnung liegt darin, die Stelle für eine erneute Prüfung festzuhalten.\u003c/p\u003e\n\u003ch2\u003e\n\u003ca href=\"#h%C3%A4ufige-fehler\" class=\"anchor\" id=\"häufige-fehler\"\u003e\u003c/a\u003eHäufige Fehler\u003c/h2\u003e\n\u003cp\u003eEin besonders häufiges Missverständnis besteht darin, ein nachvollziehbar erklärtes Ergebnis als vollständig überprüft anzusehen. Gut lesbarer Code kann sich anders verhalten als das Original. Nicht untersuchte Pfade müssen gesondert ausgewiesen werden.\u003c/p\u003e\n\u003cdiv class=\"overflow-x-auto\"\u003e\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eMissverständnis\u003c/th\u003e\n\u003cth\u003eGenauere Einordnung\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Missverständnis\"\u003eDurch Dekompilierung erhält man den ursprünglichen Quellcode zurück\u003c/td\u003e\n\u003ctd data-label=\"Genauere Einordnung\"\u003eOft erhält man eine quellcodeähnliche Darstellung\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Missverständnis\"\u003eIm Code gibt es einen Pfad, also wurde er tatsächlich ausgeführt\u003c/td\u003e\n\u003ctd data-label=\"Genauere Einordnung\"\u003eEin statisch erkennbarer Zusammenhang ist keine Beobachtung zur Laufzeit\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Missverständnis\"\u003eDie Funktion wurde nicht gefunden, also gibt es sie nicht\u003c/td\u003e\n\u003ctd data-label=\"Genauere Einordnung\"\u003eDer Untersuchungsumfang oder die Werkzeugunterstützung kann unzureichend sein\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Missverständnis\"\u003eDas Werkzeug wurde erfolgreich beendet, also ist die Analyse vollständig\u003c/td\u003e\n\u003ctd data-label=\"Genauere Einordnung\"\u003eAuch bei einem erfolgreichen Ergebnis können ungeprüfte Punkte bleiben\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Missverständnis\"\u003eDas Ergebnis hat Belege, also gibt es keine Halluzinationen\u003c/td\u003e\n\u003ctd data-label=\"Genauere Einordnung\"\u003eBelege und Interpretation müssen gemeinsam geprüft werden\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\u003c/div\u003e\n\u003cp\u003eAuch die CLI-Dokumentation von REA unterscheidet zwischen erfolgreichem Abschluss und vollständiger Analyse. Selbst nach Abschluss einer Aufgabe können Belege oder Fragen offenbleiben. Prüfen Sie statt der Abschlussmeldung die Einschränkungen des Ergebnisses.\u003c/p\u003e\n\u003ch2\u003e\n\u003ca href=\"#aufzeichnungen-mit-denen-sich-analyseergebnisse-erneut-pr%C3%BCfen-lassen\" class=\"anchor\" id=\"aufzeichnungen-mit-denen-sich-analyseergebnisse-erneut-prüfen-lassen\"\u003e\u003c/a\u003eAufzeichnungen, mit denen sich Analyseergebnisse erneut prüfen lassen\u003c/h2\u003e\n\u003cp\u003eZu einer reproduzierbaren Analyse gehören auch die Bedingungen, unter denen die Schlussfolgerungen gewonnen wurden. Selbst bei derselben App kann sich der Code durch Updates ändern. Wird nur die Adresse einer Funktion notiert, lässt sich das Untersuchungsobjekt in einer anderen Version schwer wiederfinden.\u003c/p\u003e\n\u003cp\u003eDie Evidence-Aufzeichnungen von REA bewahren Identifikationsdaten des Untersuchungsobjekts und Fundstellen der Belege auf. Snapshots ermöglichen es, Analyseergebnisse wiederzuverwenden, wenn die Bedingungen übereinstimmen. Ein gespeichertes Ergebnis bedeutet nicht, dass auch die neueste Version überprüft wurde.\u003c/p\u003e\n\u003cp\u003eGehen Sie beim Festhalten der Überprüfung wie folgt vor:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eNotieren Sie Version und Hash der untersuchten Datei.\u003c/li\u003e\n\u003cli\u003eHalten Sie die Versionen von REA und der Analyse-Engine fest.\u003c/li\u003e\n\u003cli\u003eVerknüpfen Sie jede Schlussfolgerung mit einer Dateiposition oder Funktionsadresse.\u003c/li\u003e\n\u003cli\u003eBewahren Sie die Ein- und Ausgaben des Originals und des neu implementierten Codes gemeinsam auf.\u003c/li\u003e\n\u003cli\u003eNotieren Sie nicht untersuchte Bedingungen und fehlgeschlagene Tests gesondert.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eEin Hash ist ein Identifikationswert, mit dem sich feststellen lässt, ob Dateien gleich sind. Wenn er festgehalten wird, lässt sich nachvollziehen, auf welche ausgelieferte Version sich eine Beschreibung bezieht. Auch wenn eine KI das Ergebnis später zitiert, kann so sein Geltungsbereich abgegrenzt werden.\u003c/p\u003e\n\u003ch2\u003e\n\u003ca href=\"#lokale-analyse-und-externe-daten%C3%BCbertragung\" class=\"anchor\" id=\"lokale-analyse-und-externe-datenübertragung\"\u003e\u003c/a\u003eLokale Analyse und externe Datenübertragung\u003c/h2\u003e\n\u003cp\u003eEine lokale Analyse schließt nicht aus, dass bei der gesamten Arbeit Daten nach außen übertragen werden. Laut der offiziellen README erfolgt die Analyse des Untersuchungsobjekts durch REA lokal. Die Werkzeugergebnisse erhält der verbundene KI-Agent.\u003c/p\u003e\n\u003cp\u003eWird ein externes Modell verwendet, können Analyseergebnisse an dessen Anbieter übermittelt werden. Welche Datenrichtlinien gelten, hängt vom verbundenen Dienst ab. Prüfen Sie bei Unternehmens-Apps oder nicht öffentlichen Dateien zuerst die Übertragungswege.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUmfang des Codes und der Zeichenketten, die an das Modell übermittelt werden\u003c/li\u003e\n\u003cli\u003eKontodaten und Zugriffstoken in Protokollen\u003c/li\u003e\n\u003cli\u003ePersonenbezogene Daten in Kommunikationsprotokollen\u003c/li\u003e\n\u003cli\u003eSpeicherort und Aufbewahrungsrichtlinien für Analyseergebnisse\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eAuch die statische Untersuchung einer Datei ist von der Ausführung eines Programms zu unterscheiden. Beobachtungen zur Laufzeit können Dateien oder den Zustand eines Kontos beeinflussen. Behandeln Sie nicht vertrauenswürdige Programme in einer isolierten Testumgebung.\u003c/p\u003e\n\u003ch2\u003e\n\u003ca href=\"#sicherheit-und-rechte-was-entwickler-pr%C3%BCfen-sollten\" class=\"anchor\" id=\"sicherheit-und-rechte-was-entwickler-prüfen-sollten\"\u003e\u003c/a\u003eSicherheit und Rechte: Was Entwickler prüfen sollten\u003c/h2\u003e\n\u003cp\u003eIn eine App eingebettete Geheimnisse können durch Reverse Engineering offengelegt werden. OWASP beschreibt das Problem sensibler Informationen in ausgelieferten Paketen. Dieses Risiko bestand schon vor REA.\u003c/p\u003e\n\u003cp\u003eInsbesondere dürfen keine geheimen API-Schlüssel mit Serverberechtigungen in eine App aufgenommen werden. OWASP empfiehlt, statische Geheimnisse auf dem Server zu belassen. Obfuskation kann das Auslesen erschweren, gewährleistet aber keine Geheimhaltung.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePrüfen Sie ausgelieferte Dateien auf enthaltene Passwörter und geheime Schlüssel.\u003c/li\u003e\n\u003cli\u003eBegrenzen Sie Berechtigungen und Gültigkeitsdauer von Authentifizierungstoken.\u003c/li\u003e\n\u003cli\u003eÜberprüfen Sie die Berechtigungen der anfragenden Person auf dem Server.\u003c/li\u003e\n\u003cli\u003eErsetzen Sie offengelegte Zugangsdaten.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWelche Formen des Reverse Engineering zulässig sind, hängt vom Land, von Verträgen und von der konkreten Tätigkeit ab. Dass ein Vorhaben der Kompatibilität dient, bedeutet nicht, dass jede Handlung erlaubt ist. Analyse und Weiterverbreitung von Code oder Bildern müssen getrennt geprüft werden.\u003c/p\u003e\n\u003cp\u003eDie MIT-Lizenz von REA gewährt keine Rechte am untersuchten Objekt. Die Nutzungsgrundsätze des Projekts stehen in der offiziellen DISCLAIMER.md. Prüfen Sie die tatsächlichen Grenzen anhand des anwendbaren Rechts und der Bedingungen der untersuchten Software.\u003c/p\u003e\n\u003ch2\u003e\n\u003ca href=\"#was-ver%C3%A4ndert-sich-f%C3%BCr-die-softwarebranche\" class=\"anchor\" id=\"was-verändert-sich-für-die-softwarebranche\"\u003e\u003c/a\u003eWas verändert sich für die Softwarebranche?\u003c/h2\u003e\n\u003cp\u003eREA zeigt, dass sich der Aufwand für das Verständnis bestehender Funktionen möglicherweise verringern lässt. Diese Einschätzung lässt sich aus den veröffentlichten Analysebeispielen ableiten. Über das Ausmaß einer Kostensenkung in der gesamten Branche liegen keine bestätigten Zahlen vor.\u003c/p\u003e\n\u003cp\u003eSelbst wenn die Implementierung einzelner Funktionen bekannt ist, ist der Betrieb eines Dienstes eine andere Aufgabe. Datenqualität und Störungsbehebung lassen sich nicht allein durch die Analyse einer ausführbaren Datei kopieren. Deshalb müssen die Leichtigkeit der Nachahmung von Funktionen und die Wettbewerbsfähigkeit eines Unternehmens getrennt bewertet werden.\u003c/p\u003e\n\u003cdiv class=\"overflow-x-auto\"\u003e\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eGeschäftsaspekt\u003c/th\u003e\n\u003cth\u003eSchlussfolgerung aus dem Analyseumfang von REA\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Geschäftsaspekt\"\u003eEinzelne Funktion innerhalb einer App\u003c/td\u003e\n\u003ctd data-label=\"Schlussfolgerung aus dem Analyseumfang von REA\"\u003eUntersuchung der Implementierung und Neuimplementierung könnten weniger Aufwand erfordern\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Geschäftsaspekt\"\u003eVerarbeitung ausschließlich auf dem Server\u003c/td\u003e\n\u003ctd data-label=\"Schlussfolgerung aus dem Analyseumfang von REA\"\u003eDurch Client-Analyse allein schwer zu erschließen\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Geschäftsaspekt\"\u003eDaten und Zugriffsrechte\u003c/td\u003e\n\u003ctd data-label=\"Schlussfolgerung aus dem Analyseumfang von REA\"\u003eMüssen unabhängig vom Codeverständnis beschafft und verwaltet werden\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Geschäftsaspekt\"\u003eStabilität und zuverlässiger Betrieb\u003c/td\u003e\n\u003ctd data-label=\"Schlussfolgerung aus dem Analyseumfang von REA\"\u003eTests, Wartung und Störungsbehebung bleiben erforderlich\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Geschäftsaspekt\"\u003eErhaltung bestehender Software\u003c/td\u003e\n\u003ctd data-label=\"Schlussfolgerung aus dem Analyseumfang von REA\"\u003eRekonstruktion ist von kleinen Funktionen aus möglich, wenn Belege festgehalten werden\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\u003c/div\u003e\n\u003cp\u003eDie veröffentlichten REA-Beispiele zeigen eine Veränderung darin, wie Software verstanden werden kann. Sie belegen nicht, dass der Bedarf an Entwicklung verschwindet. Auch nach der Neuimplementierung einer Funktion müssen Kompatibilität und Betriebsqualität überprüft werden.\u003c/p\u003e\n","tags":["KI-Agent","KI Entwicklung","Technologiestrategie","Entwicklungstools"],"faqs":[{"question":"Ist REA ein eigenes KI-Modell?","answer":"REA ist ein Projekt, das KI-Agenten mit Softwareanalysewerkzeugen verbindet. Analyseanfragen und Ergebnisse können über MCP übermittelt werden."},{"question":"Brauche ich für REA unbedingt Ghidra?","answer":"Das hängt vom Analysegegenstand ab. Für die Analyse nativer Programme wird eine Engine wie Ghidra verwendet. Die statische Analyse von JavaScript ist ohne eine solche Engine möglich."},{"question":"Stellt REA den ursprünglichen Quellcode exakt wieder her?","answer":"Eine identische Wiederherstellung des ursprünglichen Quellcodes ist nicht garantiert. Bei der Kompilierung können Kommentare oder Informationen über Namen verloren gehen. Das Ergebnis der Dekompilierung sollte als Darstellung gelesen werden, die zum Verständnis der Funktionsweise dient."},{"question":"Kann ich durch die Analyse einer App auch den Servercode erhalten?","answer":"Servercode, der nicht in der App enthalten ist, lässt sich nicht allein durch die Analyse der App erhalten. Anfragen und Antworten bei der Kommunikation lassen sich beobachten. Diese Aufzeichnungen zeigen jedoch nicht die gesamte interne Implementierung des Servers."},{"question":"Kann man in 8 Minuten und 41 Sekunden auch andere Programme analysieren?","answer":"Für eine solche Verallgemeinerung gibt es keine Grundlage. Auch die Originalaufzeichnung der betreffenden Taschenrechner-Demonstration konnte nicht überprüft werden. Die benötigte Zeit hängt von der Größe des Analysegegenstands, dem Modell und der Analyseumgebung ab."},{"question":"Beseitigt REA KI-Halluzinationen?","answer":"Halluzinationen verschwinden dadurch nicht. Wenn Belege und ungeklärte Punkte kenntlich gemacht werden, lassen sich Schlussfolgerungen leichter erneut prüfen. Werkzeugergebnisse und die Interpretation der KI müssen getrennt überprüft werden."},{"question":"Wurde im Fall von DX-Ball das gesamte Spiel rekonstruiert?","answer":"Die zitierten Zahlen stammen aus der Überprüfung einer bestimmten Funktion zur Audioberechnung. Die offizielle Fallstudie beschreibt 3,205 Vergleichstests. Sie stellt klar, dass die lauffähige Rekonstruktion des gesamten Spiels noch im Gange ist."},{"question":"Werden alle Analysen mit REA offline durchgeführt?","answer":"Die Analyse des Untersuchungsgegenstands mit REA erfolgt lokal. Der Agent, der die Werkzeugergebnisse empfängt, kann ein externes Modell verwenden. Welche Daten insgesamt übertragen werden, muss beim angebundenen Dienst geprüft werden."},{"question":"Darf ich Code, den ich mit REA analysiert habe, in ein kommerzielles Produkt übernehmen?","answer":"Allein der Erhalt von Analyseergebnissen begründet kein Nutzungsrecht. Die Rechte und Lizenzen der untersuchten Software müssen geprüft werden. Prüfen Sie auch das anwendbare Recht und die Nutzungsbedingungen der Analysewerkzeuge."},{"question":"Wenn REA Open Source ist, ist dann auch die Analyse kostenlos?","answer":"Die Lizenz des REA-Codes und die Gesamtkosten der Arbeit sind voneinander zu unterscheiden. Für das angebundene Modell oder kommerzielle Analysewerkzeuge können Kosten anfallen. Die Beträge können Sie den Preisen und Nutzungsbedingungen der jeweiligen Anbieter entnehmen."},{"question":"Was muss ich dokumentieren, wenn ich Analyseergebnisse zitieren möchte?","answer":"Dokumentieren Sie die Version des Analysegegenstands, den Datei-Hash und die Fundstellen der Belege. Auch die Version der Analysewerkzeuge und die Ergebnisse von Vergleichstests sind erforderlich. Wenn Sie ungeprüfte Bedingungen ebenfalls festhalten, lässt sich der Geltungsbereich der Schlussfolgerungen abgrenzen."}],"sources":[{"url":"https://github.com/morluto/rea","title":"README des offiziellen REA-Repositorys: Funktionsweise, unterstützte Ziele, lokale Analyse und Richtlinien für Modelldaten","type":"source"},{"url":"https://ghidra.re/ghidra_docs/GhidraClass/Beginner/Introduction_to_Ghidra_Student_Guide.html","title":"Offizielle Ghidra-Schulungsunterlagen: Introduction to Ghidra","type":"source"},{"url":"https://rea.tools/showcase/notion/","title":"Offizielles REA-Fallbeispiel: Analyse des Electron-Zwischenablagepfads von Notion","type":"source"},{"url":"https://rea.tools/showcase/dx-ball/","title":"Offizielles REA-Fallbeispiel: Neuimplementierung der Berechnung der Klangposition in DX-Ball und vergleichende Validierung","type":"data_point"},{"url":"https://github.com/morluto/rea/blob/main/docs/tool-design.md","title":"REA Tool Design: Unterscheidung zwischen Beobachtung, Ableitung, Schlussfolgerung und Einschränkungen","type":"source"},{"url":"https://github.com/morluto/rea/blob/main/docs/javascript-application-graph.md","title":"REA JavaScript Application Graph: Belege, Status, Vertrauensgrad und Zielposition","type":"source"},{"url":"https://github.com/morluto/rea/blob/main/docs/javascript-application-workflows.md","title":"REA JavaScript Application Workflows: Unterscheidung zwischen statischen Beziehungen und Überprüfung durch Ausführung","type":"source"},{"url":"https://raw.githubusercontent.com/morluto/rea/main/docs/cli.md","title":"REA CLI and Evidence: Aufbewahrung von Aufzeichnungen, Snapshots und Exit-Status","type":"source"},{"url":"https://raw.githubusercontent.com/morluto/rea/main/DISCLAIMER.md","title":"REA Disclaimer: Grenzen der Analyse, Nutzungsberechtigung und Rechte an den Ergebnissen","type":"source"},{"url":"https://mas.owasp.org/MASWE-0004/","title":"OWASP MASWE-0004: Sensible Informationen im App-Paket und Gegenmaßnahmen","type":"source"}],"images":[{"id":1947,"url":"https://injoys.com/rails/active_storage/blobs/proxy/eyJfcmFpbHMiOnsiZGF0YSI6Mjk5NzksInB1ciI6ImJsb2JfaWQifX0=--2b1213d9736d5cae1ff35ed8e5e7db570784612e/ai-ab7036b9.webp","is_representative":true,"generation_method":"ai_photo","license":"ai_generated","mime_type":"image/webp","width":1536,"height":1024,"translations":{"ko":{"alt":"노트북 옆에서 공과 패들 테스트 화면이 뜬 태블릿 두 대를 비교하는 개발자","caption":"특정 함수의 동작이 일치해도 게임 전체가 복원됐다는 뜻은 아닙니다.","description":null},"en":{"alt":"A developer compares ball-and-paddle test screens on two tablets beside a laptop.","caption":"Matching the behavior of one function does not mean the entire game has been restored.","description":null},"ja":{"alt":"ノートパソコンの横で、ボールとパドルのテスト画面を表示した2台のタブレットを見比べる開発者","caption":"特定の関数の動作が一致しても、ゲーム全体を復元できたとは限りません。","description":null},"es":{"alt":"Un desarrollador compara dos tabletas con pruebas de pelota y paleta junto a un portátil.","caption":"Que coincida el comportamiento de una función no significa que se haya reconstruido todo el juego.","description":null},"id":{"alt":"Pengembang membandingkan dua tablet dengan uji bola dan pemukul di samping laptop.","caption":"Kecocokan perilaku satu fungsi tidak berarti seluruh gim telah berhasil dipulihkan.","description":null},"pt":{"alt":"Um desenvolvedor compara duas telas de teste de bola e raquete em tablets ao lado de um notebook.","caption":"A correspondência no comportamento de uma função não significa que o jogo inteiro foi reconstruído.","description":null},"zh-hant":{"alt":"開發者在筆電旁比較兩台平板上的球與擋板測試畫面。","caption":"特定函式的行為一致，不代表整個遊戲已經還原。","description":null},"de":{"alt":"Ein Entwickler vergleicht Ball-und-Schläger-Tests auf zwei Tablets neben einem Laptop.","caption":"Stimmt das Verhalten einer Funktion überein, ist damit nicht das ganze Spiel rekonstruiert.","description":null}}},{"id":1948,"url":"https://injoys.com/rails/active_storage/blobs/proxy/eyJfcmFpbHMiOnsiZGF0YSI6Mjk5ODUsInB1ciI6ImJsb2JfaWQifX0=--1f2adeb39e8cbbe1342eb9e3c6b1d619bea6e20f/ai-ccb48b79.webp","is_representative":false,"generation_method":"ai_semi","license":"ai_generated","mime_type":"image/webp","width":1536,"height":1024,"translations":{"ko":{"alt":"짙은 회색 스웨터를 입은 엔지니어가 소형 컴퓨터에서 파란색 네트워크 케이블을 뽑고 있다.","caption":"신뢰할 수 없는 앱을 분석할 때는 보안 위험을 먼저 통제해야 합니다.","description":null},"en":{"alt":"An engineer in a dark gray sweater disconnects a blue network cable from a compact computer.","caption":"Security risks should be controlled before analyzing an untrusted app.","description":null},"ja":{"alt":"濃い灰色のセーターを着た技術者が、小型コンピューターから青いネットワークケーブルを抜いている。","caption":"信頼できないアプリを分析する前に、セキュリティ上のリスクを抑える必要があります。","description":null},"es":{"alt":"Un ingeniero con un suéter gris oscuro desconecta un cable de red azul de un ordenador compacto.","caption":"Antes de analizar una aplicación no confiable, hay que controlar los riesgos de seguridad.","description":null},"id":{"alt":"Seorang teknisi bersweter abu-abu gelap mencabut kabel jaringan biru dari komputer kecil.","caption":"Risiko keamanan perlu dikendalikan sebelum menganalisis aplikasi yang tidak tepercaya.","description":null},"pt":{"alt":"Um engenheiro de suéter cinza-escuro desconecta um cabo de rede azul de um computador compacto.","caption":"É preciso controlar os riscos de segurança antes de analisar um aplicativo não confiável.","description":null},"zh-hant":{"alt":"身穿深灰色毛衣的工程師正從小型電腦拔出藍色網路線。","caption":"分析不受信任的應用程式前，應先控管安全風險。","description":null},"de":{"alt":"Ein Ingenieur im dunkelgrauen Pullover zieht ein blaues Netzwerkkabel aus einem kompakten Computer.","caption":"Vor der Analyse einer nicht vertrauenswürdigen App sollten Sicherheitsrisiken begrenzt werden.","description":null}}}],"published_at":"2026-10-19T05:55:51+09:00","updated_at":"2026-10-19T05:55:51+09:00","license":"cc_by","translation_status":"reviewed","available_locales":["ko","en","ja","es"],"data_locales":["ko","en","ja","es","id","pt","zh-hant","de"],"url":"https://injoys.com/en/articles/rea-ai-reverse-engineering-performance-and-limits"}