Files
rea/docs/readme/README_uk.md
c1fd496e6a feat(kuna): serve procedures, pseudocode and assembly from Kuna exports (#3854)
* feat(kuna): serve procedures, pseudocode and assembly from Kuna exports

Register Kuna as a bring-your-own deep-analysis provider. It answers
list_documents, list_procedures, search_procedures, procedure_address,
address_name, procedure_pseudo_code, procedure_assembly and
analyze_function (and batch_decompile through composition) from the
verified project export. While a cold export builds in the background,
pseudocode comes from a single-function `kuna decompile` run on a private
copy and says so; assembly and data names wait for the export.

Each answer records its source and file span in raw_result, limitations
are scoped per operation, and the session-owned export is stopped on
close unless another session still waits for it. The literal/regex
procedure search predicate moves from the IDA runner into a shared
domain helper. `npm run verify:kuna` adds a real-provider lane with an
optional Ghidra comparison.

Refs #1957

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix(kuna): refuse a Ghidra comparison without caller-built targets

Refs #1957

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix(kuna): retry owned cleanup and keep answers bound to the opened Kuna

- Re-verify the Kuna executable's digest before every launch (memoized by
  file identity), so no answer names one build while another produced it.
- Keep the process supervisor of an unproven stop, and retry it on every
  later close in both the session and the cache; a failed close keeps
  failing until the stop is proven instead of reporting success.
- Report an abandoned export's retained cleanup from session close.
- Forget and rebuild an adopted export whose files another REA process
  evicted, instead of failing every later read.
- Close a private copy whose setup failed, and retry failed removals.
- Let the session own the shared quick inventory; each caller only stops
  waiting when it cancels.
- Report a failed export as `failed` with its reason.
- Lane: release the MCP client when open_binary rejects a target, and accept
  either valid source for the first answer.

Refs #1957

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix(kuna): drain session requests before releasing workspaces

Combine caller cancellation with session shutdown and wait for active reads before releasing their process supervisors or private inputs. Retain unproven cleanup for later close attempts. Measure UTF-8 reply bytes without implying model token usage.

Co-authored-by: gensokyo-dev <342580529+gensokyo-dev@users.noreply.github.com>
Co-authored-by: Kaoru0822 <208281322+kaoru0822-kitauji@users.noreply.github.com>

* perf(kuna): keep document metadata reads free of target analysis

Listing the selected path no longer initializes the project cache or starts an export that the request never consumes.

Co-authored-by: gensokyo-dev <342580529+gensokyo-dev@users.noreply.github.com>
Co-authored-by: Kaoru0822 <208281322+kaoru0822-kitauji@users.noreply.github.com>

* fix(kuna): reject verification matrices with missing functions

Validate requested matrix coverage before building the fixture or opening providers. Empty matrices, unmatched names and partially matched function sets must fail instead of reporting an unperformed comparison as successful.

Co-authored-by: gensokyo-dev <342580529+gensokyo-dev@users.noreply.github.com>
Co-authored-by: Kaoru0822 <208281322+kaoru0822-kitauji@users.noreply.github.com>

* fix(kuna): retain component provenance in function dossiers

Record each source facet as one file span and preserve both pseudocode and assembly digests/ranges in combined reports. Keep direct text source fields compatible and verify every combined span through the real MCP lane.

Co-authored-by: gensokyo-dev <342580529+gensokyo-dev@users.noreply.github.com>
Co-authored-by: Kaoru0822 <208281322+kaoru0822-kitauji@users.noreply.github.com>

* fix(kuna): keep retired file cleanup bound to its export

Retain the export key with each failed file removal so a cancelled session reports and retries its own stopped resources. Preserve that association across sweeping and process-cleanup recovery without attributing unrelated cache failures to the session.

Co-authored-by: gensokyo-dev <342580529+gensokyo-dev@users.noreply.github.com>
Co-authored-by: Kaoru0822 <208281322+kaoru0822-kitauji@users.noreply.github.com>

