Порт REA на Rust — локальный инструмент обратной разработки с рабочими процессами CLI/MCP и нативным воркером Ghidra
Порт REA на Rust для локального обратного проектирования из терминала или MCP-клиента.
Изучайте бинарные файлы, декомпилируйте функции, анализируйте приложения на JavaScript и Electron, читайте управляемые и мобильные артефакты, а также работайте с захватами процессов и браузера. CLI и MCP-сервер используют одни и те же реализации инструментов. Среда выполнения не требует Node.js.
Готовые сборки включают rea, MCP-сервер и воркер Ghidra для
macOS, Linux и Windows на ARM64 и x86-64. Node.js, инструментарий Rust или
учётная запись администратора не требуются.
curl -fsSL https://github.com/nanashili/rea-rust/releases/latest/download/install.sh -o install-rea.sh
sh install-rea.sh
export PATH="$HOME/.local/bin:$PATH"
rea --version
В Windows запустите установщик PowerShell из командной строки PowerShell:
irm https://github.com/nanashili/rea-rust/releases/latest/download/install.ps1 -OutFile install-rea.ps1
powershell -ExecutionPolicy Bypass -File .\install-rea.ps1
Установщики проверяют контрольные суммы релизов и сохраняют версионированные файлы в
каталоге пользователя. Они не изменяют профили оболочки, PATH или настройки MCP.
Повторно запустите установщик для обновления или задайте REA_VERSION для выбора релиза. См.
подробности установки для путей, пользовательских расположений и
удаления.
Требуется закреплённый набор инструментов Rust (1.93.1), Python 3.11+ для скриптов релиза, и компилятор C/C++20 (GCC 12+ в Linux). Этот репозиторий содержит все встроенные исходники вспомогательных компонентов.
git clone https://github.com/nanashili/rea-rust.git
cd rea-rust
cargo build --locked --release -p rea
target/release/rea --help
В macOS, Linux или Windows соберите worker Ghidra отдельно и разместите его
рядом с rea:
cargo build --manifest-path ghidra-rust-worker/Cargo.toml --locked --release
cp ghidra-rust-worker/target/release/rea-ghidra-rust-worker target/release/
В PowerShell для шага копирования используйте Copy-Item ghidra-rust-worker/target/release/rea-ghidra-rust-worker.exe target/release/.
Worker использует нативный декомпилятор Ghidra и не требует JVM. Чтобы разместить его
в другом месте, задайте REA_GHIDRA_RUST_WORKER с абсолютным путём к нему.
Frida — необязательная функция сборки. См. Настройка Frida. Другие провайдеры анализа и внешние инструменты требуют собственной установки.
rea inspect /path/to/program
rea decompile /path/to/program main --provider ghidra-rust
rea inspect-go-binary /path/to/go-program --format json
rea doctor
Используйте --help для любой команды, чтобы узнать её аргументы и параметры.
Добавьте это в конфигурацию MCP вашего клиента, заменив путь к исполняемому файлу:
{
"mcpServers": {
"rea": {
"command": "/absolute/path/to/rea",
"args": ["mcp"]
}
}
}
rea mcp запускает stdio-сервер. Используйте абсолютный путь к установленному исполняемому файлу; у MCP-клиентов может быть другой PATH, чем у вашей оболочки. rea setup показывает предварительный просмотр регистраций клиентов и установки навыков, затем запрашивает подтверждение перед применением изменений. В релизных установках уже включён Ghidra worker.
GitHub Actions собирает и выполняет smoke-тесты архивов для macOS и Linux на обеих архитектурах, а также архивов Windows ARM64 и x64, перед публикацией тегированного релиза. Musl Linux и бинарные файлы с поддержкой Frida не предоставляются. Другие провайдеры анализа и внешние инструменты требуют собственной установки.
Известные различия в поведении и покрытие тестами записаны в отчёте о верификации миграции.
Локальный бенчмарк приложений охватывает 11 установленных приложений macOS и Go: 125 образцов в 25 рабочих процессах, с затраченным временем, CPU, памятью, результатами по каждому вызову и задокументированными сбоями. Повторная проверка сбоев фиксирует исправления, повторные измерения и оставшиеся сбои.
Отдельное сравнение TypeScript/native использовало замороженные сборки, измеренные на Apple M1 Pro 24 октября 2026 года, с тёплыми кэшами файловой системы. Семь сессий на версию; строка повторного запроса использует 56 вызовов на версию:
| Задача | TypeScript | Rust |
|---|---|---|
| Запуск и просмотр метаданных сборки Go | 570 мс | 64 мс |
| Повторный запрос метаданных Go в работающей сессии | 7.3 мс | 16.2 мс |
| Запуск и декомпиляция первой функции в небольшой программе на C | 9.43 с | 0.39 с |
| Выборочный пиковый объём памяти семейства процессов во время этой сессии декомпиляции | 1,022 MiB | 214 MiB |
Сравнение декомпиляции использовало Java Ghidra для TypeScript и Rust Ghidra для native-сборки. Rust завершился с ошибкой на более крупном тесте Go из-за коллизии имён импорта; Java вернула все три запрошенные функции.
См. сравнение сред выполнения и результаты Ghidra для входных данных, сырых измерений, различий в выводе и шагов воспроизведения. Аудит производительности охватывает последующие оптимизации Rust.
cargo fmt --all -- --check
cargo clippy --workspace --locked
cargo test --locked -p rea-core -p rea-rust-analysis -p rea-mcp
Руководство по разработке описывает структуру исходного кода, требования к полному тестированию рабочей области, Ghidra worker и экспериментальный C API. См. MIGRATION_GUIDE.md при изменении поведения инструмента и заметки об архитектуре о принадлежности крейтов.