Napište do kalkulačky ve Windows 200 + 10 % a dostanete 220. Ne 200,1. Pravidlo, podle kterého se to děje, v nápovědě nenajdete. Sedí ve strojovém kódu knihovny a rozhoduje o něm porovnání se dvěma konstantami, 0x5b a 0x5c. Autoři nástroje REA ho z nainstalované aplikace vytáhli jediným promptem: po sčítání bere procento z prvního čísla (10 % z 200 je 20), po násobení ho jen převede na 0,1.
REA, celým jménem Reverse Engineer Anything, je open-source nástroj, který AI agentovi dává do ruky disassemblery, dekompilátory a sledování běžícího programu. Agent klade otázky, REA mu vrací surový materiál – pseudokód, instrukce, řetězce, symboly a odkazy mezi funkcemi – a ke každému závěru přidává důkaz i výčet toho, co zůstalo neznámé. Projekt vychází pod licencí MIT, od první veřejné verze 0.2.0 z 12. července 2026 se za necelé tři měsíce dostal k verzi 4.1.0 a k 10. říjnu má na GitHubu přes 56 tisíc hvězd a 11 tisíc forků.
Tohle tempo je zároveň první varování: co platí dnes, za týden platit nemusí.
Reverse engineering bez hodin nad assemblerem
Reverse engineering znamená zjistit, jak software funguje, zkoumáním programu samotného, bez přístupu ke zdrojovému kódu. Disassembler převede strojový kód na čitelné instrukce procesoru, dekompilátor z nich poskládá pseudokód podobný jazyku C. Výsledek je pořád těžké čtení: funkce se jmenují podle adres, proměnné nemají jména a celé odpoledne může padnout na to, abyste zjistili, která ze dvou větví se stará o dělení. Ukázka na webu rea.tools to předvádí poctivě – nejdřív výpis instrukcí, potom tři kroky, kterými by stejný problém řešil člověk.
REA tuhle čtecí práci předává agentovi. Běží jako lokální MCP server (Model Context Protocol, standard, přes který agenti volají externí nástroje), takže ho Claude Code, Codex, Cursor, Gemini CLI, Grok Build nebo jakýkoli jiný klient s podporou lokálních MCP serverů volá stejně jako třeba přístup k souborům. Stejné postupy jsou dostupné i z terminálu přes příkaz rea, bez agenta.
Na nativní binárky REA vlastní dekompilátor nemá. Používá takzvané providery: komerční Hopper Disassembler, bezplatnou Ghidru od NSA nebo IDA, kterou přidala verze 4.1 v režimu jen pro čtení. Hopper si REA spouští sám a komunikuje s ním přes most, který běží uvnitř Hopperu a ověřuje se náhodným tokenem přes unixový socket dostupný jen aktuálnímu uživateli. Ghidra běží bez grafického rozhraní v dočasném izolovaném projektu, který se po skončení relace smaže; uživatelovy vlastní projekty REA neotevírá. Statická analýza JavaScriptu a .NET žádný z těchto motorů nepotřebuje.
Nejsympatičtější je na celém projektu důraz na důkazy. Jazykový model, který „dekompiluje“ z hlavy, umí s jistotou popsat funkci, jež neexistuje. Zásady v souboru AGENTS.md proto po nástrojích chtějí, aby ve výsledcích oddělovaly pozorování a odvození od neznámých. Agent tak dostane konkrétní adresu a instrukci, a když něco neví, má to černé na bílém.
Co všechno REA otevře
Rozsah cílů za tři měsíce narostl výrazně. Podle README k verzi 4.1.0:
- nativní binárky (Mach-O, ELF, PE) – pseudokód, assembler, řetězce, symboly, volání; přes Hopper, Ghidru nebo IDA,
- JavaScript a Electron – moduly, importy, source mapy, IPC mezi procesy, nativní doplňky; ze složky aplikace nebo archivu ASAR,
- webové stránky – struktura, skripty, síťový provoz a snímky obrazovky přes prohlížeč z rodiny Chrome,
- uložené síťové záznamy ve formátu HAR,
- .NET assembly – metadata a instrukce CIL, čistě staticky,
- Android APK – manifest, třídy a dekompilované metody přes JADX (novinka verze 4.1),
- firmware – rozbalení přes Binwalk a Unblob na Linuxu (také 4.1),
- bajtkód EVM chytrých kontraktů, záznamy pádů linuxových procesů a chování procesů v terminálu na Linuxu a macOS.
Statická analýza čte jen dodané soubory a aplikaci nespouští. Zachytávání za běhu naopak cíl spustí, nebo s ním interaguje, a to s oprávněními uživatele, pod kterým REA běží.
Instalace: jeden příkaz a pak hodně podmínek
Základ potřebuje Node.js 22.19 a novější, 24.11 a novější, nebo 26+, plus npm. Pak stačí:
npx rea-agents@latest setup
Průvodce najde nainstalované agenty, vypíše plán změn a teprve po schválení zapíše konfiguraci. Existující nastavení zálohuje, zápis dělá atomicky a podle dokumentace nikdy nevolá sudo. Kdo chce samostatný příkaz rea, nainstaluje balík globálně (npm install --global rea-agents). Jednorázovou analýzu Electron aplikace jde spustit i bez instalace:
npx -y rea-agents@latest analyze-javascript-application /absolutni/cesta/k/aplikaci --json
Složitější je to s nativní analýzou. Hopper je placený software s omezenou bezplatnou demo verzí; REA ho na macOS umí stáhnout z oficiálního zdroje, ověřit kontrolní součet a nainstalovat do ~/Applications, na podporovaných distribucích Linuxu použije oficiální balík. Ghidru si musíte obstarat sami a nároky jsou přísné: Linux x64, přesně verze 12.1.4 a plné JDK 21. Mac jako hostitel pro Ghidru podporovaný není, Windows jen experimentálně a jen pro čtení. Server ai-tldr.dev k tomu uvádí podporu macOS 12+, Ubuntu 24.04+, Fedory 41+ a 64bitového Archu.
A pak aktualizace. README samo píše, že se REA rychle mění a nové verze často opravují chyby. Jen mezi 3. a 6. říjnem vyšlo pět verzí a jedna z nich, 4.0.0, byla zpětně nekompatibilní: odstranila mimo jiné nástroje pro přehrávání běhu a příkazy pro konfiguraci oprávnění. Setup naštěstí připíná registraci MCP serveru k přesné verzi, která setup provedla. V týmu bychom toho využili a aktualizovali vědomě, ne automaticky.
Tři případové studie od autorů
Projekt má na webu několik ukázek a všechny jsou poctivě zdokumentované. Jen pozor: pocházejí od autorů projektu a lidí kolem něj, nezávislé srovnání zatím chybí.
Dinosaurus z Chromu. REA přečetl skript běžící v prohlížeči a agent z něj vytáhl pravidlo zrychlování: start na rychlosti 6, při každé aktualizaci bez kolize přičíst 0,001, strop 13. Autoři to ověřili voláním původní funkce – po 4 000 aktualizacích byla rychlost 10,0, po 10 000 pak 13,0. Pravidlo pak použili v nové minihře s posuvníkem rychlosti.
DX-Ball. Agent prošel volání zvukové funkce až k pomocné funkci, která převádí pozici na stereo panorama, a z neúplného pseudokódu sestavil kód v C. Rekonstrukce podle autorů projde 3 205 testovacími případy proti původnímu x86 kódu a po kompilaci reprodukuje všech 63 bajtů funkce.
Notion. Ukázka sleduje schránku v Electron aplikaci od API v rendereru přes preload a IPC až do hlavního procesu a rozebírá formát, ve kterém Notion ukládá formátovaný obsah.
Pro úplnost: sami jsme REA zatím na vlastní binárce nespouštěli. Popis vychází z dokumentace, changelogu a zveřejněných ukázek.
„Lokálně“ neznamená „nikam“
FAQ projektu na otázku, jestli REA nahrává aplikaci někam do cloudu, odpovídá, že analýza probíhá lokálně. To platí. Hned za tím ale stojí věta, kterou snadno přehlédnete: výsledky dostává agent a jeho poskytovatel modelu má vlastní pravidla nakládání s daty. Dekompilovaný kód i výpisy síťového provozu tedy odcházejí do kontextu modelu u Anthropicu, OpenAI nebo Googlu. U firemní aplikace, kterou zkoumáte v práci, to je otázka pro vašeho bezpečnostního správce dřív než pro agenta.
Druhá věc je izolace. SECURITY.md výslovně říká, že ověřování tokenem není sandbox: neochrání před škodlivým procesem běžícím pod stejným uživatelem a otevření nedůvěryhodné binárky znamená, že ji parsuje provider s vašimi oprávněními. Verze 4.0 navíc zrušila příkazy pro konfiguraci oprávnění, schvalovací pole i parametry omezující rozsah souborového systému a zachytávání procesů nově dědí prostředí hostitele. Analýza malwaru proto patří do virtuálního stroje nebo aspoň pod oddělený uživatelský účet. Totéž bychom doporučili u čehokoli, co jste stáhli z neznámého zdroje.
A třetí riziko je naše vlastní úvaha, ne tvrzení projektu: řetězce a data z analyzovaného programu končí v kontextu agenta, který zároveň umí zapisovat soubory a spouštět příkazy. Autor škodlivého programu tam může nastražit text, který se tváří jako pokyn. SECURITY.md se injektáži promptů z analyzovaného obsahu nevěnuje.
Ještě drobnost z README: projekt nevydal žádnou kryptoměnu ani token a tokeny s názvem REA s ním nemají nic společného.
Co na to český autorský zákon
Slogan projektu zní zhruba „vidíte funkci, která se vám líbí, pochopte ji až na úroveň binárky“ a README dodává, že agent pak může postavit vlastní verzi. Tady se vyplatí zpomalit.
Český autorský zákon chrání počítačový program jako dílo, ne ale myšlenky a principy, na kterých stojí kterýkoli jeho prvek (§ 65 odst. 2). Oprávněný uživatel smí podle § 66 program zkoumat a zkoušet jeho funkčnost, aby tyhle principy zjistil. Dekompilaci, tedy rozmnožení kódu nebo překlad jeho formy, ale § 66 odst. 1 písm. e) povoluje jen tehdy, když je nezbytná pro funkční propojení nezávisle vytvořeného programu s jinými programy, potřebné informace nejsou jinak snadno a rychle dostupné a zásah se omezí na nezbytné části. Takto získané informace se nesmějí předávat dál ani použít k jinému účelu. Ustanovení vychází ze směrnice 2009/24/ES, podle které jsou smluvní podmínky odporující těmto výjimkám neplatné. Soudní dvůr EU v roce 2021 (věc C-13/20, Top System) navíc potvrdil, že oprávněný nabyvatel smí program dekompilovat i kvůli opravě chyb, které brání jeho fungování.
V praxi: zjistit, že kalkulačka počítá procento z prvního čísla, a napsat si stejné chování vlastním kódem je práce s principem. Vzít dekompilovanou funkci a vložit ji do svého produktu je kopírování výrazu, a to zákon nekryje. REA sám v závěru README přesouvá odpovědnost za povolení a dodržení zákonů na uživatele. Tenhle odstavec není právní rada; u komerčního záměru se vyplatí zeptat advokáta dřív, než agent začne psát kód.
Pro koho to je
Nejvíc z REA vytěží lidé, kteří reverse engineering umějí a chtějí zrychlit rutinu: bezpečnostní výzkumníci, hráči CTF, vývojáři, kteří integrují uzavřené SDK bez dokumentace, nebo nadšenci kolem zachování starých her, jak ukazuje rekonstrukce výpočtu z hry TH04 pro japonský počítač PC-98. Začátečník dostane srozumitelné vysvětlení, ale nepozná, kdy agent z neúplného pseudokódu vyvozuje víc, než důkazy unesou. Důkazy jsou k ničemu, když je nikdo nečte.
REA nezlevnil reverse engineering na nulu. Zlevnil čtení assembleru a odpovědnost za to, co si z něj odnesete, nechal přesně tam, kde byla vždycky – u vás.
Zdroje
- morluto/rea – repozitář a README (stav k 10. 10. 2026)
- REA – oficiální web rea.tools (příklady Kalkulačka a Dinosaurus)
- CHANGELOG.md (verze 0.2.0 až 4.1.0)
- docs/installation.md (setup, Hopper, Ghidra, MCP Registry)
- SECURITY.md (bezpečnostní hranice)
- ai-tldr.dev: REA 4.1 (podporované systémy, data vydání)
- Zákon č. 121/2000 Sb., § 66 – znění na Podnikatel.cz
- Epravo.cz: Ochrana počítačových programů dle autorského zákona
- Cuatrecasas: rozsudek SDEU C-13/20 Top System
- Směrnice 2009/24/ES o právní ochraně počítačových programů