* docs(kuna): document the Kuna provider and list it in the catalog (#3855)

* docs(kuna): document the Kuna provider and list it in the catalog

Add the Kuna provider guide (configuration, answered tools, cold and warm
paths, provenance, cache ownership, verification lane), link it from the
README and its translations, the CLI, installation and index pages and the
site navigation, describe `npm run verify:kuna` in the testing guide, credit
Kuna in THIRD_PARTY_NOTICES, teach the agent skill when to select Kuna, and
register its identity and operations in the generated product catalog.

Refs #1957

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* docs(kuna): state the Linux cache fallback, raw_result scope and comparison inputs

Refs #1957

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* docs(kuna): note that cache pins hold within one REA process

Refs #1957

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* docs(kuna): describe retired staging and retried cleanup

Refs #1957

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(kuna): supervise regex and bind reads to one export

Share a cancellable ECMAScript matching worker with Hopper while preserving its error contract. Bind C and assembly indexes to immutable project readers, retry whole dossiers after eviction, and enforce the existing buffered-text capacity before allocating cached spans. Document the verified Linux scope and keep complete exports accessible.

Co-authored-by: gensokyo-dev <342580529+gensokyo-dev@users.noreply.github.com>
Co-authored-by: Kaoru0822 <208281322+kaoru0822-kitauji@users.noreply.github.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: N0zoM1z0 <161784452+N0zoM1z0@users.noreply.github.com>
Co-authored-by: gensokyo-dev <342580529+gensokyo-dev@users.noreply.github.com>
2026-10-15 00:53:26 -07:00

31 KiB
Raw Permalink Blame History

English · 简体中文 · 繁體中文 · 日本語 · 한국어 · Türkçe · Русский · Tiếng Việt · ไทย · Deutsch · Español · Français · Українська · Polski · Português (Brasil) · العربية · فارسی · Bahasa Indonesia · Italiano · Ελληνικά

REA: Реверс-інжиніринг будь-чого

Один MCP для реверс-інжинірингу бінарних файлів, застосунків і поведінки під час виконання.

Побачили цікаву функцію? Зрозумійте, як вона працює, аж до рівня двійкового коду.

npm version MCP tool catalog Node.js requirements skills.sh MIT license Discord

morluto%2Frea | Trendshift

Сайт · Посібники · Приклади

Швидкий старт · Як працює REA · Що можна аналізувати · Приклади · Поширені запитання · Інструменти GNU objdump і Rizin · Документація

npx rea-agents setup

Important

Офіційні джерела REA: morluto/rea, rea.tools, rea-agents (npm). Користуйтеся посиланнями на встановлення та випуски з цих офіційних джерел. Схожа назва репозиторію або скопійований README не підтверджують, що завантажуваний файл є офіційним.


REA запускає міст аналізу всередині Hopper під час дослідження нативного бінарного файла



Discord
Приєднуйтеся до спільноти реверс-інжинірингу

Discord · Запитання й відповіді · Обмін результатами


Побачили в застосунку функцію, яку хочете додати до свого продукту? Попросіть агента дослідити її за допомогою REA. Він може перевірити застосунок без вихідного коду, пояснити роботу функції, показати підтвердження та створити реалізацію для вашого проєкту.

REA підключає вашого агента до інструментів дослідження нативних бінарних файлів, застосунків JavaScript і Electron, збірок .NET та сайтів. Ті самі інструменти можна використовувати з термінала. Аналіз виконується локально, а результати містять підтвердження й обмеження, на яких ґрунтується кожен висновок.

Налаштування реєструє REA у вашому агенті та встановлює відповідні інструкції робочих процесів. Для нативного аналізу можна використати вже встановлений Hopper або Ghidra; налаштування також може встановити Hopper за вашою згодою. Статичному аналізу JavaScript не потрібен жоден із цих рушіїв.

Відвідайте сайт REA, щоб знайти інструкції налаштування, ілюстровані посібники та реальні дослідження.

Швидкий старт

Налаштуйте агента

Якщо Node.js і npm встановлено, виконайте:

npx rea-agents setup

Виберіть агентів, перевірте запропоновані зміни та схваліть їх. Налаштування додає MCP-сервер REA та відповідні інструкції робочих процесів, створюючи резервні копії наявної конфігурації. Після цього перезапустіть агента.

Налаштування підтримує Claude Code, Codex, Cursor, Gemini CLI, Grok Build та інших агентів. Конфігурацію провайдерів і ручну реєстрацію MCP описано в розділі встановлення й налаштування.

Запитайте агента

Досліди, як працює пошук у застосунку Notes, покажи підтвердження й створи подібну функцію для мого проєкту.

Замініть Notes цільовим застосунком і вкажіть функцію, яку хочете зрозуміти.

Використовуйте термінал

Перевірте розпакований каталог застосунку JavaScript/Electron або файл ASAR:

npx -y rea-agents@latest analyze-javascript-application /absolute/path/to/app --json

Результат містить модулі, імпорти, межі Electron і підтвердження для них. Замініть шлях своїм, наприклад "D:/apps/example" у Windows.

Для регулярного використання встановіть команду rea:

npm install --global rea-agents
rea --help

Для нативного аналізу спочатку налаштуйте провайдера. Нативні команди, вибір провайдера, знімки та використання у скриптах описує посібник CLI та Evidence.

Оновіть REA

REA швидко розвивається, а нові випуски часто містять виправлення помилок. Підтримуйте встановлену версію актуальною.

Для CLI, встановленого через npm:

rea update

Щоб оновити реєстрації агентів і skill, виконайте команду налаштування, яку виведе оновлення.

Якщо використовуєте npx, оновіть налаштування агента командою:

npx rea-agents@latest setup

Перевірте зміни налаштувань і перезапустіть агента. Для разових команд CLI використовуйте npx rea-agents@latest, а потім потрібну команду.

Як працює REA

Агент викликає REA через MCP, щоб перевірити ціль і простежити пов'язаний код. REA повертає знахідки разом із підтвердженнями. Агент використовує їх для уточнювальних запитань, пояснення поведінки або написання й тестування реалізації. Команди CLI використовують ті самі робочі процеси.

Процес дослідження з REA: агент запитує про локальну ціль, REA перевіряє й простежує її інструментами аналізу, а агент використовує повернений код, посилання та невідомі дані для пояснення, реалізації й тестування.

Відкрити зображення в повному розмірі.

Що можна аналізувати

REA потребує Node.js 22.x (>=22.19), 24.x (>=24.11) або 26+, а також npm. Додаткові інструменти й підтримувані системи залежать від цілі:

Ціль Що повертає REA Вимоги й посібник
Нативні бінарні файли Псевдокод, асемблерний код, рядки, символи, виклики й посилання Hopper, Ghidra або IDA; нативний аналіз
Структура ELF без запуску Секції, сегменти, початкові символи/релокації та можливі захисні механізми за даними статичного аналізу pwntools, наданий стороною, що викликає інструмент, у Linux x64; діагностика бінарних файлів
Байт-код EVM Селектори диспетчеризації, зміщення байтів, виведені припущення про аргументи та змінюваність стану Локальні необроблені байти або шістнадцяткове представлення у Linux x64; посібник EVM без запуску
Rust binaries Embedded cargo-auditable dependency list Rust binaries
Записані аварійні завершення в Linux Необроблені записи note, регістри/сигнали кожного записаного потоку й необов'язкові кандидати зіставлення пам'яті pwntools, наданий стороною, що викликає інструмент, у Linux x64; необов'язкові GDB/pwndbg; записані аварійні завершення
JavaScript / Electron Модулі, імпорти, карти вихідного коду, маршрути, IPC і зв'язки з нативними доповненнями Node.js і npm; аналіз застосунків
Сайти Структура сторінки, скрипти, мережеві спостереження й запитані знімки екрана Браузер сімейства Chrome; аналіз браузера
Збережені мережеві захоплення Запити, відповіді, доступні корисні дані та місця в джерелі HAR; mitmdump у Linux для захоплень у власному форматі mitmproxy; посібник мережевих захоплень
Захоплення пакетів Кінцеві точки, DNS, TLS SNI, розподіл протоколів та HTTP-запити Надані викликаючою стороною tshark та capinfos; підручник pcap
Збірки .NET Метадані, інструкції CIL, оголошені нативні залежності й порівняння збірок Статична перевірка; посібник керованого коду
Android APK Оголошення маніфесту, класи, декомпільовані методи й посилання JADX без графічного інтерфейсу й повний JDK у Linux/macOS/Windows x64; посібник Android
Пристрої Android Пристрої, пакети, процеси, журнали, дампи, знімки екрана та передавання APK/файлів adb, наданий викликаючою стороною (емулятор або пристрій); підручник ADB
Проєкти JEB Єдиниці проєкту від рушія, дайджести артефактів і псевдокод типів/методів Запущений викликаною стороною клієнт JEB з MCP, обирається через REA_JEB_MCP_URL; посібник JEB
Ресурси Android Декодований маніфест, таблиці рядків, мови та відомості про версію Засіб запуску Apktool, наданий викликаючою стороною; підручник ресурсів
Додатки Flutter Хеш знімка Dart, дайджести бібліотек за ABI та походження збірки рушія Не потрібні (статичний розбір APK); підручник Flutter
Прошивки Області, результати видобування й передавання до нативного аналізу Binwalk / Unblob у Linux; посібник прошивок
Записані пакети Вибрані поля, повторювані значення, фільтри та правила декодування Linux: TShark 4.x + prlimit; посібник із записів пакетів
Записані логічні сигнали Анотації декодера, діапазони відліків і діагностика Linux: sigrok-cli 0.7.2 + prlimit; посібник із сигналів
Пакети й ресурси Переліки файлів, хеші, plist, структура пакетів Apple та видобуті ресурси Посібник артефактів і JavaScript, застосунки Apple
Поведінка процесів Вивід термінала, взаємодії, спостереження за завершенням і файловою системою та порівняння запусків Linux/macOS із нативним PTY; захоплення процесів

Статична перевірка JavaScript і .NET читає надані файли, не запускаючи застосунок. Захоплення під час виконання запускає вибрану ціль або взаємодіє з нею з правами вашого користувача; відповідні посібники описують його вплив.

Нативні формати й підтримка систем відрізняються залежно від провайдера. Дивіться налаштування Hopper і Ghidra, посібник IDA, Kuna та експериментальну підтримку Ghidra у Windows. Ghidra також підтримує аналіз 16-бітного DOS. Для вибору провайдера дивіться посібник CLI. Для функцій, доданих після найновішої версії в npm, перевірте доступність у випусках.

Приклади

Ілюстрації прикладів панорамування звуку в DX-Ball, мосту буфера обміну Notion та кільця куль у TH04

DX-Ball: відновлення розрахунку звукової панорами

Простежте звуковий виклик до допоміжної функції, що перетворює координату на панорамування, перевірте інструкції та перетворіть неповний псевдокод на C. Відновлена реалізація проходить 3 205 тестів з оригінальним x86-кодом і відтворює всі 63 байти скомпільованої функції.

Прочитати дослідження · Репозиторій реконструкції

Notion: відстеження мосту буфера обміну Electron

Знайдіть API буфера обміну в процесі рендерингу, простежте його через preload та IPC до головного процесу й перевірте формат буфера обміну з даними форматування.

Прочитати дослідження

TH04: відновлення розрахунку кільця куль у DOS

Перевірте 16-бітні інструкції оригінальної гри для PC-98, відновіть розрахунки фіксованих і прицільних кутів та порівняйте відновлений C++ із виводом тогочасного компілятора.

Прочитати дослідження · Репозиторій реконструкції

Якщо ви дослідили з REA щось цікаве, поділіться результатом. Створіть issue або pull request і вкажіть ціль, ваше запитання, як допоміг REA та що ви з'ясували.

Поширені запитання

Які агенти можуть використовувати REA?

Будь-який агент, що підтримує локальні MCP-сервери. Налаштування конфігурує підтримуваних агентів; інші клієнти можуть використати ручну реєстрацію MCP.

Чи потрібні мені Hopper, Ghidra або IDA?

Поглиблений нативний аналіз використовує один із цих інструментів. Статична перевірка JavaScript і .NET працює без рушія нативного аналізу. Налаштування може встановити Hopper після схвалення; Ghidra й IDA використовують наявні встановлення. Дивіться налаштування провайдерів.

Чи потрібно спочатку запускати Hopper?

REA запускає Hopper, коли він потрібен для операції. У macOS під час першого запуску може з'явитися діалог вибору деморежиму або активації ліцензії. Дивіться запуск Hopper та усунення неполадок.

Що дає встановлення skill із skills.sh?

Skill надає агенту інструкції дослідження. Використовуйте npx rea-agents setup, щоб зареєструвати MCP-сервер REA та встановити відповідні інструкції, а потім перезапустіть агента. Дивіться встановлення лише skill.

Який код повертає REA?

Нативний аналіз повертає псевдокод і асемблерний код. Аналіз JavaScript/Electron відновлює модулі та їхні зв'язки. Агент використовує ці результати, щоб написати й протестувати реалізацію; приклади містять практичні дослідження.

Чи завантажує REA мій застосунок на сервер?

REA аналізує цілі локально. Ваш агент отримує результати інструментів, а постачальник його моделі має власну політику даних.

Що робити, якщо я зіткнувся з помилкою?

Спочатку оновіться: нещодавній випуск уже міг виправити помилку.

Для CLI, встановленого через npm:

rea update

Для налаштування агента через npx:

npx rea-agents@latest setup

Якщо використовуєте агента, завершіть оновлення налаштувань і перезапустіть його. Повторіть те саме завдання. Якщо проблема залишається, відкрийте issue із версією REA, типом цілі, кроками відтворення та виводом помилки.

Документація

Почніть із практичних посібників на сайті. Точні параметри, передумови й контракти результатів описано тут:

Повідомляйте про вразливості згідно з SECURITY.md.

Історія зірок

🎉 250 000 зірок на GitHub — дякуємо!

Дякуємо всім, хто використовує REA, повідомляє про помилки, пропонує нові функції, тестує збірки й допомагає з виправленнями.

Історія зірок REA на GitHub

Відмова від відповідальності

Рекомендації щодо відповідального використання наведено в DISCLAIMER.md.

REA призначений для законних досліджень, навчання, забезпечення сумісності, збереження програмного забезпечення й аналізу програм, якими ви володієте або які маєте дозвіл досліджувати.

The project's position on illegal or unauthorized use covers all REA versions, distribution channels, and platforms; each copy retains its applicable licenses.

Участь у проєкті

Будемо раді вашій допомозі з REA! Відкрийте issue, щоб повідомити про помилку чи запропонувати функцію, або надішліть pull request з поліпшеннями коду чи документації.

Налаштування середовища розробки й перевірки описано в CONTRIBUTING.md, шляхи верифікації — у посібнику тестування, а структуру проєкту — на схемі архітектури.

Ліцензія

MIT

REA-authored code is licensed under MIT. Third-party material retains its own licenses and copyright notices; see Third-party notices for the dependency inventory, preserved license texts, and external-tool terms.

You must legally obtain and be authorized to use commercial tools, including IDA Pro / Hex-Rays decompilers, Hopper, and JEB, under their applicable licenses. REA grants no tool license, key, or activation entitlement. Trials and demos remain subject to vendor terms, including user, feature, automation, and output sharing restrictions. Cracked copies, stolen keys, unauthorized key sharing, and bypassing license restrictions are not authorized. This guidance does not amend MIT or third-party licenses.