8 жовтня 2026 року репозиторій, про який три місяці тому ніхто не чув, вийшов на перше місце у GitHub trending.
Він називається REA (Reverse Engineer Anything — «зворотна інженерія будь-чого») і дає твоєму агенту справжній дизасемблер.
**Збережи це — якщо хочеш розгорнуту версію, повний курс із 20 уроків на цю тему вже доступний за адресою**
Він проведе тебе від порожнього термінала до перебудованого коду, який проходить власні тести на паритет, причому кожна команда й кожен промпт будуть виписані. ПОЧИНАЙ ЗВІДСИ.
Того тижня реакція скрізь була однаковою.
Метью Берман описав це трьома словами, і їх побачили 3,6 мільйона людей.
https://x.com/MatthewBerman/status/2108245653843509415
REA — це open-source MCP-сервер плюс CLI, який підключається до Claude Code, Codex, Cursor та Gemini CLI.
Ліцензія MIT, автор — morluto, перший реліз вийшов 12 липня 2026 року, а через три місяці проєкт подолав позначку у 100 000 зірок на GitHub.
Усе працює локально, і кожен висновок маркується як спостереження, умовивід або невідоме, із зазначенням адреси чи місця виклику.
Ось весь шлях від закритого бінарника до перебудованого коду, яким володієш ти, у восьми кроках.

Перед кроками: що люди вже випустили з його допомогою
Головне тут не сам інструмент, а те, що з'явилося за чотири тижні.
ArtCraft перебудували сім додатків Adobe як безкоштовні open-source альтернативи, а потім взялися за Office з WordCraft, GridCraft та DeckCraft.
Вже дванадцять додатків, усі написані з нуля на Rust, нативні для трьох платформ, і всі, крім одного, також працюють у вкладці браузера через WebAssembly.
Щодо ігор, докази ще конкретніші:
- Super Mario Sunshine отримала нативний порт на ПК: близько 365 годин роботи агента та 17,3 млрд токенів із одночасним використанням Claude і Codex
- Гру Touhou перебудували за допомогою агентів, про що написано в офіційному блозі REA: 697 функцій, 696 точних збігів, грабельна версія приблизно за 12 днів
- Автентифікатор Aegis (3077 класів) розібрали й перебудували, і всі 133 тестові сценарії пройшли успішно
- Функцію панорамування звуку з DX-Ball переписали на C, вона пройшла 3205 оригінальних x86-тестів і відтворила всі 63 скомпільовані байти
Зверни увагу, чим цей список не є.
Ніхто не зламував перевірку ліцензії, ніхто не публікував чужий вихідний код.
Кожен із цих випадків — це відновлена поведінка, задокументована й переписана новим кодом.
01. Визнач тип цілі, перш ніж щось відкривати
Цей інструмент поширився не тому, що добре читає щось одне. Він читає майже все і показує докази для кожного свого твердження.
https://x.com/RoundtableSpace/status/2109165852578992582
Цей список — також твоє перше рішення. Найпростіший спосіб втратити пів дня — тягнутися до дизасемблера, коли ціль є Electron-додатком, JavaScript якого лежить прямо перед тобою.
Направ REA на Electron, і за секунди отримаєш модулі, імпорти та межі IPC без жодного рушія, тоді як нативний Mach-O або ELF відкриє базу Hopper — глибший, але повільніший шлях.
Розуміння того, з чим ти працюєш, економить години, тому зроби це завданням свого першого промпту.
1Я хочу зрозуміти, як працює [ФУНКЦІЯ] у [ДОДАТКУ], який знаходиться за шляхом [АБСОЛЮТНИЙ ШЛЯХ].2 Спочатку скажи мені, що це за ціль (нативна, Electron/JS, .NET, Go, APK, WASM),3 і обери відповідний інструмент REA, щоб її відкрити. Поки що не починай глибокий аналіз.4 Потім опиши її одним абзацом: на чому вона побудована, якого розміру, де б ти5 шукав насамперед [ФУНКЦІЮ]. Тримай спостереження, умовиводи та невідомі окремо.

