Wat is REA? Hoe AI-agenten software reverse-engineeren zonder broncode

Eva Wong is de Technisch Schrijver en en vaste knutselaar bij ZimaSpace. Een levenslange geek met een passie voor homelabs en open-source software, zij is gespecialiseerd in het vertalen van complexe technische concepten naar toegankelijke, praktische handleidingen. Eva gelooft dat zelf-hosting leuk moet zijn, niet intimiderend. Met haar tutorials stelt ze de community in staat om hardware-setup te ontrafelen, van het bouwen van hun eerste NAS tot het beheersen van Docker-containers.

REA, een afkorting van Reverse Engineer Anything, is een open-source toolchain die AI-codeagents koppelt aan softwareanalysetools. De toolchain helpt agents bij het onderzoeken van binaire bestanden, verpakte applicaties, websites en andere softwaredoelen door technisch bewijsmateriaal te verzamelen in plaats van uitsluitend op gissingen of documentatie te vertrouwen.

REA haalt niet op magische wijze de oorspronkelijke broncode van een applicatie terug en garandeert geen volledige kloon. De waarde ervan is praktischer: het biedt een AI-agent gestructureerde manieren om software te inspecteren, gedrag tussen componenten te volgen, hypothesen te testen en uit te leggen wat het beschikbare bewijsmateriaal ondersteunt.

Waarom krijgt REA zoveel aandacht?

AI-codeagents worden steeds beter in het schrijven en aanpassen van code, maar het begrijpen van een onbekende applicatie is een andere uitdaging. Ontwikkelaars kunnen te maken hebben met een gecompileerd binair bestand, een verpakte desktopapplicatie, een legacy-systeem of een website waarvan de implementatie slechts gedeeltelijk zichtbaar is. Ze moeten ontdekken hoe de software zich gedraagt voordat ze onderdelen ervan veilig kunnen wijzigen, integreren of nabouwen.

Bij traditionele reverse-engineering moet je vaak handmatig wisselen tussen disassemblers, debuggers, browsertools, broncodeviewers en notities. REA wil dit onderzoek toegankelijker maken voor AI-agents door analysemogelijkheden via een consistente toolinterface beschikbaar te stellen. De agent kan bewijsmateriaal opvragen, de resultaten interpreteren en beslissen wat hij vervolgens moet inspecteren.

Het belangrijke onderscheid is dat REA een agent een manier biedt om software te onderzoeken. Het neemt de behoefte aan technische validatie, geschikte analyse-engines of menselijk inzicht niet weg.

Wat is REA en hoe werkt het?

REA is een open-source toolchain voor reverse-engineering, ontworpen om met AI-codeagents te werken via het Model Context Protocol (MCP) en opdrachtregelworkflows. Je kunt de GitHub-repository van REA bekijken voor de ondersteunde workflows, tools en actuele installatie-instructies. MCP biedt een standaardmanier waarop compatibele AI-applicaties met externe tools kunnen communiceren.

Bij een typisch onderzoek begint de agent met een vraag, zoals waar een desktopapplicatie klembordbewerkingen afhandelt of hoe een gecompileerd programma een bepaalde waarde berekent. De agent roept de relevante REA-tools aan, onderzoekt het teruggegeven bewijsmateriaal en stelt vervolgvragen die specifieker zijn. Het resultaat is een iteratief onderzoek, niet één prompt die een volledige applicatie moet uitleggen.

  1. Bepaal het doel en de vraag. Identificeer de applicatie, binary, website of het gedrag dat je wilt begrijpen.
  2. Inspecteer beschikbaar bewijs. Gebruik de relevante REA-tools om informatie te verzamelen over codestructuur, interfaces, resources of runtimegedrag.
  3. Volg de implementatie. Traceer relevante functies, API's, gebeurtenissen of communicatie tussen componenten.
  4. Test de uitleg. Vergelijk de interpretatie van de agent met aanvullende toolresultaten, testgevallen of waargenomen gedrag.
  5. Leg de bevindingen vast. Zet het onderzoek om in een technische uitleg, implementatieplan of reproduceerbare test.

