Reverse all programvare: REA går opp GitHub 58 000 Star, angent blir omvendt til et spørsmål.
GitHub har nylig satt i brann til et annet prosjekt: REA. Brukeren sa det var til 42 000 stjerner, men fra i dag (10. oktober 2026) har tallet steget. 58.000 stjerner, 11 000 Fork- Mer enn de sier. Og det det gjør er at du kan si det samme: du bruker det til å snu programvare, grave det fra applikasjon til original binær.
I. REA: Hva er egentlig problemet?
Den tradisjonelle reversen er \"Man sitter i en motkompilator i noen dager for å lese samlingen\". REAs idé er å sette angst på en anti-cirkulator (opprinnelig kode med Hopper, Ghidra eller IDA) og deretter koble til en statisk analysator for JavaScript og. NET. Angent er ansvarlig for å avhøre verktøyet, samle konklusjoner og gi tilbake bevis.
Dens README exemplifier er hele salgspunktet: " Vet hvordan søk i Notes-programmet fungerer, vis meg bevisene og gjør en lignende funksjon for prosjektet mitt." Det du har er en forklaring, en kodeplassering og en liste over det du ikke vet.
Nøkkelpunktet er å analysere alle lokale operasjoner, og konklusjonene vil bli ledsaget av bevis og begrensninger - ikke tillate modellen å utgjøre en forklaring for deg.
Ii. Hvilket mål å spise
REA har en ganske bred støttebase som i hovedsak dekker vanlige omvendte objekter:
- Innfødt binær: pseudokoder, samlinger, strenger, symboler, samtaler og referanser (Hopper/Ghidra/IDA kreves)
- Offline ELF layout: avsnitt, avsnitt, opprinnelig symbol/reposisjon, statisk reduksjonskandidat
- JavaScript / Electron: modul, import, kildekart, rute, IPC forhold til primær plugin (statisk analyse uten primærmotor)
- NettstedSidestruktur, skript, webobservasjon og skjermbilde
- .NET Program Samling: metadata, CIL-kommandoer, erklæring om opprinnelig avhengighet versus konstruksjon (ren statisk)
- Android APKListeuttrykk, klasse, reverse oversettelsesmetode og referanse (trenger hodeløs JADX + komplett JDK)
- Solid: partisjoner, utvinninger krysser med original analyse (trenger Binwalk / Unblob)
- EVM bytes, innlogging Linux krasjer, HAR griper, prosessadferdVent.
Miljøkrav: Node.js 22.x (≥22.19), 24.x (≥24.11) eller 26+, pluss npm. Støttede agenter inkluderer Claude Code, Codex, markør, Gemini CLI, Grok Build etc. - alle agenter som støtter lokale MCP-servere er i utgangspunktet funksjonelle. Installer en rekkefølge:npx rea-agents setup, det vil registrere MCP server og skrive den medfølgende arbeidsflyt beskrivelsen, og deretter starte maur.
Tre offentlige saker: Hva kan det bevise?
Stjernetall representerer varme og tilfelleresultater. Rea-offisielt la tre shows ut av \"hva kan\" og \"hva kan ikke\".
Case 1: Lyd felt formel for DX-Ball
Spørsmål: Hvordan oversatte DX-Ball på 1990-tallet den horisontale posisjonen til mursteinene til et venstre/høyre lydfelt? Diskkompilatoren er i 0x406400 Bare én uobservert inngang ble sett __ftol() Ring; manglende referanser i kommando [EBP+8]Jeg vet ikke. Følg oppringeren 0x411f40 Koordinatformel funnet 20 + 30 × tile_x, og lese tre konstanter fra minne 1.5625, 500.0 og initial akustisk skalering 1.0.
Reglene som til slutt gjenopprettes er: koordinat dobbel, multiplisert med 1.5625, minus 500.0, multiplisert med lagret akustisk felt og deretter kuttet av. Zoom til 1 med venstre kant -500, sentrum 0, høyre kant 500. Det som virkelig bygger tillit er det midler til autentisering: forfatteren kjører 3205 eksempler samtidig gjennom den opprinnelige x86-funksjonen og den nye C-versjonen (dekker 0-640 fulle posisjoner, skalering 0/05/1/20-1), og under den faste VC 4.0 verktøykjede er bytene matchet med de opprinnelige 63 bytene. Hele prosjektrapporten bibeholdt 55 C-funksjoner, 45380 sammenligninger.
Det beviste det ikke.Flyttet for å koble lydfeltet til den bakre enden av spillet er fortsatt å bli fullført, og det spillbare produktet er ufullstendig; arbeidet er bundet til en fast hash på DX-Ball 1.07; sammensetningen av \"repositionerte og kontrollerte konstanter avhengig av manuell gjennomgang\" er ikke helt automatisk.
Sak 2: Notion Hvordan kopiere til Clip Board
Hopp fra 90-tallet binær til en moderne Electron program. Spørsmål: Notion Desktop 7.6.1 Hvordan skrive tekst og HTML til systemutklippet? Sti i fire segmenter: forhåndslast skript eksponert på siden clipboard.writeEn wrapper som ringer på noen kanal ipcRenderer.invokeHovedprosess ipcMain.handle Motta; elektron ved avsender clipboard.write Krasj. Det samme kanalnavnet på begge sider. notion:clipboard:writeJeg vet ikke.
To oppdagelser er verdt å huske: Hovedprosesshåndteringen vil bekrefte hvilken side som sendte forespørselen, og bare Notion har sine egne websett for å nå utklippstavlen for å skrive -- Dette er den riktige posisjonen som Electron skal bruke; det andre er at det er et stykke data skjult i kopien, med en kommentar i HTML som peker på Notion for å tilpasse mimetyper text/_notion-blocks-v3-production Lokalt lagret blokkdata. Tilbakestiller oppføringen ved liming av ID, og returnerer den opprinnelige teksten + HTML når oppføringen utløper.
Det beviste det ikke.: REA 4.1.0 analyserer bare etiketten forhåndslast, finner eksponert API og invoke Ring, wrapper innser at forfatteren manuelt leser og kobler Kanal til mottakeren; utklippstavlens konklusjon er fra webressursen og sparer cache av 13. juli 2026, ikke fra live skrivebordsøkter.
Case 3: Spilleskjerm for PC-98 spill Ring
Tilbake til 16 bit DOS-kode. GERA-programmet støtter 16 biter av DOS-analyse. Forfatteren gjenoppretter de faste vinkler og siktvinkler bak en bombegardinring, rekonstruerer dem med C++ og sammenligner dem med utgangen fra den historiske kompilatoren. Former er de samme som DX-Ball: gjenopprette en liten brøkdel av beregningen, gjenoppbygge den og deretter autentisere den med det opprinnelige produktet, i stedet for å tro på den forklaringen.
Fire. Sett sammen de tre sakene.
- Den er veldig smal.: en akustisk formel, en utklippsbane, en kulegardinring, og ingen sak sier \"rebuild hele søknaden\".
- Bevisene er knyttet til.Adresse, konstant, 3205 tester, Kanalnavn, lagret sonde, kompilator sammenligning.
- Alle inngår i manuelle trinn.Manuelt representert representert, manuelt lese wrapper, kompilator samsvarende.
- Målene har faste versjoner.DX-Ball 1.07 med Hash, Notion 7.6.1, originale PC-98 binær.
Dette er dagens ærlige grense:Agent er en rask, utrettelig assistent for å spore individuell oppførsel, og viser seg å være en test som du kan kjøre igjen.
V. Hva det betyr for utviklere
Hvis du gjør alvorlige applikasjoner, representerer REA et nytt mønster: i stedet for å la modellen "guess" direkte om hvordan et program kjører, legger du modellen på et profesjonelt omvendt verktøy for å få det til å snakke på bevis. Dens verdi er ikke " en nøkkel reverserer hele programvaren", men den kommer til å bevege den omvendte terskelen fra "lesesamlinger" til "spørsel + validerer."
Vær edru to poeng. For det første er lokal analyse ikke den samme som datastrøm - din angent vil eksportere verktøyene til modellleverandører, og datapolitikken gjelder fortsatt. For det andre var kvaliteten på bevisene avhengig av sertifiseringskjeden, og troverdigheten i saken var avledet fra 3205 sammenligninger og byte matching i stedet for den muntlige tolkningen av modellen.
Hvordan gjøre det?
- Miljø: Node.js 22.x (≥22.19)/ 24.x (≥24.11)/ 26+, pluss npm
- Første nøkkelinstallasjon:
npx rea-agents setupVelg din anent, se gjennom og godkjenne endringer og start en anent på nytt - Global installasjon:
npm install --global rea-agentssenere tilgjengeligrea --help - Statisk JS/Electron analyse:
npx -y rea-agents@latest analyze-javascript-application /abs/path --json - Primær analyse: forkonfigurasjon av leverandøren (Hopper/Ghidra/IDA)
- Oppdatering:
rea updateEller løp igjen.npx rea-agents@latest setup
Det omvendte beveger seg frareadlesesamling" til "spørring + validering" - verktøyet har senket terskelen, men bevisene må fortsatt testes.