Те, про що майже ніхто не згадує: багато ігор на Unity постачають свою логіку як .NET, і REA читає .NET без додаткового рушія.
Саме тому куплена гра зі Steam перетворюється з бінарника на редагований C# за пів години.
І кожен Electron-додаток на твоєму комп'ютері можна прочитати просто зараз, навіть не запускаючи його:
1# де живе JavaScript2macOS: /Applications/<App>.app/Contents/Resources/app.asar3Windows: C:\Users\<you>\AppData\Local\Programs\<App>\resources\app.asar4 npx -y rea-agents@latest analyze-javascript-application /absolute/path/to/app --json
02. Встанови за п'ять хвилин, потім додай один рушій
Працює це не завдяки розумному промпту. А завдяки справжньому рушію дизасемблювання, підключеному до агента, — саме так це описав один із розробників.
https://x.com/techNmak/status/2108431092462338178
Налаштування реєструє MCP-сервер у твоєму агенті та встановлює відповідний навик для робочого процесу.
Воно показує кожну зміну перед записом і створює резервні копії всього, до чого торкається.
node -v # Node 22.19+, 24.11+ або 26+. Версії 23 і 25 не підтримуються
1npx rea-agents@latest setup # реєструє MCP-сервер, запитує перед записом2npm install --global rea-agents # коротка команда rea, назавжди3rea --help4# перезапусти агента, потім перевір. doctor лише перевіряє, він ніколи нічого не змінює5npx -y rea-agents@latest doctor --client claude_code --json
Перезапуск важливіший, ніж здається: сесію термінала треба починати заново, а десктопні додатки потребують повного виходу, бо простого закриття вікна недостатньо.
Потім додай рушій лише для того, що ти дійсно хочеш читати:
Один файл варто написати ще до першої реальної цілі: правила гри у claude-md.
Аналізуй лише те, чим володієш; маркуй кожне твердження як спостереження, умовивід або невідоме; вказуй адресу, на яку воно спирається; і ніколи не вважай відновлену поведінку завершеною без пройденого тесту.
1# нативні програми та ігри: Ghidra 12.1.x і JDK 21 або новіше2 export GHIDRA_INSTALL_DIR=/absolute/path/to/ghidra_12.1.4_PUBLIC3 export JAVA_HOME=/absolute/path/to/jdk-214 npx -y rea-agents@latest doctor --provider ghidra --json56 # Android-додатки: JDK 17+ і jadx-headless-mcp 0.7.17 export REA_JADX_MCP_JAR=/absolute/path/jadx-headless-mcp-0.7.1-all.jar8 rea inspect-android-package /path/App.apk910 # байт-код смарт-контрактів, поки що лише Linux x6411 rea inspect-evm-interface ./runtime.hex hex --json
03. Розвідка: карта йде перед кодом
Поки що не відкривай жодної функції.
Одна команда покаже, на якій машині працює бінарник, скільки функцій усередині та весь читабельний текст, прихований у ньому.
Цей текст — найшвидша підказка за весь день: ендпоінти, рядки помилок і назви функцій описують додаток ще до того, як ти прочитаєш будь-яку логіку.
1rea.open_binary { path: "/Applications/Target.app/Contents/MacOS/Target" }2rea.binary_overview {}3 arch: arm644 functions: 1,284 identified5 entry: _main @ 0x1000051c067rea.search { query: "http" }8 0x10004a2c0 "https://api.target.app/v3/sync"9 0x10004a300 "Authorization: Bearer "1011rea.xrefs { address: "0x100012ab0" }12 147 references -> core config loader, called everywhere