De kwaliteit van het resultaat hangt af van het doel, de beschikbare analysetools en de mate waarin de agent zijn conclusies valideert. REA kan het proces systematischer maken, maar kan niet garanderen dat elke hypothese correct is.

Wat kan REA daadwerkelijk analyseren?

REA is bedoeld om verschillende soorten softwareonderzoek te ondersteunen. De beschikbare mogelijkheden hangen af van de indeling van het doel, de geconfigureerde tools en eventuele aanvullende analyse-engine die nodig is.

Doel Wat een onderzoek kan onthullen Belangrijke beperking
Native binaries Functies, strings, aanroeprelaties, disassemblage en geselecteerd programmagedrag Voor diepgaandere analyse kan een compatibele engine nodig zijn, zoals Ghidra, Hopper of IDA.
JavaScript- en Electron-apps Gebundelde code, applicatiestructuur, preloadscripts, IPC-communicatie en API-gebruik Minificatie, obfuscatie en ontbrekende runtimecontext kunnen het moeilijker maken om gedrag te interpreteren.
Websites Pagin structuur, netwerkactiviteit, routes en interacties die relevant zijn voor een specifieke vraag Geauthenticeerd gedrag en server-side implementatie zijn mogelijk niet volledig zichtbaar.
.NET-assemblies Assemblymetadata, typen, methoden en aanwijzingen voor de implementatielogica Obfuscatie en runtimeafhankelijkheden kunnen beperken wat statische inspectie aan het licht brengt.
Android-APK's Pakketmetadata, manifesten, resources en inspecteerbare applicatiecode Native bibliotheken, dynamisch laden en server-side gedrag kunnen afzonderlijk moeten worden onderzocht.
Firmware en andere indelingen Mogelijk nuttig structureel of gedragsmatig bewijs wanneer geschikte tools beschikbaar zijn Ondersteuning en diepgang variëren per indeling en analyseconfiguratie.

Deze breedte is nuttig, omdat echte applicaties zelden binnen één analysecategorie passen. Een Electron-app kan bijvoorbeeld JavaScript, native componenten, netwerkaanvragen en API's van het besturingssysteem omvatten. Om een specifieke functie te begrijpen, kan het nodig zijn bewijs over meerdere lagen heen te volgen.

Hoe gebruikt een AI-agent REA om software te reverse-engineeren?

REA is het nuttigst wanneer het onderzoek begint met een smalle, verifieerbare vraag in plaats van een open verzoek om alles uit te leggen. Een ontwikkelaar kan bijvoorbeeld vragen waar een functie is geïmplementeerd, welk component een bestand schrijft of hoe een bepaalde functie zijn uitvoer produceert.

  1. Begin met concreet gedrag. Bepaal wat je hebt waargenomen en wat je moet begrijpen.
  2. Identificeer de relevante component. Gebruik beschikbare metadata, codestructuur, API-informatie of binaire analyse om het zoekgebied te beperken.
  3. Traceer het gedrag over grenzen heen. Volg aanroepen, gebeurtenissen, gegevenstransformaties en communicatie tussen componenten waar het bewijs dat toelaat.
  4. Controleer het resultaat onafhankelijk. Gebruik aanvullende inspectie, reproduceerbare invoer of runtime-tests om de eerste uitleg ter discussie te stellen.
  5. Formuleer een afgebakende conclusie. Documenteer wat is bevestigd, wat onzeker blijft en waarvoor verdere toegang of tests nodig zouden zijn.

Dit lijkt op een gedisciplineerde debugworkflow. De agent kan repetitieve inspectie versnellen en bevindingen uit verschillende tools met elkaar verbinden, terwijl de ontwikkelaar verantwoordelijk blijft voor het controleren of de uiteindelijke uitleg overeenkomt met het werkelijke gedrag van de software.

Echte REA-voorbeelden: een Electron-functie traceren en native code reconstrueren

De gepubliceerde voorbeelden van REA helpen het verschil te verduidelijken tussen toolondersteund onderzoek en vage, door AI gegenereerde speculatie.

Notion: clipboardgedrag door Electron volgen

