Files
reverse-skills-max/our-skills/rea-full-course/SKILL.md

131 lines
8.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
name: rea-full-course
description: REA (Reverse Engineer Anything, morluto/rea) — полный практический курс. Установка, движки (Ghidra/IDA/Hopper/JADX), guided-воркфлоу, пак промтов, ограничения. Использовать для реверса Electron/JS, .NET, APK, бинарников, EVM-байткода через AI-агента.
---
# REA — Reverse Engineer Anything (полный курс)
REA = MCP-сервер + CLI (npm `rea-agents`), который даёт AI-агенту (Claude Code, Codex, Cursor, Gemini CLI, Hermes) навык реверс-инжиниринга с доказательствами: функция, файл, вызов + что осталось неизвестным. MIT, работает локально, ничего не загружает наружу. Первый релиз 12.07.2026, 100K+ звёзд за 3 месяца.
Полный текст курса-источника: `research-what-we-did/rea-full-course-source.md`.
## Установка
```bash
node -v # нужен Node 22.19+ / 24.11+ / 26+ (23 и 25 НЕ поддерживаются)
npx rea-agents@latest setup # интерактивно: выбор агента → план изменений → approval → бэкап конфигов
npx -y rea-agents@latest doctor --client claude_code --json # только проверка
npm install --global rea-agents && rea --help # глобальная команда
rea update # фиксы выходят почти ежедневно
```
Промт для авто-установки агентом:
```
Install REA and connect it to this coding agent using npx rea-agents@latest setup. Show me the setup plan for approval, then verify the installation.
```
После установки — ПОЛНЫЙ рестарт агента (для desktop-приложений недостаточно закрыть окно).
## Что читает и какие движки нужны
| Цель | Движок |
|---|---|
| Electron/JS desktop (Notion, Slack, Discord, Obsidian) | ничего, из коробки |
| Сайты (структура, скрипты, сеть) | любой Chrome-family браузер |
| HAR-файлы | ничего |
| .exe / Mach-O / DOS-игры (псевдокод, asm, строки) | Ghidra 12.1.x + JDK 21 (GHIDRA_INSTALL_DIR, JAVA_HOME) или Hopper или IDA |
| .NET (включая Unity-игры — игровая логика часто .NET) | ничего |
| Android APK | JDK 17+ и jadx-headless-mcp 0.7.1 (REA_JADX_MCP_JAR) |
| EVM-байткод смарт-контрактов | только Linux x64 |
| Прошивки, WASM, Go-бинарники | встроенные парсеры |
Electron-приложения лежат: Win `C:\Users\<ty>\AppData\Local\Programs\<App>\resources\app.asar`, Mac `<App>.app/Contents/Resources/app.asar`, Linux `/opt/<App>/resources/app.asar`.
Анализ без запуска приложения:
```bash
npx -y rea-agents@latest analyze-javascript-application /absolute/path/to/app --json
```
## Guided-воркфлоу (зашиты в MCP, почти никто не знает)
- `investigate_feature` — фича от обнаружения до конкретных функций
- `compare_application_versions` — что реально изменилось в апдейте
- `verify_reconstruction` — сверка своей пересборки с сохранёнными доказательствами
- `trace_crash` — креш → пути кода
- `audit_residual_unknowns` — что ещё не доказано
- `prepare_bounded_process_capture` — план безопасного runtime-эксперимента
Цикл профи: **investigate → spec → build → verify**
```
Use REA to investigate how [feature] works in [app]. Write SPEC.md: behavior, inputs, outputs, edge cases, no copied code. Then build it from SPEC.md in ./my-version, write tests from the observed behavior, and run them until they pass.
```
## Пак промтов (копипаст в агент с установленной REA)
Первый тест (2 минуты, официальное training-приложение):
```
Download https://rea.tools/examples/notes-example.zip into a new example folder and unpack it. Use REA to find what happens when I click Export notes.
Show where notes.csv is written, which fields it contains, and the relevant files and lines.
```
Аудит APK:
```
Use REA on this APK. List every permission, every analytics or tracking SDK, and every domain the app talks to. Show the class and method for each finding.
```
Проверка токена (байткод → state-функции):
```
Use REA on this contract bytecode. List every function that can change state. Flag anything that looks like mint, blacklist, pause, fee change or owner-only transfer. Mark what is confirmed and what is inferred.
```
(`rea inspect-evm-interface ./runtime.hex hex --json`; имена функций — догадки из байткода, красный флаг = «проверь глубже»)
Дифф версий:
```
Use REA's compare_application_versions workflow on [old version] and [new version] of [app]. Tell me what actually changed, with evidence.
```
Реал-тайм фичи:
```
Figure out how Discord shows who's typing in real time, show me the proof, and build something similar for my project.
```
Реконструкция игры:
```
Reconstruct a game from its executable and test it against the original.
```
## Ограничения (честно)
- Сервер не трогает — читается только то, что на твоей машине. Банк не взломает.
- Декомпилированный код — реконструкция, не оригинальный исходник → шаг verify обязателен.
- Стрипанные C++-бинарники намного жёстче, чем Unity .NET-игры.
- Агент может отказаться на прошивках/консолях (правила безопасности модели).
- IDA/Hopper/JEB — свои лицензии, крякнутые копии запрещены.
## Юридическая рамка (clean room)
Учись на оригинале → пиши СПЕК (поведение, не код) → собирай своё с нуля. Так работали Compaq (BIOS IBM, ~$1M), Sega v. Accolade (1992, fair use), Sony v. Connectix (2000, 3-0). За копирование чужого кода/кряк платных фич/публикацию декомпилята — прилетает иск (Sony v. geohot 2011).
## Эталонные кейсы
- Aegis authenticator: 3077 классов → найден генератор 6-значных кодов → пересборка прошла 133/133 теста
- DX-Ball (1996): sound-pan восстановлен на C, 3205 тест-кейсов оригинала, 63/63 байта компиляции
- Touhou: 697 функций, 696 точных совпадений, играбельно за ~12 дней
- Super Mario Sunshine PC-порт: ~365 агенто-часов, 17.3B токенов
- ArtCraft: 7 приложений Adobe как clean-room Rust-альтернативы (альфа)
## Уроки из практики (пересборка Touhou)
- Чёткая цель + чёткие критерии приёмки для агента.
- Заметки и проверки — в git, чтобы следующая сессия продолжила.
- Любое объяснение агента = гипотеза, проверять.
- Тестируй свои тесты: сломанное сравнение однажды пропустило неправильную функцию.
## Локальная практика (наш Windows-стенд, 14.10.2026)
- rea 6.4.0: `tools/node-26.7.0-win32-x64/rea.cmd`; MCP `rea` в Hermes config = 170 tools.
- IDA attached-режим: env `REA_IDA_MCP_CONFIG` → ida-mcp.json (ida-pro-mcp 1.4.0 legacy, IDA GUI с плагином на :13337). Native-анализ бинарей — ТОЛЬКО через attached IDA.
- Windows-лимиты: binary-layout/pwntools = Linux-only; Go/Rust/WASM/EVM/SQLite-парсеры встроенные.
- Прогнано: `analyze-javascript-application` на TeleSender (90MB Electron) → Evidence-бандл 41878 узлов, JSON.
- Монетизация навыка: bug bounty (пайплайны 8 MCP + 300 инструментов + Ghidra/radare2/Frida окупаются), перенос легаси-софта, связывание тулов, восстановление утраченных исходников для компаний.