REA підраховує, скільки разів викликається кожна функція, і ця кількість є числом перехресних посилань
Функція, яку викликають 147 разів, — це архітектура додатка; та, що викликається двічі, — допоміжна, і може почекати.
Сортуй за цим числом і рухайся вниз, ніколи не за порядком у файлі, бо порядок у файлі — це те, через що люди втрачають вихідні всередині бінарника, у якому було лише чотири цікаві функції.
04. Декомпілюй одну функцію, а потім змусь Opus назвати в ній усе
Декомпілятор перетворює сирі машинні інструкції назад на щось, схоже на C.
Виходить грубо: імена на кшталт var_28, приведення типів усюди, заплутані розгалуження. І грубо — це нормально, бо моделі достатньо того, щоб це можна було прочитати.
1# одна функція за адресою, у форматі JSON, який можна зберегти й використовувати повторно2rea decompile /path/to/Target 0x100012ab0 --provider hopper --json > fn_config.json34# або знайди її за назвою та простеж посилання5rea function /path/to/Target parseConfig --provider hopper --json6rea xrefs /path/to/Target 0x100012ab0 --provider hopper --json
Потім передай цей результат Opus 5.5 і змусь його зробити те, чого не може дизасемблер:
1Ось декомпільований псевдокод функції зі 147 перехресними посиланнями.231. Перейменуй кожну змінну відповідно до того, як вона використовується, і поясни її призначення одним реченням.42. Перелічи структури даних, які вона читає та записує, і назви патерн, якому вони відповідають.53. Перепиши це як чистий ідіоматичний код тією мовою, на яку вказують угоди про виклик.64. Познач будь-яку відсутню обробку помилок, валідацію вхідних даних або перевірку безпеки.78Думай на рівні зусиль xhigh перед відповіддю. Позначай усе, в чому не впевнений.

Opus 5.5 має п'ять рівнів зусиль: low, medium, high, xhigh та max.
Medium оглядає й навігує, high анотує звичайні функції, max потрібен для обфускованого коду та складної роботи з вказівниками.
Рівень зусиль — це головний регулятор якості в цьому пайплайні, але більшість залишає значення за замовчуванням, а потім звинувачує модель.
Декомпіляція показує, що робить код, модель пояснює чому і дає імена для його перебудови.
05. Обфускація: зламай те, що варто ламати, решту обмеж бюджетом
Деякі додатки створені, щоб протистояти саме тому, що ти робиш: логіка перемішана, рядки зашифровані, фейкові розгалуження додані суто для того, щоб витрачати твою увагу.
Це єдине місце, де навіть найкраща модель буксує, і для цього є виміряні цифри.
Elastic Security Labs направила Claude Opus на скремблер Tigress у 20 завданнях, і з цього випливають два уроки.
Невдала спроба коштує приблизно вдвічі дорожче за успішну, бо модель продовжує намагатися, перш ніж здатися, а багатошарова обфускація дала нульовий результат, тому «довбати» її — найдорожчий спосіб нічого не дізнатися.

Практичне правило — бюджет на функцію, а не на сесію.
Спершу прибери сміття, бо безкоштовний інструмент Caveman видаляє близько 75% декомпільованого мотлоху, і тоді модель витрачає увагу на реальну логіку.
1Ця функція виглядає обфускованою. Працюй на рівні зусиль max.231. Визнач наявні техніки (сплощення потоку керування, непрозорі предикати,4 мертвий код, шифрування рядків, розбиття функцій) і вкажи на кожну з них тут.52. Усунь їх: видали мертві гілки, обчисли непрозорі предикати, розплутай6 диспетчеризацію, розшифруй вбудовані рядки, якщо ключ можна відновити. Покажи, що залишилось.73. Оціни впевненість від 1 до 10. Якщо нижче 6, назви сумнівні частини та контекст, який8 допоможе їх вирішити. Не здогадуйся мовчки.
06. Рій: один контролер, багато працівників
Один чат не зможе якісно прочитати 500 функцій.
Він забуває те, що бачив сорок функцій тому, називає ту саму структуру трьома різними способами й починає тихо суперечити собі.
Рішення — не більше контексту, а розподіл ролей: контролер, який роздає роботу, і працівники, кожен з яких бере одну функцію й зупиняється.