In de Notion-casestudy laat REA zien hoe je clipboardgedrag volgt van een API die aan de pagina wordt aangeboden, via Electron's preload- en interprocescommunicatielagen, tot aan de implementatie die naar het klembord schrijft. Het belangrijkste resultaat is de bewijsketen die een voor de gebruiker zichtbare functie verbindt met de code die ervoor verantwoordelijk is.

Dit soort onderzoek is relevant wanneer ontwikkelaars het gedrag van een toepassing op meerdere lagen moeten begrijpen, vooral wanneer de oorspronkelijke implementatie niet rechtstreeks beschikbaar is.

DX-Ball: een oude gamefunctie onderzoeken

De DX-Ball-showcase onderzoekt een berekening voor geluids­panning in een Windows-game uit 1996. Volgens het gepubliceerde voorbeeld werd het gereconstrueerde gedrag gecontroleerd aan de hand van 3.205 gevallen uit de oorspronkelijke x86-functie, waarbij alle 63 bytes van de gecompileerde functie overeenkwamen in de gerapporteerde vergelijking.

De bredere les is dat een resultaat van reverse-engineering overtuigender wordt wanneer het wordt getoetst aan waarneembaar gedrag of bekende uitvoer. Een plausibele verklaring is een beginpunt; reproduceerbare overeenstemming is sterker bewijs.

Waarvoor kunnen ontwikkelaars REA gebruiken?

REA kan nuttig zijn wanneer ontwikkelaars software moeten onderzoeken die ze bezitten of waarvoor ze toestemming hebben om deze te onderzoeken, vooral wanneer de documentatie onvolledig is of de broncode niet beschikbaar is.

  • Onderhoud van verouderde software: Begrijp een component voordat je deze vervangt of uitbreidt.
  • Onderzoek naar interoperabiliteit: Onderzoek hoe een applicatie gegevens beschikbaar stelt of met andere componenten communiceert.
  • Debuggen van verpakte applicaties: Volg gemeld gedrag door code, API's of runtimegrenzen.
  • Softwarebehoud: Bestudeer oudere applicaties en leg gedrag vast dat anders moeilijk te herstellen zou zijn.
  • Onderzoek naar beveiliging en compatibiliteit: Onderzoek geautoriseerde software om de implementatie en afhankelijkheden ervan te begrijpen.
  • Technische documentatie: Zet handmatig onderzoek om in een duidelijker verslag van bevestigd gedrag en onopgeloste vragen.

REA is een hulpmiddel voor analyse, geen systeem voor wettelijke toestemming. Voordat je bedrijfseigen software, firmware of diensten van derden onderzoekt, moet je ervoor zorgen dat het werk in overeenstemming is met toepasselijke wetgeving, licenties, voorwaarden en vereisten voor toestemming.

Wat REA niet automatisch kan doen

Reverse-engineering blijft een proces van gevolgtrekking. REA kan een AI-agent helpen bewijsmateriaal te verzamelen en met elkaar in verband te brengen, maar verschillende beperkingen blijven van belang.

  • Het kan het herstel van de oorspronkelijke broncode niet garanderen. Gecompileerde binaries bevatten doorgaans niet alle namen, opmerkingen, abstracties en de projectstructuur van de oorspronkelijke broncode.
  • Het kan geen complete kloon van een applicatie garanderen. Het reproduceren van zichtbaar gedrag kan nog steeds verborgen randgevallen, backendafhankelijkheden, statusovergangen en platformspecifiek gedrag onopgelost laten.
  • Het kan niet elk doelwit even goed analyseren. Voor verschillende indelingen zijn verschillende tools nodig, en voor sommige onderzoeken is een native analyse-engine of toegang tot de runtime vereist.
  • Het kan een niet-geverifieerde gok niet in een feit veranderen. De verklaring van de agent moet worden gecontroleerd aan de hand van het onderliggende bewijsmateriaal.
  • Het kan toegangsbeperkingen niet automatisch oplossen. Authenticatie, versleuteling, ontbrekende afhankelijkheden en ontoegankelijk gedrag aan de serverzijde kunnen het onderzoek beperken.

