Files
reverse-engineering-anything/docs/readme/README_ru.md
T
22f28644fe feat(artifacts): inventory and extract Deno compile executables (#8527)
* feat(artifacts): inventory and extract Deno compile executables

Adds Deno standalone artifact support for Mach-O, ELF, and PE carriers,
exposing virtual files, entry points, recorded options, and file digests
without running the executable. Extraction uses the existing safe output
tree, preserves symlink targets as metadata, and assigns indexed paths
to unsafe or oversized names. Environment-file values and certificate
bytes remain in local Evidence; npm snapshots are reported by length
without decoding. The documentation describes supported layouts, parsing
limits, and refusal behavior.

* fix(artifacts): resolve nested Intel Deno carriers to the enclosing app

The backward trailer search stopped at the first confirmed sentinel, so an
Intel app storing another Intel Deno executable as a virtual file reported
the inner app. Search to the slice start, drop sentinels inside a confirmed
payload, and fail closed on side-by-side trailers that differ.

Correct the docs on retained environment values and generated regions.

* fix(artifacts): keep Deno coverage, remote paths and PE resources truthful

Report unknown coverage when the virtual filesystem cannot be listed, keep
resolved specifiers when another remote ID is missing, and percent-encode
characters in remote paths that a Windows destination would refuse. Reject a
directory at the PE resource language level, and correct the guide's
description of colliding generated regions.

* fix(artifacts): normalize Deno remote escapes so hex case cannot collide

Uppercase every percent escape in a generated remote path, so specifiers that
differ only in escape case reach the path registry as one name and the second
gets an indexed path instead of colliding on a case-insensitive disk.

* fix(artifacts): fail closed on truncated enclosing Deno trailers and encode reserved remote path characters

The Intel trailer scan rejected an overlong sentinel before reading its
marker, so a truncated enclosing app vanished and the nested app was
reported. Read the marker first and fail closed when a confirmed overlong
trailer encloses another trailer.

encodeURIComponent leaves `*` alone and the sanitizer covered only part of
the Windows reserved set. remoteDestination now encodes the whole set once
as uppercase percent hex; source_path keeps the original.

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

* fix(artifacts): defer truncated Intel Deno trailer failure until enclosing trailers resolve

A damaged Intel asset stored before a valid one inside a valid app made the
backward trailer search fail before it reached the outer trailer. Hold that
failure until the search ends and drop it when a confirmed enclosing trailer
holds the sentinel as data.

* fix(pe): fail closed when a resource type branch is unreadable beside a found name

namedResourceTargets skipped a type branch whose names directory, or a
name entry whose string, could not be read. A duplicate RT_RCDATA entry
pointing out of bounds therefore vanished once another branch matched,
and locatePeResourcePayloads returned only the readable ranges while
parsePeResources rejected the same tree.

The walk now records unresolved branches. hasPeResourceName still
reports false for a tree that never reaches the name, but once
locatePeResourcePayloads finds the name it raises a format failure if
any branch was left unresolved.

* fix(artifacts): skip Intel Deno sentinels that a native segment maps

A non-Deno x86_64 Mach-O that stores an Intel Deno executable in __DATA
had the asset's trailer promoted to the root application, because the
backward sentinel search never checked who owned the bytes it scanned.

locateMachOSlice now records the file ranges of every segment other than
__SUI and __LINKEDIT (libsui extends __LINKEDIT over the trailer), and
the Intel search skips any sentinel inside one of them. A slice whose
load commands do not frame stays with native inventory, since ownership
cannot be shown there.

* fix(artifacts): reject a universal Deno image with an unreadable sibling slice

The universal Mach-O locator skipped any slice whose load commands could
not be read or framed, and any slice with a FAT range issue. When another
slice confirmed Deno, that slice was reported as the whole image, so a
sibling declaring a different Deno application went unexamined.

locateMachOSlice now reports why part of a slice was not examined
(unreadable or unframed load commands, a truncated slice, or the Intel
sentinel allowance). locateMachO collects those reasons for every
declared and hidden slice and fails closed once any slice confirms a
Deno section. With none confirmed, the image stays with native inventory
as before.

* fix(scripts): supervise the Deno verifier version check

Run `deno --version` through the verifier command owner with a deadline
instead of raw execFile, and close the owner when the version is refused.

* fix(artifacts): keep unconfirmed Deno carriers native and fail truncated Intel trailers

An ELF SUI note whose descriptor is too short for the full d3n0l4nd name
now stays unconfirmed instead of failing closed; failures after the name
matches still fail closed.

Every marker-confirmed Intel trailer whose payload runs past the slice is
now kept until the backward search ends and fails unless an enclosing
payload contains it, so an Intel Deno app missing its last byte reports a
Deno failure instead of native inventory.

The Deno MCP boundary test now calls open_binary and inspect_artifact
through artifactMcpCall, as docs/testing.md requires.

* test(deno): drop source-text checks from verifier pin test

Keep the wrong-version subprocess check, which covers the pinned
release through behavior, and stop asserting on the verifier script's
source spelling.

* test(deno): close readers in finally in symlink and cancellation tests

A failed assertion or read error in either test skipped reader.close(),
leaving the file open while temp-directory cleanup ran. Both tests now
close the reader in finally, as CONTRIBUTING.md requires. The
closed-reader assertion in the symlink test stays after the finally.

* docs(specs): add deno-standalone spec, plan and tasks

Add docs/specs/artifacts/deno-standalone/ with spec.md, plan.md and
tasks.md for the Deno compile executable reader, as AGENTS.md requires
for a feature, and list them in the specifications index.

* docs: list the Deno compile guide in the documentation sidebar

* fix(deno): confirm the d3n0l4nd section before claiming Mach-O damage

A __SUI segment alone no longer makes later load-command damage Deno's.
A Mach-O whose __SUI segment holds only a differently named section now
stays absent and keeps native inventory, while damage seen before or
beside a confirmed d3n0l4nd section still fails closed.

* fix(deno): keep a slice with an unparsed segment command unread

A Mach-O segment command that frames but cannot be parsed may be the
__SUI segment, so the slice is no longer treated as fully examined. A
universal image whose other slice confirms Deno now fails closed instead
of letting that sibling supply the whole inventory, and with no confirmed
sibling the image still keeps native inventory.

* fix(deno): confirm an ELF SUI note before rejecting its length

A SUI note whose descsz runs past its note table was recorded as plain
damage before its descriptor name was read, so a malformed Deno carrier
fell back to native inventory. The owner and the d3n0l4nd name prefix are
now read within the table apart from the claimed extent, and a confirmed
note with an oversized extent fails closed.

* fix(deno): confirm a truncated __SUI section record by its name

A section record cut short after its 16-byte name was skipped, so a
damaged Deno carrier fell back to native inventory. The name is now read
apart from the rest of the record, and a truncated record that names
d3n0l4nd fails closed. The range checks for a confirmed record move into
their own helper.

* fix(deno): reject nonzero bytes after the last ELF note

When fewer than 12 bytes remained in a note table after its last note,
the walk stopped without looking at them, so a Deno note was selected
with complete coverage beside unaccounted data. The remainder is now
read: zero padding is accepted, and nonzero bytes are recorded as damage,
which fails closed once a SUI note is confirmed and otherwise leaves the
ELF to native inventory, matching the native note parser.

* fix(deno): validate FAT slice identity before choosing the search

The locator took a universal slice's CPU type from its FAT row, so a row
that called an x86_64 slice arm64 skipped that slice's Intel trailer and
let the arm64 payload stand for the whole image. Each slice's header is
now checked against its row with validateFatSliceIdentity. A mismatch
leaves the slice unread, so a universal image whose other slice confirms
Deno fails closed. The Intel fixture header now states
CPU_SUBTYPE_X86_64_ALL so its FAT rows can match it exactly.

* fix(deno): check the Intel trailer marker before judging its length

A trailer length word of 2^53 or more was dropped before its d3n0l4nd
marker was read, so an enclosing app with that length was skipped and a
nested app's range stood for the whole image. The marker is now read
first, and a marker-confirmed trailer whose length runs past the slice,
safe or not, joins the deferred truncated candidates and fails closed
unless an enclosing trailer holds it as data.

* fix(deno): count short ELF note tables against the note allowance

A note table shorter than one note header made a read of its trailing
bytes but counted no note, so many distinct tiny tables could force one
sequential read each past the 256-note allowance. Every nonempty table
now counts at least one entry, both in the up-front estimate and while
scanning, so an image past the allowance records the limit instead of
reading every table. The trailing-byte check moves into its own helper.

* fix(deno): fail closed on ELF extended section numbering beside a SUI note

A zero e_shnum with a nonzero e_shoff moves the section count into
section zero, so the section table was skipped and its SHT_NOTE tables
were never compared. Record it as damage, as PN_XNUM already is, so a
confirmed SUI note fails closed instead of reporting full coverage.

* fix(deno): keep undersized Intel trailers until enclosing ownership is known

A trailer length word below 8 was dropped before its d3n0l4nd marker was
read, so an enclosing app with a length of 0 to 7 was skipped and a nested
app's trailer was selected as the root. The marker is now read first, and a
marker-confirmed trailer too short to hold it is kept as malformed and fails
closed unless an enclosing trailer holds it as data.

* fix(pe): treat non-directory RT_RCDATA branches as unresolved

A duplicate typeId root entry whose target is a data entry was skipped
without marking the walk unresolved, so locatePeResourcePayloads returned
the readable named resource as complete. Route non-directory type
branches through the same unresolved path as unreadable names
directories so the Deno reader fails closed.

* fix(deno): fail closed on a zero-fill d3n0l4nd Mach-O section

denoSectionRange admitted the declared offset and size of a confirmed
__SUI,d3n0l4nd record without checking its section type, so a
S_ZEROFILL, S_GB_ZEROFILL or S_THREAD_LOCAL_ZEROFILL section could be
read as a file payload while MachoImage reports it as not file backed.
Reject zero-fill types with the shared isMachoZeroFillSection predicate
before assigning a physical range.

* fix(deno): bound the d3n0l4nd Mach-O section by its segment file extent

denoSectionRange checked a confirmed __SUI,d3n0l4nd record only against
the slice and file bounds, so a section reaching past its segment's
fileoff/filesize was still read as a complete payload while MachoImage
reports the same section as not file backed. Reject a section outside
its enclosing segment's file extent before admitting the physical range.

* style(deno): apply oxfmt to the DenoStandaloneLocation embedding union

* fix(artifacts): preserve Deno carrier ownership

* fix(artifacts): admit Deno parent segments

* fix(deno): preserve native segment ownership

* test(deno): cover mismatched Mach-O segment widths

---------

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

45 KiB
Raw 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; диагностика бинарных файлов
Байт-код EVM Селекторы диспетчеризации, смещения байтов, предполагаемые аргументы и изменяемость состояния Локальные необработанные байты или шестнадцатеричное представление в Linux x64; руководство по EVM без запуска
Rust binaries Embedded cargo-auditable dependency list Rust binaries
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
Windows shortcuts Shell Link target, arguments, working dir, ExtraData and Tracker droid facts Built-in static LNK inspection; Windows shortcuts
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; руководство по сетевым захватам
Сборки .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; руководство по захватам
Захват пакетов Конечные точки, DNS, TLS SNI, распределение протоколов и HTTP-запросы Предоставленные вызывающей стороной tshark и capinfos; руководство по pcap
Записанные логические сигналы Аннотации декодера, диапазоны отсчётов и диагностика Linux: sigrok-cli 0.7.2 + prlimit; руководство по сигналам
Пакеты и ресурсы Списки файлов, хеши, plist, структура пакетов Apple и извлечённые ресурсы Руководство по артефактам и JavaScript, приложения Apple
Поведение процессов Вывод терминала, взаимодействия, наблюдения за завершением и файловой системой, сравнения запусков Linux/macOS с нативным PTY; захват процессов
PyInstaller CArchive, PYZ, Python bytecode Static inspection; Python packaged applications
Deno compile binaries Virtual files, entry point, recorded options, npm snapshot length Static inspection; Deno compile executables
Бинарные файлы 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-окружений

Создайте локальное окружение, где ИИ-агент сможет выполнять пробные задания, например искать задачу в трекере или создавать папку, без запуска исходного приложения. Используйте его для обучения с подкреплением (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.