* feat(adb): acquire installed APK sets from connected Android devices Add a read-only ADB device-acquisition family over the caller's adb binary: inspect_adb_client, list_adb_devices, inspect_adb_device, list_adb_packages, and pull_adb_package, exposed through the CLI and MCP with shared admission, Evidence provenance (binary, version, serial, transport), and fixed argv vectors that never reach a shell. pull_adb_package acquires the complete split set reported by pm path into a package-named directory that must not exist, digesting every file with SHA-256 and keeping per-file failure reasons and partial coverage. Device kind is reported as an inference with its basis; getprop whitelisting keeps build identity bounded. REA installs nothing and never manages devices or emulators; the first device query may start the caller's local adb server, recorded when observed. Verified against adb 34.0.5 on Linux with an Android 14 (API 34) x86_64 emulator: full 224-package inventory, a real two-APK split set pulled with byte-exact digests, and a 73.9 MB system-package pull. npm run verify:adb records the lane; parser goldens come from the same device. READMEs carry the new row in every supported language. * feat(adb): complete the adb surface with observation, transfer, and lifecycle tools Extend the ADB family from five to twenty-four operations, all through fixed adb argument vectors with no shell exposure: Observation: read_adb_logcat (bounded dump, count/buffer/pid), inspect_adb_package (dumpsys package projection), list_adb_processes (ps -A), list_adb_directory (ls -la with kinds and symlink targets), list_adb_features (hex GL versions), list_adb_services (AIDL slash-suffixed names), inspect_adb_display (wm size and density), inspect_adb_window (focus declarations), read_adb_setting (device-side nulls reported as such), capture_adb_screen (exec-out screencap with PNG dimensions), collect_adb_bugreport (digested device archive). Transfer and search: pull_adb_file and push_adb_file (device-side sha256sum verification, explicit overwrite authority), resolve_adb_packages (substring package search with exact-match flag — the find step of an easy get). Lifecycle for dynamic analysis, each declaring mutatesTarget: install_adb_package and uninstall_adb_package preserving the device's Success/Failure verdict, start_adb_app (resolve-activity then am start -W), start_adb_activity (typed extras as --es/--ez/--ei/--el/--ef), and stop_adb_app (am force-stop). Verified end-to-end against adb 34.0.5 on Linux with an Android 14 (API 34) x86_64 emulator: 287 services, 92 features, split-set pulls with byte-exact digests, verified push/pull roundtrip, sized screen capture, and the full install → resolve → start → observe-in-ps → force-stop → uninstall lifecycle. Fixed a v-mode regex incompatibility in the settings key pattern and added argument descriptions required by the CLI catalog audit. * fix(adb): quote remote shell operands and protect captured output * test(adb): cover bugreport destinations containing spaces --------- Co-authored-by: REA Contributor <[email protected]> Co-authored-by: morluto <[email protected]>
27 KiB
English · 简体中文 · 繁體中文 · 日本語 · 한국어 · Türkçe · Русский · Tiếng Việt · ไทย · Deutsch · Español · Français · Українська · Polski · Português (Brasil) · العربية · فارسی · Bahasa Indonesia · Italiano
REA: Реверс-інжиніринг будь-чого
Один MCP для реверс-інжинірингу бінарних файлів, застосунків і поведінки під час виконання.
Побачили цікаву функцію? Зрозумійте, як вона працює, аж до рівня двійкового коду.
Швидкий старт · Як працює REA · Що можна аналізувати · Приклади · Поширені запитання · Документація
npx rea-agents setup
|
Приєднуйтеся до спільноти реверс-інжинірингу 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 потребує Node.js 22.x (>=22.19), 24.x (>=24.11) або 26+, а також npm. Додаткові інструменти й підтримувані системи залежать від цілі:
| Ціль | Що повертає REA | Вимоги й посібник |
|---|---|---|
| Нативні бінарні файли | Псевдокод, асемблерний код, рядки, символи, виклики й посилання | Hopper, Ghidra або IDA; нативний аналіз |
| Структура ELF без запуску | Секції, сегменти, початкові символи/релокації та можливі захисні механізми за даними статичного аналізу | pwntools, наданий стороною, що викликає інструмент, у Linux x64; діагностика бінарних файлів |
| Байт-код EVM | Селектори диспетчеризації, зміщення байтів, виведені припущення про аргументи та змінюваність стану | Локальні необроблені байти або шістнадцяткове представлення у Linux x64; посібник EVM без запуску |
| Записані аварійні завершення в 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 |
| Прошивки | Області, результати видобування й передавання до нативного аналізу | Binwalk / Unblob у Linux; посібник прошивок |
| Пакети й ресурси | Переліки файлів, хеші, plist, структура пакетів Apple та видобуті ресурси | Посібник артефактів і JavaScript, застосунки Apple |
| Поведінка процесів | Вивід термінала, взаємодії, спостереження за завершенням і файловою системою та порівняння запусків | Linux/macOS із нативним PTY; захоплення процесів |
Статична перевірка JavaScript і .NET читає надані файли, не запускаючи застосунок. Захоплення під час виконання запускає вибрану ціль або взаємодіє з нею з правами вашого користувача; відповідні посібники описують його вплив.
Нативні формати й підтримка систем відрізняються залежно від провайдера. Дивіться налаштування Hopper і Ghidra, посібник IDA та експериментальну підтримку Ghidra у Windows. Ghidra також підтримує аналіз 16-бітного DOS. Для вибору провайдера дивіться посібник CLI. Для функцій, доданих після найновішої версії в npm, перевірте доступність у випусках.
Приклади
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, типом цілі, кроками відтворення та виводом помилки.
Документація
Почніть із практичних посібників на сайті. Точні параметри, передумови й контракти результатів описано тут:
- Встановлення й налаштування: реєстрація агентів, конфігурація провайдерів, оновлення та видалення.
- Готовність та усунення неполадок: діагностика конкретного агента або рушія аналізу.
- CLI та Evidence: команди, вибір провайдера, знімки, імпорт/експорт і статуси завершення.
- Контракти MCP і промпти агентів: результати інструментів, сеанси й керовані дослідження.
- Каталог інструментів: створюваний під час збірки перелік інструментів, провайдерів і команд CLI.
- План розвитку: заплановані роботи й відстеження можливостей.
Повідомляйте про вразливості згідно з SECURITY.md.
Історія зірок
🎉 50 000 зірок на GitHub — дякуємо!
Дякуємо всім, хто використовує REA, повідомляє про помилки, пропонує нові функції, тестує збірки й допомагає з виправленнями.
Відмова від відповідальності
REA надає інструменти для законних досліджень, аналізу й реконструкції за допомогою реверс-інжинірингу. Ви відповідаєте за отримання необхідних дозволів і дотримання застосовних законів. Проєкт не підтримує незаконне або несанкціоноване використання.
Участь у проєкті
Будемо раді вашій допомозі з REA! Відкрийте issue, щоб повідомити про помилку чи запропонувати функцію, або надішліть pull request з поліпшеннями коду чи документації.
Налаштування середовища розробки й перевірки описано в CONTRIBUTING.md, шляхи верифікації — у посібнику тестування, а структуру проєкту — на схемі архітектури.
