Files
reverse-engineering-anything/docs/readme/README_ru.md
T
ca4ca65c5e feat(pe): inspect Authenticode certificate tables (#4830)
* feat(pe): inspect Authenticode certificate tables

Add inspect_pe_certificates for IMAGE_DIRECTORY_ENTRY_SECURITY
WIN_CERTIFICATE entries and structurally decoded PKCS#7 signer
and X.509 identity fields. The workflow reads a stable PE image
without executing it or verifying signatures, chains, timestamps,
or Authenticode digest coverage.

* fix(pe): bound and validate certificate DER decoding

- Cap decoded DER values with a shared node budget so sibling fan-out
  cannot exhaust memory before the PKCS#7 check
- Require SignedData version, encapContentInfo and a final signerInfos
  SET in RFC 5652 order, and a signature OCTET STRING in each SignerInfo
- Decode OBJECT IDENTIFIER arcs as unbounded base-128 values, including
  a multi-byte first combined arc
- Decode UniversalString names as UTF-32BE and reject invalid values
- Share PE header admission with the resource layout so a section table
  that does not fit SizeOfHeaders is rejected

* docs: list PE certificates in the translated READMEs

* fix(pe): cap OBJECT IDENTIFIER length and arc size

A crafted type-2 certificate with a 262,144-byte contentType OID stalled
decodeOid for about 20 seconds, because one arc kept growing a BigInt
before the signedData check ran. decodeOid now rejects an OID longer than
256 bytes and an arc longer than 32 bytes before decoding it. Certificate
OIDs, including 2.25 UUID arcs, fit under both caps.

* fix(pe): reject truncated certificate tables and PKCS#7

SignedData now requires one SignerInfo with a non-empty signature and a
complete issuerAndSerialNumber. Certificate names share a 64 KiB decoded-byte
budget and are copied once. A security directory that ends in a short
WIN_CERTIFICATE header fails instead of reporting a complete table. The
certificate CLI forwards the caller abort signal into cleanup.

Co-authored-by: morluto <morluto@users.noreply.github.com>

* chore(ci): keep fork workflow files unchanged

The certificate restack follows current main. Workflow files stay at the
fork tip so this branch update does not rewrite .github/workflows.

Co-authored-by: morluto <morluto@users.noreply.github.com>

* fix(pe): charge serial and validity text to the decoded budget

Certificate and signer serial numbers and validity times now count against
the shared decoded-text budget before they are converted, so a crafted
certificate cannot push megabytes of text into the hashed evidence. The
budget error now names certificate text rather than only names.

Restore the CI workflow to match main: the CI_TIMING_TIER input, the
tier-named timing artifacts and their publication conditions, the Windows
typecheck, and the path and snapshot suites in the curated Windows lane.

* fix(pe): require certificate fields and preserve signer key ids

Reject X.509 records that omit subjectPublicKeyInfo or signatureValue,
return subjectKeyIdentifier bytes as bounded hex, and advertise an absolute
path in the PE certificate input schema.

Co-authored-by: morluto <morluto@users.noreply.github.com>

* fix(pe): reject extra PKCS#7 wrappers and invalid UTF-8 names

ContentInfo and its signedData wrapper no longer ignore trailing values, and
directory strings must round-trip as UTF-8 instead of becoming U+FFFD.

Co-authored-by: morluto <morluto@users.noreply.github.com>

---------

Co-authored-by: Matt Van Horn <455140+mvanhorn@users.noreply.github.com>
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: morluto <morluto@users.noreply.github.com>
Co-authored-by: morluto <76467478+morluto@users.noreply.github.com>
2026-10-22 17:20:07 +08:00

33 KiB
Raw 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
PE certificates Authenticode WIN_CERTIFICATE entries and PKCS#7 signer/X.509 identity fields Built-in static PE inspection; PE certificates
ELF notes PT_NOTE/SHT_NOTE owners, types, GNU build-id and ABI-tag fields Built-in static ELF inspection; ELF notes
Записанные сбои Linux Необработанные записи note, регистры/сигналы каждого записанного потока и необязательные кандидаты сопоставления с памятью pwntools, предоставленный вызывающей стороной, в Linux x64; необязательные GDB/pwndbg; записанные сбои
Установленные настольные приложения Возможные среды выполнения, файлы с доказательствами, компоненты и дальнейшие шаги Ограниченная проверка каталогов и заголовков;Настольные приложения
JavaScript / Electron Модули, импорты, карты исходного кода, маршруты, IPC и связи с нативными дополнениями Node.js и npm; анализ приложений
Сайты Структура страницы, скрипты, наблюдения за сетью и запрошенные снимки экрана Браузер семейства Chrome; анализ браузера
Сохранённые сетевые захваты Запросы, ответы, доступные полезные данные и позиции в источнике HAR; 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

Статическое исследование 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.

История звёзд

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