Přeskočit na obsah
Tech-Blog Chatujme.cz Chatujme.cz
Programování

REA zpřístupňuje AI agentům nástroje pro reverzní inženýrství

REA připojuje AI agenty k nástrojům, které zkoumají hotové programy bez původních zdrojových kódů. Balíček rea-agents na npm má od 25. října verzi 6.8.0; vedle analýzy aplikací umí ze záznamu webového provozu vytvořit prostředí pro trénování a testování agentů.

· 15 zhlédnutí

REA, zkratka Reverse Engineer Anything, je server pro protokol MCP a nástroj pro příkazovou řádku. Propojuje agenta s programy pro reverzní inženýrství, tedy zkoumání toho, jak hotový software funguje. Míří na vývojáře a výzkumníky, kteří potřebují sledovat konkrétní funkci, porovnat sestavení nebo doložit chování aplikace bez přístupu k jejím zdrojům. Samotné REA není jazykový model.

Ke dni 26. října je aktuální vydání 6.8.0 z 25. října 2026. Stejnou verzi nabízí balíček rea-agents na npm. Projektový kód má licenci MIT; připojené cizí nástroje si ponechávají vlastní licence.

Rozhraní Ghidry s výpisem binárního souboru uprostřed a dekompilovanou funkcí vpravo
Ghidra patří mezi nástroje, které může REA řídit. Ilustrační snímek ukazuje její vlastní rozhraní, nikoli REA. Foto: Philipnelson99, Wikimedia Commons (CC BY-SA 4.0)

Agent zadává dotazy přes MCP

Model Context Protocol (MCP) je rozhraní, přes které agent volá externí nástroje a dostává jejich výsledky. REA vrací nálezy spolu s podklady a omezeními: například kód funkce, její adresu či vazby na další funkce. Agent podle nich volí další dotaz, vysvětlí chování nebo napíše a ověří vlastní implementaci. Stejné postupy lze spouštět z terminálu.

Instalátor registruje MCP server a přidá pracovní pokyny například pro Claude Code, Codex či Cursor. Nejprve ukáže plán změn, vyžádá schválení a zálohuje dosavadní nastavení. Po dokončení se agent restartuje. Pro vydání 6.8.0 vypadá spuštění takto:

npx rea-agents@6.8.0 setup

Balíček požaduje Node.js řady 22 od 22.23.4, řady 24 od 24.22.1 nebo verzi 26.12.1 a novější. Další požadavky závisejí na cíli a operačním systému. Dokumentace větve main se může lišit od vydaného balíčku; rozhoduje verze připojeného serveru a jeho skutečný seznam nástrojů.

Binárky, Electron a spravovaný kód mají různé postupy

Pro podrobnou analýzu nativních binárek REA používá Hopper, Ghidru nebo IDA. Zprostředkuje pseudokód, instrukce procesoru, řetězce, symboly a odkazy mezi funkcemi. Podporované formáty a systémy závisejí na vybraném enginu. Další rozhraní zapojují uživatelem dodané GNU objdump, Rizin, most do Cutteru a GDB. Trvalá ladicí sezení GDB a Rizinu dokumentace omezuje na Linux. Frida dovoluje připojit se k procesu a sledovat jej pomocí uživatelových skriptů.

U JavaScriptu a Electronu REA čte rozbalenou aplikaci či archiv ASAR a sestavuje vztahy modulů, importů, map zdrojového kódu a komunikace mezi procesy. Statická analýza aplikaci nespouští a nepotřebuje nativní dekompilátor. Záznam jejího chování za běhu je samostatná operace.

Sestavení .NET zkoumá bez načtení a spuštění jejich kódu: čte metadata, instrukce mezikódu CIL a deklarovaná volání nativních knihoven. Umí také porovnávat členy mezi sestaveními. Tato sada nástrojů nezahrnuje spouštění spravovaného kódu.

