Files
560674e2de feat(native): report binary hardening for ELF, PE and Mach-O (#8524)
* feat(native): report binary hardening for ELF, PE and Mach-O

Documents inspect_binary_hardening and its CLI equivalent, including
per-property states, supporting evidence, read budgets, and one report
per Mach-O slice. Explains that missing protection imports remain
unknown, signature presence does not establish validity, and hardened
runtime requires inspect_signature. Adds hardening links throughout the
documentation. The supplied diff also removes the advanced CodeQL
workflow and configuration, along with snapshot-binding mismatch
guidance.

* fix(native): validate declared payloads and dynamic tables before hardening rows

Run the shared range checks for ELF, read imports from the dynamic tables
rather than section metadata, and keep an unresolved symbol count apart from
an absent table. Check every Mach-O command before building rows and retain
only the offsets the rows need.

Make the verifier's readelf output wide, check the emitted format before
parsing Mach-O, and place the sources before the libraries in the link.

* fix(native): share Mach-O segment admission with hardening reads

A segment with a section count its cmdsize cannot hold passed the hardening
reader and could enable restrict_segment. Move the size, section count and
file range checks to a shared admission that readMachoImage and the hardening
reader both use, and pin the ELF load-size case with a regression test.

* fix(hardening): reject Mach-O section payloads past the slice and empty ELF interpreters

Segment admission never checked each section's payload range, so a
file-backed section past the slice still produced rows. Decode sections with
the section header owner and mark the slice malformed when a payload leaves
it; zero-fill and empty sections own no file bytes and are exempt.

admitInterp accepted a NUL first byte in a longer extent, which counted an
empty interpreter as PIE evidence. It now requires a nonempty path.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KuWHGvzJkrhCqjtEHUwqyH

* fix(native): read CFG instrumentation from decoded GuardFlags

Use the IMAGE_GUARD_CF_INSTRUMENTED flag that guardFlagRecord already
decodes instead of masking the raw GuardFlags word a second time.

* fix(native): reject ELF table spans a second PT_LOAD remaps

The hardening reader mapped DT_STRTAB, DT_SYMTAB and hash tables through
the one PT_LOAD containing the table's first address. A second PT_LOAD
starting inside the table could map the rest of it from other file bytes
and the reader still reported parsed import evidence.

Cap each mapping at the next PT_LOAD that starts inside it, reject a
requested range that crosses that boundary, and stop hash reads at the
same limit, matching the conflicting-mapping refusal in readElfSymbols.

* fix(native): dedupe ELF note tables only on shared boundaries

The hardening reader dropped any note table whose bytes another table
already covered. A covering SHT_NOTE can hold a non-GNU note whose
descriptor is itself a complete GNU property note, while PT_NOTE names
that inner note directly. Walking only the outer stream missed the GNU
marker and reported CET disabled.

Drop an alias only when it starts and ends on boundaries of admitted
tables, which are note boundaries of the walked streams. Any other
covered alias leaves the feature rows unknown, as a partial overlap
already does.

* fix(native): admit every Mach-O symbol record after a canary match

The Mach-O stack protector scan returned as soon as it found an
undefined ___stack_chk_fail, so a later undefined symbol whose n_strx
lay outside the string table was never checked. The same damaged table
parsed or failed as malformed depending only on record order.

Keep the match and finish the bounded record walk. Records after the
match are only checked against the string table bounds, so their names
are not read or charged to the scan budget. The ELF reader already
admits its whole symbol table before matching names.

* fix(native): accept ELF load aliases with the same file translation

The hardening reader treated every PT_LOAD that starts inside a table,
or that also contains the table's address, as a conflicting mapping.
A load with the same address-to-file translation names the same file
bytes, so tables it overlaps still have one interpretation, and the
canonical ElfLoadMap already merges such spans.

Treat equivalent loads as one interpretation. A load with a different
translation, or the zero-filled tail of an equivalent load, still ends
the usable range, so a remapped table is still rejected.

* fix(native): keep same-span ELF note tables with different alignments unknown

A section and a program header that share endpoints were treated as one
note stream even when their effective note alignments differed. Walking the
same bytes at 4 and 8 can frame different notes, so dropping the second table
could hide a GNU property word and report CET or BTI as disabled.

Require matching effective alignment at both endpoints, and no alignment
change inside the covered span, before treating a table as an alias.
Otherwise mark the feature rows unknown. The fixture's .note.gnu.property
section now declares the class's note alignment, as toolchains emit it.

* refactor(native): read LC_SYMTAB through the shared fixed-word decoder

Move the Mach-O fixed uint32 command layouts out of MachoCommandNames
into domain/apple/machoLoadCommands so there is one owner of those
offsets. MachoCommandNames and the hardening reader now both decode
through it; the hardening reader keeps its own bounds and import policy.

* fix(native): skip Mach-O common definitions in canary imports

A common definition sets N_UNDF|N_EXT like an import but stores its
allocation size in n_value. An object holding only
`int __stack_chk_fail;` therefore reported stack_protector: enabled.

Require a zero n_value before an undefined external counts as an
import, for both nlist widths.

* refactor(native): read linkedit data commands through the shared fixed-word decoder

readMachoLinkeditDataCommand reproduced the dataoff/datasize offsets that
FIXED_WORD_FIELDS already owns. Take the command and decode through
decodeMachoFixedWordFields, as readMachoSymtabCommand does, keeping the
truncation and endianness behavior.

* fix(native): skip empty SHT_NOTE sections in ELF hardening

A zero-sized SHT_NOTE owns no bytes, so the section directory marks it
not file-backed and the hardening reader rejected the whole image as
malformed, while readElfImage accepted the same bytes. Skip empty note
sections before the file-backing check; they have nothing to walk.

* fix(scripts): run hardening verifier commands through the shared owner

The binary hardening verifier started its probes and compiler drivers with
raw spawnSync, which bypassed the src/process/ supervision that AGENTS.md
requires. Every launch now goes through createVerifierCommands, and the
temporary root is removed only after the owner closes cleanly.

* fix(scripts): clean up hardening verifier commands on Ctrl-C

SIGINT or SIGTERM ended Node before withVerifierCleanup ran, so detached
compiler trees and the temporary root could outlive the verifier. The
verifier now turns those signals into an abort that every owned command
receives, so cleanup closes the owner and removes the root before exit.

* fix(scripts): fail the hardening verifier when a signal lands outside a command

Only the owned commands read the interruption signal, so a SIGINT or
SIGTERM during the final cleanup or between commands was recorded and
then dropped, and the verifier exited 0. After cleanup settles, the
verifier now throws the interruption reason. A failure the operation or
its cleanup already raised still leaves first and is not replaced.

* fix(native): fail Mach-O slices with a malformed encryption command

The hardening reader turned every malformed status from the shared
encryption reader into an unknown `encrypted` row, so a short
LC_ENCRYPTION_INFO_64 or an encrypted range past the slice still left the
slice parsed with a full report.

Only two conflicting encryption commands stay an unknown row now. Any other
encryption defect fails the slice like other structural command failures.

* fix(native): ignore STB_LOCAL undefined ELF symbols as imports

A local undefined __stack_chk_fail or __memcpy_chk is never resolved
against another object, so it does not establish an external import.
Skip STB_LOCAL bindings when reading protector signs, and give the
fixture's positive symbols STB_GLOBAL binding.

---------

Co-authored-by: Matt Van Horn <455140+mvanhorn@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 01:07:00 +08:00

43 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 · Ελληνικά · മലയാളം · Roman Urdu · Română

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

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

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

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

morluto%2Frea | Trendshift

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

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

Швидкий старт · Як працює REA · Що можна аналізувати · Приклади · Створення RL-середовищ · Поширені запитання · Документація

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, IDA або Kuna; Hopper можна встановити після схвалення. Статичний аналіз JavaScript не потребує нативного рушія.

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

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

У Linux для запуску Ghidra, JADX та інструментів прошивок, а також статичного аналізу JavaScript/Electron потрібен сумісний із procps ps у PATH REA для перевірки володіння процесами. Див. передумову для Linux.

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

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

npx rea-agents setup

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

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

MCP типово використовує компактні вхідні схеми. Для повного опису полів і вкладеної перевірки задайте REA_MCP_INPUT_SCHEMA_PROFILE=full у реєстрації MCP. Обидва профілі зберігають усі інструменти й однакову канонічну перевірку сервера; див. посібник контрактів 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 install --global / bun add --global:

rea update

rea --update — псевдонім rea update із тими самими глобальними параметрами виводу. Оновлення зберігає сумарно до 4 MiB stdout/stderr. Завеликі метадані відхиляються після завершення; докладне встановлення зберігає обмежену діагностику. Прогрес враховує зворотний тиск термінала й чекає завершення переданих записів.

Глобальні оновлення Bun потребують Bun 1.2.17 або новішого. Перед rea update вручну оновіть старішу версію Bun.

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

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

npx rea-agents@latest setup

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

З Bun використовуйте bunx rea-agents@latest замість npx rea-agents@latest.

Як працює REA

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

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

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

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

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

Ціль Що повертає REA Вимоги й посібник
Нативні бінарні файли Псевдокод, асемблерний код, рядки, символи, виклики й посилання Hopper, Ghidra, IDA або Kuna; нативний аналіз
Структура ELF без запуску Секції, сегменти, початкові символи/релокації та можливі захисні механізми за даними статичного аналізу pwntools, наданий стороною, що викликає інструмент, у Linux x64; діагностика бінарних файлів
PE certificates Authenticode WIN_CERTIFICATE entries and PKCS#7 signer/X.509 identity fields Built-in static PE inspection; PE certificates
PE imports Import and delay-load DLL names, ordinals, IAT RVAs and pefile import hash Built-in static PE inspection; PE imports
Байт-код EVM Селектори диспетчеризації, зміщення байтів, виведені припущення про аргументи та змінюваність стану Локальні необроблені байти або шістнадцяткове представлення у Linux x64; посібник EVM без запуску
Rust binaries Embedded cargo-auditable dependency list Rust binaries
ELF notes PT_NOTE/SHT_NOTE owners, types, GNU build-id and ABI-tag fields Built-in static ELF inspection; ELF notes
Binary hardening PIE, NX, RELRO, CFG and related header flags for ELF, PE and Mach-O Built-in static header inspection; binary hardening
Linux kernel modules .modinfo keys, __versions CRCs, this_module presence, and signature trailer Built-in static ELF inspection; kernel modules
Erlang BEAM IFF chunks, atoms, exports, and tables Built-in static BEAM inspection; Erlang BEAM
Apple IPS crashes .ips metadata, threads, images, registers and crash classes Built-in static JSON inspection; Apple IPS
Записані аварійні завершення в Linux Необроблені записи note, регістри/сигнали кожного записаного потоку й необов'язкові кандидати зіставлення пам'яті pwntools, наданий стороною, що викликає інструмент, у Linux x64; необов'язкові GDB/pwndbg; записані аварійні завершення
Встановлені настільні програми Можливі середовища виконання, файли доказів, компоненти та наступні кроки Обмежена перевірка каталогів і заголовків;Настільні програми
JavaScript / Electron Модулі, імпорти, карти вихідного коду, маршрути, IPC і зв'язки з нативними доповненнями Node.js і npm; аналіз застосунків; Linux: procps ps
Сайти Структура сторінки, скрипти, мережеві спостереження й запитані знімки екрана Браузер сімейства Chrome; аналіз браузера
Збережені мережеві захоплення Запити, відповіді, доступні корисні дані та місця в джерелі HAR / Fiddler Everywhere SAZ; mitmdump у Linux для захоплень у власному форматі mitmproxy; посібник мережевих захоплень
Захоплення пакетів Кінцеві точки, DNS, TLS SNI, розподіл протоколів та HTTP-запити Надані викликаючою стороною tshark та capinfos; підручник pcap
Збірки .NET Метадані, інструкції CIL, оголошені нативні залежності й порівняння збірок Статична перевірка; посібник керованого коду
PyInstaller CArchive, PYZ, Python bytecode Static inspection; Python packaged applications
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; захоплення процесів
Бінарні файли Go Вбудована версія компілятора, модулі, заміни та налаштування збірки Вбудований статичний аналіз ELF/PE/thin Mach-O; Встановлювати Go не потрібно
Бази SQLite Таблиці, стовпці, індекси, подання, тригери та вибрані рядки звичайних таблиць Локальний знімок БД/WAL; Node.js 24.x >=24.15 або 26+ із нативними обмеженнями SQLite
Об’єкти коду GPU Цілі CUDA/HIP, параметри й ресурси вибраних ядер, збережений текст PTX Вбудований статичний аналіз ELF/PE/fatbin/CUBIN/PTX; GPU
Файли моделей Метадані GGUF / safetensors, оголошення тензорів і обчислені підсумки Перевірка заголовків; повний хеш файлу за вибором; GGUF / safetensors
Метадані IL2CPP Образи збірок Unity global-metadata.dat, імена типів/методів та діапазони індексів Статичне декодування версій 24, 27, 29, 31, 39; Unity не потрібен
Godot PCK Інвентар і видобування, оригінальні заголовки/каталоги та ідентичність вибраного вмісту Статичні формати 2, 3, 4; Godot не потрібен
Артефакти WASM Валідація, секції, точні WAT-форми імпорту/експорту та декодований WAT Надає користувач WABT 1.0.42; inspect_wasm_artifact
Підписи APK Підписувачі v1/v2/v3/v3.1, відбитки сертифікатів, ротація ключів і внутрішня узгодженість хешів Вбудований статичний аналіз; inspect_apk_signature

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

Для автономного аналізу нативних бінарних файлів REA також підтримує GNU objdump і Rizin, які користувач надає самостійно. Посібник з інструментів зворотної розробки описує налаштування провайдерів, команди CLI та обмеження Evidence. REA не встановлює й не оновлює жодного з цих провайдерів.

Для великих файлів збільште час запуску через REA_GHIDRA_STARTUP_TIMEOUT_MS або REA_HOPPER_STARTUP_TIMEOUT_MS.

Нативні формати й підтримка систем відрізняються залежно від провайдера. Дивіться налаштування 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++ із виводом тогочасного компілятора.

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

Створюйте RL-середовища з REA

Запишіть сеанс вебзастосунку, перетворіть його API на інструменти й експортуйте середовище для ШІ-агента. Запустіть його з AgentEnv, а потім додайте завдання та перевірки винагород для RL-навчання або оцінювання.

Посібник зі створення середовища · Дивитися демо в X

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

Створення RL-середовищ

Створіть локальне середовище, де ШІ-агент може тренуватися виконувати завдання, як-от пошук issue або створення папки, без запуску початкового застосунку. Використовуйте його для навчання з підкріпленням (RL) або перевірки того, як агент виконує завдання.

REA перетворює записані API-запити й відповіді на інструменти, які може викликати агент. Середовище використовує записані дані й підтримує зміни лише тоді, коли запис підтверджує їхні ефекти.

Налаштуйте REA у своєму агенті та замініть URL і завдання з папками на власні:

За допомогою REA створи RL-середовище з мого тестового вебзастосунку:
http://127.0.0.1:3000
Охопи перегляд списку папок, створення, перейменування й видалення.
Можна створювати й видаляти тестові папки. Наявні дані не змінюй.
Збережи в папку my-env, перевір доступні операції та поясни, як запустити середовище.
Використати командний рядок

Ці команди підходять, якщо у вас уже є файл із записаними запитами й відповідями застосунку в браузері. Для запуску результату також потрібні AgentEnv і Docker.

rea environment-build ./session.har ./my-env --name my-env --json
agent-env run ./my-env

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

Посібник зі створення середовища · Довідник середовищ · Дивитися демо в X

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

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

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

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

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

Чи потрібно спочатку запускати 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.

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

🎉 400 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.