REA — Reverse Engineering voor je Coding Agent

Installatie van REA

Je kunt REA installeren en verbinden met je coding agent via de terminal met het volgende commando:

npx rea-agents@latest setup

Kopieer alternatief de volgende instructie naar je coding agent:

"Installeer REA en verbind het met deze coding agent via npx rea-agents@latest setup. Toon me het installatieplan ter goedkeuring en verifieer vervolgens de installatie."

Keur het installatieplan goed en start je agent opnieuw op.

Wat is Reverse Engineering?

Reverse engineering is het proces van het achterhalen van de werking van software door het programma zelf te bestuderen. Het doel is om een specifieke functie goed genoeg te begrijpen om deze te kunnen:

  • Uitleggen;
  • Wijzigen;
  • Herbouwen.

Casus: De Rekenmachine

Stel de vraag: Waarom geeft de Rekenmachine 220 als resultaat bij 200 + 10%?

Aanpak zonder REA (Handmatige inspectie)

Bij een handmatige inspectie moet een expert de volgende stappen doorlopen:

  1. Branches decoderen: Het analyseren van instructies om te bepalen welke operator wordt gebruikt.
  • Voorbeeld assembly x64:

``assembly 0x180124945: MOV EAX, dword ptr [R13 + 0x18] 0x180124949: CMP EAX, 0x5c 0x18012494c: JZ 0x180124aba 0x180124952: CMP EAX, 0x5b 0x180124955: JZ 0x180124aba 0x18012495b: MOV EDX, 0x64 ``

  • Analyse: De waarden 0x5b (Delen ÷) en 0x5c (Vermenigvuldigen ×) worden gecontroleerd.
  1. Calls traceren: Onderzoeken wat de aanroepen doen en welke waarden worden doorgegeven.
  2. De regel herstellen: De uiteindelijke berekening reconstrueren. In dit geval: 200 × 10 / 100 = 20, waarna dit wordt opgeteld bij de 200.

Aanpak met REA

Met REA kun je je agent een vraag stellen in gewone taal.

Voorbeeld prompt:

"Gebruik REA om de Windows Rekenmachine te inspecteren. Waarom geeft 200 + 10% het resultaat 220?"

Resultaat: REA levert de instructies van de handler, gedecompileerde code en calls. De agent legt vervolgens uit welke branch van toepassing is, wat er wordt berekend en hoe dit herbouwd kan worden.

  • Bevinding: Na de + knop berekent de % knop een percentage van het eerste getal.
  • Berekening: 10% van 200 = 20 → 200 + 20 = 220.

---

Praktijkvoorbeelden

Voorbeeld 1: Het Chrome Dinosaur Game

Doel: Het spel herbouwen met een aanpasbare snelheid.

Om de versnelling te reproduceren, is het nodig om de regel in het draaiende spel te vinden: de startsnelheid, de mate van toename en het stoppunt.

Voorbeeld prompt:

"Gebruik REA om dit dinosaur-spel te inspecteren. Waarom wordt het spel sneller? Toon de snelheidsregel en bouw vervolgens een kleine versie met een aanpasbare snelheid."

Technische bevindingen: REA analyseert het script van de pagina (index.js). De relevante code voor de snelheid is:

if (this.currentSpeed < this.config.MAX_SPEED) {
  this.currentSpeed += this.config.ACCELERATION;
}
  • Snelheidsregel: Start bij 6. Voeg 0.001 toe bij elke update zonder botsing, tot een maximumsnelheid van 13.

Proces:

  1. REA: Leest het script van het actieve spel en stuurt de code en instellingen naar de agent.
  2. Agent: Herbouwt de regel en voegt een controle-element toe (zoals een slider voor snelheid).
  3. Gebruiker: Kan de snelheid aanpassen en het spel spelen.

---

Voorbeeld 2: Windows Rekenmachine (%-knop)

Doel: De functionaliteit van de procentknop herbouwen.

De procentknop hanteert verschillende regels afhankelijk van of er een + of een × is gebruikt.

Voorbeeld prompt:

"Gebruik REA om de procentknop van de Windows Rekenmachine te inspecteren. Herstel de regels voor zowel + als ×, en bouw een kleine rekenmachine die beide correct gebruikt."

Herstelde logica (samenvatting):

if (operation == multiply || operation == divide) {
  percent = current / 100;
} else {
  percent = current * previous / 100;
}
  • Bij +: Neem 10% van het eerste getal (bijv. 10% van 200 = 20 → 200 + 20 = 220).
  • Bij ×: Zet 10% om in 0,1 (bijv. 200 × 0,1 = 20).

Technische analyse: REA leest calc.exe en de bijbehorende bibliotheken. De agent koppelt de gevonden operator-ID's aan de publieke broncode van Microsoft:

  • #define IDC_MUL 92 (0x5c)
  • #define IDC_DIV 91 (0x5b)
  • #define IDC_PERCENT 118 (0x76)
  • Waarde 0x64 = 100.

---

Verdere mogelijkheden

Je kunt REA gebruiken voor diverse complexe taken door je agent simpelweg te vertellen wat je wilt begrijpen of bouwen.

Voorbeelden van prompts:

  • Website klonen: "Gebruik REA om https://rea.tools/ te inspecteren. Clone deze website voor mij."
  • Game reconstructie: "Gebruik REA om dit spel te reconstrueren vanuit het executable-bestand. Herstel de gameplay-logica in C en test deze tegen het origineel."

Ondersteunde analysetypen

TypeFocus
Native BinariesInspectie van functies, strings, referenties en call-relaties in executables en libraries.
JavaScript & ElectronMapping van modules, routes, IPC en native dependencies vanuit een applicatiemap of ASAR-archief.
Browser & RuntimeVastleggen van browser- of procesactiviteit en het vergelijken van resultaten tussen verschillende runs.