Een nuttig REA-rapport moet bevestigde observaties onderscheiden van waarschijnlijke verklaringen en onbeantwoorde vragen. Dat maakt het eenvoudiger om te bepalen of de volgende stap meer analyse, een test of een handmatige controle is.

Draait REA lokaal en is de workflow privé?

De analysetools van REA kunnen op je eigen machine of in je eigen omgeving draaien, afhankelijk van de geselecteerde tools en configuratie. Lokale uitvoering van tools betekent echter niet automatisch dat de volledige AI-workflow lokaal blijft. Als een agent een cloudgehost model gebruikt, kunnen sommige prompts, toolresultaten, codefragmenten of andere context naar de modelprovider worden verzonden.

Controleer voordat je gevoelige software analyseert welke informatie aan de agent wordt doorgegeven, welke tools toegang hebben tot lokale bestanden en of resultaten naar externe services worden verzonden. Een nuttig startpunt is deze handleiding over cloudtools die toegang hebben tot lokale bestanden, waarin wordt uitgelegd waarom een lokaal gehoste tool en een private end-to-end-workflow niet hetzelfde zijn.

Voor propriëtaire code, inloggegevens, klantgegevens of beveiligingsgevoelige systemen kun je overwegen een goedgekeurde modelprovider te gebruiken, de bestandssysteemrechten van de agent te beperken, gevoelige workspaces te scheiden en te controleren welke gegevens de machine verlaten. Lokale uitvoering vermindert bepaalde blootstellingsrisico's, maar maakt het nog steeds noodzakelijk om de volledige gegevensstroom te controleren.

Voor meer achtergrond legt de handleiding over een private AI-assistent op een NAS uit hoe lokale gegevensopslag, ophalen van gegevens en modeltoegang kunnen worden ingericht, evenals de grenzen die voor privacy nog steeds belangrijk zijn.

Waar past een thuisserver in een AI-workflow voor reverse-engineering?

Een thuisserver is optioneel, maar kan een permanente plek bieden voor compatibele agentservices, repositories, logboeken en analyseartefacten. Dat is handig als je een speciale omgeving voor experimenten wilt, in plaats van al je tools, afhankelijkheden en uitvoer te vermengen met je dagelijkse workstation.

Een compacte x86-thuisserver zoals ZimaBoard 2 is een mogelijke hardwarebasis voor lichte orkestratie en altijd actieve ondersteunende services. Het Intel N150-platform en de geheugenopties van 8 GB of 16 GB kunnen geschikt zijn voor bepaalde self-hosted workloads, maar mogen niet worden opgevat als garantie dat elke native analyse-engine of elk lokaal model probleemloos draait. Zwaardere reverse-engineering kan nog steeds een krachtiger workstation vereisen, en REA heeft ZimaBoard 2 niet nodig om te functioneren.

Splits bij het plannen van de installatie de rollen op: de machine waarop de agent en analysetools draaien, het systeem waarop projectbestanden en resultaten staan, en een eventuele aparte computer die voor veeleisende berekeningen wordt gebruikt. Deze scheiding tussen compute en opslag kan lokale AI-projecten eenvoudiger te organiseren en te onderhouden maken, zonder ervan uit te gaan dat elke taak op één apparaat moet worden uitgevoerd.

Het is ook de moeite waard om de daadwerkelijke rechten en routines van de agent te plannen. Een permanente omgeving mag niet automatisch onbeperkte toegang krijgen tot elk bestand, elke inloggegeven of elke netwerkdienst. De principes achter workflows met AI-agents voor thuis gelden hier ook: beperk risicovolle acties, leg vast wat er gebeurt en vereis controle voordat destructieve of gevoelige wijzigingen worden aangebracht.

Aan de slag met REA