Pro balíčky Android APK používá headless JADX a plný JDK. Získává manifest, třídy, dekompilované metody a odkazy. U JVM dokumentace popisuje i rozpoznání komponent v inventáři APK; nelze z toho vyvozovat obecnou podporu libovolné aplikace pro Javu. Nástroje adb slouží zvlášť k práci se zařízením či emulátorem, jeho balíčky, procesy, logy a přenosy souborů. Připojit lze také samostatně spuštěný JEB s vlastním MCP rozhraním.

Firmware a síťové záznamy vyžadují další nástroje

U firmwaru dokumentace uvádí Binwalk pro hledání oblastí a Unblob pro výslovně zadané rozbalení. Ověřený rozsah této části je Linux x64. Vytažený spustitelný soubor se pak vybírá zvlášť pro další analýzu; REA tím neslibuje emulaci celého zařízení.

WebAssembly kontroluje přes uživatelem dodané WABT 1.0.42. Ověřuje modul, čte sekce, importy a exporty a vytváří textový zápis WAT. Kód WASM při tom nespouští.

Pro živé weby používá prohlížeč rodiny Chrome: sleduje stránku, skripty, síťová volání a na vyžádání pořizuje snímky. Odděleně umí číst uložené záznamy HAR a Fiddler Everywhere SAZ, případně záznamy mitmproxy přes mitmdump na Linuxu. Zaznamenané adresy při této analýze znovu nenavštěvuje. Pro paketové záznamy má postupy s TShark a capinfos.

AgentEnv běží z pozorovaných dat

Verze 6.8.0 přidává sestavování místních prostředí pro agenty ze síťových záznamů či zaznamenaných scénářů v prohlížeči. AgentEnv je samostatný framework, ve kterém lze exportované prostředí spustit. REA dodá nástroje, jejich místní data a základní test; ke spuštění exportu jsou potřeba AgentEnv a Docker.

Agent v prostředí například hledá záznamy nebo vytváří složky bez běhu původní aplikace. Odpovědi vycházejí z uloženého provozu, změny stavu jsou podporované tehdy, když záznam dokládá jejich účinek. Výsledek tedy pokrývá zaznamenané operace. Cíle úloh a kontroly odměn pro posilované učení si uživatel doplňuje ve svém trénovacím systému.

Podklady mohou obsahovat podstrčené pokyny

Dokumentace MCP výslovně označuje řetězce z binárek, pseudokód, stránky, skripty i logy za nedůvěryhodná data. Mohou obsahovat text vydávající se za pokyn agentovi, třeba žádost o stažení pomocného programu. Agent jej nemá vykonat; REA takový obsah označuje v metadatech výsledku a žádá hlásit podobné výzvy jako pokus o podstrčení instrukcí.

Podle bezpečnostních pravidel projektu REA není sandbox, tedy izolované prostředí chránící systém před škodlivým cílem. Externí analyzátor pracuje s právy uživatele a operace za běhu mohou aplikaci spouštět či měnit její stav. Analýza probíhá místně, její výsledky ale dostává agent a dál se na ně vztahují pravidla jeho poskytovatele modelu. Pro IDA, Hopper či JEB je nutné vlastní oprávnění podle podmínek výrobce; licence MIT k REA je nenahrazuje.

O nástroji píše i Javier Cañete na Jacaru. V testu zveřejněném 19. října popsal verzi 6.7.0 v kontejneru arm64: analyzoval Electron aplikaci Hyper a přes Ghidru dekompiloval vlastní program v C. U Hyperu zároveň zaznamenal, že vztahy u části souborů nepokryla dostupná paměť. To je konkrétní ukázka i hranice ověření; výsledky tohoto testu se vztahují ke starší verzi a uvedeným cílům.

Zdroje: repozitář a dokumentace REA, vydání 6.8.0, npm a praktický test Jacaru.

Programování

MCP REA Reverzní inženýrství

← zpět na výpis