Omvänt all programvara: REA går upp GitHub 58.000 Star, vänder om i en fråga.
GitHub har nyligen satt eld på ett annat projekt: REA. Användaren sa att det var "till 42 000 stjärna", men från och med idag (10 oktober 2026) har antalet stigit. 58 000 stjärna, 11 000 gaffelMer än de säger. Och vad det gör är att du kan säga samma sak: du använder den för att vända någon programvara, gräva den från applikation till original binär.
REA: Vad är problemet?
Den traditionella omvända är "Människan sitter i en diskkompilator i några dagar för att läsa sammanställningen". REA: s idé är att lägga ombud på en anti-cirkulator (ursprunglig kod med Hopper, Ghidra eller IDA) och sedan ansluta till en statisk analytiker för JavaScript och. NET. Angent ansvarar för att ifrågasätta verktyget, samla in slutsatser och lämna tillbaka bevisen.
Dess README exemplifier är hela försäljningsstället: "Know how the search in the Notes application works, show me the bevis, and do a like feature for my project." Vad du fick är en förklaring, en kodplats och en lista över vad du inte vet.
Nyckelpunkten är att analysera all lokal verksamhet, och slutsatserna kommer att åtföljas av bevis och begränsningar - för att inte låta modellen utgöra en förklaring för dig.
ii. Vilka mål att äta
REA har en ganska bred stödbas, som i huvudsak täcker vanliga omvända objekt:
- Native BinaryPseudokoder, sammanställningar, strängar, symboler, samtal och referenser (Hopper/Ghidra/IDA krävs)
- Offline ELF Layoutstycken, sektioner, originalsymbol/reposition, statisk mitigationskandidat
- JavaScript / Electronmodul, import, källkarta, rutt, IPC förhållande till primär plugin (statisk analys utan primär motor)
- WebbplatsSidstruktur, skript, webbobservation och skärmdump
- .NET Program Collectionmetadata, CIL-kommandon, förklaring av originalberoende jämfört med konstruktion (rena statiska)
- Android APKLista uttalande, klass, omvänd översättningsmetod och referens (behöver huvudlös JADX + komplett JDK)
- SolidPartitioner, extraktioner skär med originalanalys (behov Binwalk / Unblob)
- EVM byte, inloggning Linux kraschar, HAR grepp, processbeteendeVänta.
Miljökrav: Node.js 22.x (≥22.19), 24.x (≥24.11) eller 26+, plus npm. Stödda agenter inkluderar Claude Code, Codex, Cursor, Gemini CLI, Grok Build, etc. - alla agenter som stöder lokala MCP-servrar är i grunden funktionella. Installera en order:npx rea-agents setupDet kommer att registrera MCP-servern och skriva den medföljande arbetsflödesbeskrivningen och sedan starta om myror.
Tre offentliga fall: Vad kan det bevisa?
Stjärnnummer representerar värme- och fallresultat. REA-tjänstemannen lade tre utställningar ur "vad kan" och "vad kan inte".
Fall 1: Ljudfältformel för DX-Ball
Fråga: Hur översatte DX-Ball på 1990-talet den horisontella positionen hos tegelstenarna till ett vänster/höger-ljudfält? Räknaren är i 0x406400 Endast en obesvarad ingång sågs __ftol() Ring; saknade referenser i kommando [EBP+8]Jag vet inte. Följ uppringaren 0x411f40 Koordinera formel hittad 20 + 30 × tile_x, och läs tre konstanter från minne 1.5625, 500.0 och initial akustisk skalning 1.0.
Den regel som så småningom återställs är: koordinera dubbel, multiplicerad med 1,5625, minus 500,0, multiplicerad med lagrat akustiskt fält och sedan avskuren. Zooma till 1 med vänsterkanten -500, mitt 0, högerkant 500. Det som verkligen bygger förtroende är autentiseringsmedlen: författaren kör 3205 exempel samtidigt genom den ursprungliga x86-funktionen och den nya C-versionen (som täcker 0-640 fulla positioner, skalning 0/05/1/20-1), och under den fasta VC 4.0-verktygskedjan matchas byte med de ursprungliga 63 byte. Hela projektrapporten upprätthöll 55 C-funktioner, 45380 jämförelser.
Det bevisade inte det.Flytten för att ansluta ljudfältet till baksidan av spelet är fortfarande att slutföras, och den spelbara produkten är ofullständig; arbetet är knutet till en fast Hash på DX-Ball 1.07; sammanställningen av "repositionerade och kontrollerade konstanter som förlitar sig på manuell granskning" är inte helt automatisk.
Fall 2: Notion Hur man kopierar till Clip Board
Hoppa från 90-talet binär till en modern Electron-applikation. Fråga: Notion Desktop 7.6.1 Hur man skriver text och HTML till systemklippbrädan? Vägen i fyra segment: Preload script utsatt för sida clipboard.writeEn wrapper ringer på någon kanal ipcRenderer.invoke; huvudprocess ipcMain.handle Få; elektron genom avsändare clipboard.write Crash. Samma kanalnamn på båda sidor. notion:clipboard:writeJag vet inte.
Två upptäckter är värda att komma ihåg: huvudprocesshanteraren kommer att verifiera vilken sida som skickade begäran, och endast Notion har sina egna webbuppsättningar för att nå klippbordet för att skriva - Detta är den rätta positionen för vilken Electron ska gälla; den andra är att det finns en bit data dolda i kopian, med en kommentar i HTML som pekar på Notion att anpassa mimetyper. text/_notion-blocks-v3-production Lokalt lagrade blockdata. Återgår posten när du klistrar in av ID, och returnerar den ursprungliga texten + HTML när posten löper ut.
Det bevisade inte det.REA 4.1.0 analyserar endast etikettens preload, finner exponerad API och invoke Call, wrapper inser att författaren manuellt läser och ansluter kanal till mottagaren; klippbordets slutsats är från webbresursen och sparar cache den 13 juli 2026, inte från levande skrivbordssessioner.
Fall 3: Playscreen för PC-98 spel Ring
Tillbaka till 16 bit DOS-kod. GERA-programmet stöder 16 bitar av DOS-analys. Författaren återställer de fasta vinklarna och målvinklarna bakom en bombridåring, rekonstruerar dem med C++ och jämför dem med utgången av den historiska kompilatorn. Formar är desamma som DX-Ball: återställa en liten bråkdel av beräkningen, bygga om den och sedan autentisera den med den ursprungliga produkten, istället för att tro på den förklaringen.
fyra. Sätt ihop de tre fallen.
- Det är väldigt smalt.En akustisk formel, en klippbordsbana, en kularidåring, och inget fall säger "bygg hela applikationen".
- Beviset är fäst.Adress, konstant, 3205 tester, Kanalnamn, lagrad sond, kompilator jämförelse.
- Alla antagna till manuella steg.Manuellt granskad ompositionerad, manuellt läsa wrapper, kompilator matchning.
- Mål har fasta versioner.DX-Ball 1.07 med Hash, Notion 7.6.1, original PC-98 binär.
Detta är dagens ärliga gräns:Agent är en snabb, outtröttlig assistent för att spåra individuellt beteende och visar sig vara ett test som du kan köra igen.
V. Vad det innebär för utvecklare
Om du gör agentapplikationer representerar REA ett nytt mönster: istället för att låta modellen "gissa" direkt om hur ett program går, sätter du modellen på ett professionellt omvänd verktyg för att få det att prata om bevis. Dess värde är inte "en nyckel vänder hela programvaran", men det kommer att flytta den omvända tröskeln från "läs sammanställningar" till "fråga + validerar."
Men var nykter två poäng. För det första är lokal analys inte densamma som dataflödet - din agent kommer att exportera verktygen till modellleverantörer och datapolicyn gäller fortfarande. För det andra beror beviskvaliteten på certifieringskedjan och trovärdigheten i ärendet härrör från 3205 jämförelser och byte matchning snarare än muntlig tolkning av modellen.
Hur man gör det?
- Miljö: Node.js 22.x (≥22.19)/24.x (≥24.11)/26+, plus npm
- Första nyckelinstallationen:
npx rea-agents setupVälj din anent, granska och godkänna ändringar och starta om en anent - Global installation:
npm install --global rea-agentsSenare tillgängligrea --help - Statisk JS/Electron-analys:
npx -y rea-agents@latest analyze-javascript-application /abs/path --json - Primär analys: förkonfiguration av leverantör (Hopper/Ghidra/IDA)
- Uppdatering:
rea updateEller spring igen.npx rea-agents@latest setup
Det omvända rör sig från "läs sammanställning" till "fråga + validering" - verktyget har sänkt tröskeln, men bevisen måste fortfarande testas.