Begin met de officiële repository en controleer de huidige vereisten voor je besturingssysteem en doelsoftware. In de gepubliceerde installatie-instructies staan ondersteunde Node.js-versies vermeld, waaronder Node.js 22.x vanaf 22.19, 24.x vanaf 24.11 en 26 en hoger. Vereisten kunnen veranderen, dus controleer vóór de installatie de huidige README.

  1. Bekijk de officiële installatiehandleiding en installeer de vereisten voor jouw omgeving.
  2. Volg de gedocumenteerde instelprocedure; in het project wordt momenteel npx rea-agents setup als instelopdracht.
  3. Koppel een compatibele AI-codeeragent en controleer of de verwachte tools beschikbaar zijn.
  4. Kies een doel dat je bezit of waarvoor je toestemming hebt om het te analyseren, en begin met één specifiek gedrag of één specifieke functie.
  5. Controleer de bevindingen van de agent aan de hand van de uitvoer van de tool, testresultaten of ander onafhankelijk bewijs.

Als je twijfelt tussen lokale uitvoering, cloud-API's of een hybride opzet, houd dan rekening met de hoeveelheid gevoelige gegevens, de benodigde tools en de rekenvereisten van het doel. Dit overzicht van de afwegingen tussen lokale en cloud-AI biedt een breder kader om die beslissing te nemen.

Wat REA zegt over de toekomst van AI-codeagents

REA illustreert een bredere verschuiving in AI-ontwikkelingstools: agents gaan verder dan alleen code genereren en gebruiken gespecialiseerde tools om systemen te onderzoeken die ze nog niet begrijpen. Dit is vooral waardevol wanneer de relevante informatie verborgen zit in een binary, een onbekende applicatie, een netwerkinteractie of een legacy-implementatie.

De betrouwbaarste workflow is nog steeds gebaseerd op bewijs. De agent formuleert een vraag, tools leveren observaties, de agent vormt een verklaring en tests of verder onderzoek toetsen die verklaring. Betere toegang tot tools kan dit proces sneller en herhaalbaarder maken, maar neemt de behoefte aan expertise of verificatie niet weg.

Voor ontwikkelaars ligt de praktische mogelijkheid niet in de verwachting dat een AI-agent elke applicatie perfect kan reverse-engineeren. Het gaat erom de handmatige inspanning die nodig is om onbekende software te onderzoeken te verminderen, terwijl conclusies traceerbaar blijven, de gegevensstroom begrijpelijk is en beperkingen expliciet worden gemaakt.

Veelgestelde vragen

Waar staat REA voor?

REA staat voor Reverse Engineer Anything. Het is een open-source toolchain die AI-codeagents koppelt aan softwareanalysetools om ondersteunde doelen te onderzoeken.

Herstelt REA de oorspronkelijke broncode?

Nee. Het kan helpen bij het onderzoeken van de codestructuur en het gedrag, maar gecompileerde software bevat doorgaans niet alle informatie die nodig is om de oorspronkelijke broncode, opmerkingen, namen en projectstructuur te herstellen.

Werkt REA met AI-codeagents?

REA is ontworpen om te integreren met compatibele AI-codeagents via gedocumenteerde toolinterfaces, waaronder op MCP gebaseerde workflows. Raadpleeg de officiële repository voor de actuele compatibiliteits- en installatiegegevens.

Vereist REA Ghidra of IDA?

Niet voor elke taak is een native reverse-engineeringengine nodig. Sommige doelen, zoals inspecteerbare JavaScript-code, kunnen met andere tools worden onderzocht. Voor diepgaandere analyse van native binaries kan een compatibele engine zoals Ghidra, Hopper of IDA nodig zijn.

Is REA privé omdat het lokaal draait?

Niet per se. Lokale analyse kan prompts of toolresultaten nog steeds doorgeven aan een model dat in de cloud wordt gehost. Controleer de modelprovider van de agent, de toolmachtigingen en de gegevensstroom voordat je REA gebruikt met gevoelige software.

Heb ik een homeserver of ZimaBoard 2 nodig om REA te gebruiken?

Nee. REA kan worden ingesteld in een compatibele ontwikkelomgeving zonder speciale homeserver. Een kleine server zoals ZimaBoard 2 kan nuttig zijn voor bepaalde ondersteunende services die altijd actief zijn, maar voor veeleisende analysewerkzaamheden kan krachtigere hardware nodig zijn.

Tech & AI HUB

Meer om te lezen

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.