1Ти — контролер зворотної інженерії. Карта функцій знаходиться у functions.json2(адреса, назва, розмір, xref_count).341. Згрупуй функції за близькістю у графі викликів; впорядкуй групи за кількістю перехресних посилань.52. Передай кожну групу працівнику. Ніколи не аналізуй функції самостійно.63. Вставляй уже визначені структури в кожне завдання, щоб назви залишалися узгодженими.74. Якщо впевненість нижче 6, зроби другий прохід із контекстом від сусідніх вирішених функцій.85. Відстежуй загальні витрати токенів і повідомляй про них після кожної групи.910Ти — працівник. Ти отримуєш одну декомпільовану функцію та структури, визначені на даний момент.11Повертай точно: адресу, призначення, впевненість (1-10), structs_used, structs_new,12clean_source, flags. Використовуй наявні назви структур, ніколи не вигадуй другу назву для13структури, яку тобі вже дав контролер. Лише одна функція. Зупинись, коли закінчиш.
REA також постачається з керованими робочими процесами, вбудованими в MCP-сервер, які більшість людей ніколи не відкриває:
- - investigate_feature — простежити функцію від виявлення до конкретних методів
- - compare_application_versions — порівняти два релізи й побачити, що дійсно змінилося
- - verify_reconstruction — перевірити свою перебудову на основі збережених доказів
- - audit_residual_unknowns — перелічити те, що досі не доведено
07. Чиста кімната: стіна між двома контекстами — це і є продукт
Перебудова методом «чистої кімнати» означає, що ти копіюєш те, що робить додаток, і ніколи — код усередині нього.
Зробиш правильно — і те, що ти випустиш, буде повністю твоїм; помилишся — і ти нестимеш чужі авторські права у власному репозиторії.
Це метод, якому 40 років, а не винахід 2026-го.
На початку 80-х Compaq перебудувала BIOS від IBM саме так, витративши близько 1 мільйона доларів, і це єдина причина, чому існують ПК інших брендів.
У 1992 році суд у справі Sega проти Accolade постановив, що розбирання коду може бути добросовісним використанням, якщо це єдиний спосіб зрозуміти, як він працює, а у 2000 році Sony програла справу Sony проти Connectix з рахунком 3-0, бо готовий емулятор не містив жодного рядка коду Sony.
Інший бік межі такий само зрозумілий: у 2011 році Джордж Хотц уклав мирову угоду з Sony і погодився припинити діяльність після того, як root-ключ PS3 став публічним.

Чотири правила тримають тебе на правильному боці, і команда ArtCraft автоматично перевіряє всі чотири під час кожної збірки:
- - Спостерігай, ніколи не копіюй. Запускай ціль як чорний ящик, роби скріншоти лише її вікна, ніколи не вставляй її код у свій проєкт
- - Специфікації, а не вихідний код. Формати файлів беруться з публічних стандартів (OOXML — це ECMA-376 / ISO 29500, плюс опубліковані специфікації RTF та ODF), а ніколи з читання парсера конкурента
- - Лише оригінальні ресурси. Кожна іконка, шрифт, шаблон і звук намальовані кодом, перебувають у суспільному надбанні або мають відкриту ліцензію, із записом у файлі атрибуції
- - Розділи дві задачі. Один агент відновлює поведінку й пише специфікацію, інший контекст реалізує код виключно за цією специфікацією
Останнє правило — те, яке люди пропускають, і саме воно є справжньою межею.
Твій агент-дослідник за визначенням «заражений», бо він читав декомпілят, а твій агент-будівельник не повинен цього робити.
1На основі завершеного аналізу напиши специфікацію «чистої кімнати» для реалізації.23Описуй ЛИШЕ ПОВЕДІНКУ: кожен публічний інтерфейс, модель даних, кожну видиму користувачу4функцію як тестовану вимогу, формати файлів для читання та запису, обробку помилок.56НЕ включай адреси, зсуви, декомпільовані назви змінних, асемблерний код або будь-що,7скопійоване з оригіналу. Розробник, який ніколи не бачив бінарник, має мати змогу8реалізувати сумісну версію лише на основі цього документа.910Розділи: Архітектура, Модель даних, Публічний API, Формати файлів, Тестові сценарії.
Робота за описом — це не лише юридичний захист.
Це дозволяє тобі ухвалювати правильні рішення для своєї мови, замість того щоб успадковувати ті, які хтось прийняв два десятиліття тому, — саме тому WordCraft місцями швидший за Word.
08. Перевір паритет, а потім випусти через MCP
У тебе ніколи не було оригінального вихідного коду, тому ти не можеш порівнювати його порядково.
Ти порівнюєш поведінку: однакові вхідні дані для обох збірок, однакові результати на виході.
1Створи тестовий стенд для порівняння поведінки оригінального бінарника та моєї перебудови.23Згенеруй 50 вхідних даних: 30 нормальних, 10 граничних (порожні, максимальний розмір, unicode), 10 помилкових4(некоректні, пошкоджені). Прогони кожне через обидві версії, порівняй побайтово, де можливо,5і семантично в інших випадках. Повідом про відсоток збігів, розбіжності та серйозність кожної6(косметична / поведінкова / критична). Збережи у report.md.
«Я думаю, що воно збігається» — не доказ, а відсоток збігів — так. І цей звіт — найпереконливіше, що ти можеш поставити на початку поста про реліз.
Потім випусти перебудову так, як це зробили REA та додатки Craft — у вигляді MCP-сервера, щоб агент наступної людини міг керувати твоїм інструментом так само, як ти керував REA.
Дай кожній функції зрозумілу назву та встановлення в один рядок, і кожна дія стане іменованою командою, яку клік, гаряча клавіша та агент викликають однаково.
1claude mcp add wordcraft -- wordcraft-cli mcp23> Open report.docx, make every heading 14pt bold, export to PDF4 ok select.all-headings -> 12 selected5 ok format.font-size 14 . format.bold6 ok export report.pdf (selectable text, bookmarks kept)
Обмеження та п'ять помилок, які вбивають вихідні
REA не може торкнутися сервера, бо він читає те, що є на твоїй машині, а код, який працює на серверах компанії, тобі ніколи не постачався.
Декомпільований код — це реконструкція, а не оригінальний вихідний код, і саме тому існує крок 08.
C++ бінарники без символів залишаються набагато складнішими за ігри на Unity .NET, а комерційні рушії досі потребують справжніх ліцензій.
- - Відкривати дизасемблер для Electron-додатка, коли JavaScript лежить прямо перед тобою
- - Дампити весь бінарник до прочитання зведення, що ховає логіку і збільшує рахунок
- - Читати функції в порядку файлу, а не за кількістю перехресних посилань
- - Дозволяти моделі копіювати код у твою перебудову, що руйнує «чисту кімнату» однією вставкою
- - Випускати продукт без звіту про паритет
Чесна правда щодо юридичного боку, оскільки половина X тиждень кричала про піратство: читати додаток на власному комп'ютері — це навчання, перебудова функції на основі її поведінки — це те, як індустрія працює з 80-х, а копіювання коду чи злам платних функцій — це те, за що подають до суду.
Вивчай оригінал, випускай своє.
За кожним із цих восьми кроків стоїть окремий урок на
reacourse.xyz , з точними промптами, типовими помилками та моментами, де цей підхід перестає працювати.
Раніше закритий вихідний код означав, що ти ніколи не дізнаєшся.
Тепер це означає: покажи мені докази.
Більшість людей продовжуватимуть щомісяця платити за функцію, яку вони могли б зрозуміти за один вечір і перебудувати за вихідні.
Ті небагато, хто навчиться читати програмне забезпечення, створюватимуть усе, що захочуть.
Підписуйся на мене та мій Telegram-канал:





