Files
rea/README_pl.md
T
fef6f73064 feat(adb): complete ADB device support for Android reverse engineering (#1552)
* 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]>
2026-10-10 23:01:24 +08:00

19 KiB

English · 简体中文 · 繁體中文 · 日本語 · 한국어 · Türkçe · Русский · Tiếng Việt · ไทย · Deutsch · Español · Français · Українська · Polski · Português (Brasil) · العربية · فارسی · Bahasa Indonesia · Italiano

REA: Reverse Engineer Anything

Jeden serwer MCP do inżynierii wstecznej plików binarnych, aplikacji i zachowania w czasie wykonywania.

Widzisz funkcję, która Ci się podoba? Dowiedz się, jak działa, aż do poziomu kodu binarnego.

npm version CI MCP tool catalog Node.js requirements skills.sh MIT license Discord

morluto%2Frea | Trendshift

Strona internetowa · Przewodniki · Przykłady zastosowań

Szybki start · Jak działa REA · Co możesz analizować · Przykłady zastosowań · FAQ · Dokumentacja

npx rea-agents setup


REA uruchamia most analityczny w Hopperze podczas analizy natywnego pliku binarnego



Discord
Dołącz do społeczności inżynierii wstecznej

Discord · Pytania i odpowiedzi · Pokaż swój projekt


Widzisz w aplikacji funkcję, którą chcesz mieć we własnym produkcie? Poproś swojego agenta, aby zbadał ją za pomocą REA. Może przeanalizować aplikację bez jej kodu źródłowego, wyjaśnić działanie funkcji, pokazać dowody i stworzyć jej wersję dla Twojego projektu.

REA łączy Twojego agenta z narzędziami do analizy natywnych plików binarnych, aplikacji JavaScript i Electron, zestawów .NET oraz stron internetowych. Z tych samych narzędzi możesz korzystać w terminalu. Analiza odbywa się lokalnie, a wyniki zawierają dowody i ograniczenia stojące za każdym wnioskiem.

Konfigurator rejestruje REA w Twoim agencie i instaluje pasujące instrukcje pracy. Analiza kodu natywnego może korzystać z istniejącej instalacji Hoppera lub Ghidry; konfigurator może też zainstalować Hoppera po uzyskaniu zgody. Statyczna analiza JavaScript nie wymaga żadnego z tych silników.

Odwiedź stronę REA, aby znaleźć instrukcje konfiguracji, ilustrowane przewodniki i rzeczywiste studia przypadków.

Szybki start

Skonfiguruj agenta

Po zainstalowaniu Node.js i npm uruchom:

npx rea-agents setup

Wybierz swoich agentów, sprawdź proponowane zmiany i zatwierdź je. Konfigurator dodaje serwer MCP REA i pasujące instrukcje pracy, tworząc kopie zapasowe istniejącej konfiguracji. Następnie uruchom agenta ponownie.

Konfigurator obsługuje Claude Code, Codex, Cursor, Gemini CLI, Grok Build i innych agentów. Konfigurację dostawców analizy i ręczną rejestrację MCP opisuje przewodnik instalacji i konfiguracji.

Zapytaj agenta

Sprawdź, jak działa wyszukiwanie w aplikacji Notes, pokaż mi dowody i stwórz podobną funkcję dla mojego projektu.

Zastąp Notes wybraną aplikacją i wskaż funkcję, którą chcesz zrozumieć.

Korzystaj z terminala

Przeanalizuj rozpakowany katalog aplikacji JavaScript/Electron lub archiwum ASAR:

npx -y rea-agents@latest analyze-javascript-application /absolute/path/to/app --json

Wynik obejmuje moduły, importy, granice komponentów Electron oraz dowody. Zastąp ścieżkę ścieżką do swojego celu, na przykład "D:/apps/example" w systemie Windows.

Aby zainstalować polecenie rea do regularnego użytku:

npm install --global rea-agents
rea --help

Przed analizą kodu natywnego skonfiguruj dostawcę analizy. Polecenia analizy natywnej, wybór dostawcy, migawki i użycie w skryptach opisuje przewodnik CLI i Evidence.

Zaktualizuj REA

REA szybko się rozwija, a nowe wydania często zawierają poprawki błędów. Dbaj o aktualność swojej instalacji.

Dla CLI zainstalowanego przez npm:

rea update

Aby odświeżyć rejestracje agentów i umiejętność, uruchom polecenie konfiguracji wyświetlone po aktualizacji.

Jeśli używasz npx, zaktualizuj konfigurację agenta poleceniem:

npx rea-agents@latest setup

Sprawdź zmiany konfiguracji i uruchom agenta ponownie. Do jednorazowych poleceń CLI używaj npx rea-agents@latest, a następnie nazwy polecenia.

Jak działa REA

Twój agent wywołuje REA przez MCP, aby analizować cel i śledzić istotny kod. REA zwraca ustalenia wraz z dowodami. Agent wykorzystuje je do zadawania dalszych pytań, wyjaśniania zachowania lub pisania i testowania implementacji. Polecenia CLI korzystają z tych samych procedur.

Przebieg badania z REA: agent pyta o lokalny cel, REA analizuje go i śledzi za pomocą narzędzi analitycznych, a agent korzysta ze zwróconego kodu, odwołań i niewiadomych, aby wyjaśnić działanie, stworzyć implementację i ją przetestować.

Otwórz ilustrację w pełnym rozmiarze.

Co możesz analizować

REA wymaga Node.js 22.x (>=22.19), 24.x (>=24.11) lub 26+ oraz npm. Dodatkowe narzędzia i obsługiwane platformy zależą od celu analizy:

Cel Co zwraca REA Wymagania i przewodnik
Natywne pliki binarne Pseudokod, kod asemblera, ciągi znaków, symbole, wywołania i odwołania Hopper, Ghidra lub IDA; analiza kodu natywnego
Układ pliku ELF w trybie offline Sekcje, segmenty, oryginalne symbole/relokacje i potencjalne mechanizmy zabezpieczeń wskazane przez analizę statyczną pwntools dostarczone przez użytkownika w systemie Linux x64; diagnostyka plików binarnych
Kod bajtowy EVM Selektory wywołań, przesunięcia bajtowe, wywnioskowane argumenty i mutowalność Lokalny plik z surowymi bajtami lub zapisem szesnastkowym w systemie Linux x64; przewodnik EVM offline
Zarejestrowane awarie systemu Linux Surowe rekordy note, rejestry/sygnały każdego zarejestrowanego wątku i opcjonalni kandydaci na mapowania pwntools dostarczone przez użytkownika w systemie Linux x64; opcjonalnie GDB/pwndbg; zarejestrowane awarie
JavaScript / Electron Moduły, importy, mapy źródeł, trasy, IPC i powiązania z natywnymi dodatkami Node.js i npm; analiza aplikacji
Strony internetowe Struktura strony, skrypty, obserwacje sieciowe i zamówione zrzuty ekranu Przeglądarka z rodziny Chrome; analiza w przeglądarce
Zapisane przechwycenia ruchu sieciowego Żądania, odpowiedzi, dostępne dane przesyłane i lokalizacje źródłowe HAR; mitmdump w systemie Linux dla natywnych przechwyceń mitmproxy; przewodnik przechwytywania
Zestawy .NET Metadane, instrukcje CIL, zadeklarowane zależności natywne i porównania kompilacji Analiza statyczna; przewodnik kodu zarządzanego
Pakiety APK dla Androida Deklaracje manifestu, klasy, zdekompilowane metody i odwołania JADX bez interfejsu graficznego i pełny JDK w systemach Linux/macOS/Windows x64; przewodnik Androida
Urządzenia z Androidem Urządzenia, pakiety, procesy, logi, zrzuty, zrzuty ekranu oraz transfery APK/plików adb dostarczony przez wywołującego (emulator lub urządzenie); przewodnik ADB
Oprogramowanie układowe Regiony, wyniki wyodrębniania i przekazanie do analizy kodu natywnego Binwalk / Unblob w systemie Linux; przewodnik oprogramowania układowego
Pakiety i zasoby Spisy plików, skróty, pliki plist, struktura pakietów Apple i wyodrębnione zasoby Przewodnik artefaktów i JavaScript, aplikacje Apple
Zachowanie procesów Wyjście terminala, interakcje, obserwacje zakończenia i systemu plików oraz porównania uruchomień Linux/macOS z natywnym PTY; przechwytywanie procesów

Statyczna analiza JavaScript i .NET odczytuje dostarczone pliki bez uruchamiania aplikacji. Przechwytywanie w czasie wykonywania uruchamia wybrany cel lub wchodzi z nim w interakcje z uprawnieniami Twojego użytkownika; skutki opisano w odpowiednich przewodnikach.

Obsługiwane formaty natywne i platformy zależą od dostawcy analizy. Zobacz konfigurację Hoppera i Ghidry, przewodnik IDA oraz eksperymentalną obsługę Ghidry w systemie Windows. Ghidra obsługuje też analizę 16-bitowego DOS-a. Wybór dostawcy opisuje przewodnik CLI. Sprawdź dostępność w wydaniach dla funkcji dodanych po najnowszym wydaniu npm.

Przykłady zastosowań

Ilustracje studiów przypadku panoramowania dźwięku w DX-Ball, mostka schowka w Notion i pierścienia pocisków w TH04

DX-Ball: odtworzenie obliczania panoramy dźwięku

Prześledź wywołanie dźwięku do funkcji pomocniczej przeliczającej pozycję na panoramę, sprawdź instrukcje i przekształć niepełny pseudokod w C. Odtworzona implementacja przechodzi 3 205 przypadków dla oryginalnego x86 i odtwarza wszystkie 63 bajty skompilowanej funkcji.

Przeczytaj studium przypadku · Repozytorium odtworzonej implementacji

Notion: śledzenie mostu schowka w Electron

Znajdź API schowka w procesie renderującym, prześledź je przez preload i IPC do procesu głównego, a następnie sprawdź format schowka wraz z danymi formatowania.

Przeczytaj studium przypadku

TH04: odtworzenie obliczania pierścienia pocisków w DOS-ie

Sprawdź 16-bitowe instrukcje oryginalnej gry na PC-98, odtwórz obliczenia kątów stałych i skierowanych na cel oraz porównaj odtworzony C++ z wynikiem historycznego kompilatora.

Przeczytaj studium przypadku · Repozytorium odtworzonej implementacji

Jeśli użyłeś REA do czegoś ciekawego, chętnie to zobaczymy. Opisz swój przypadek w zgłoszeniu lub pull requeście, podając cel analizy, pytanie, sposób, w jaki REA pomogło, i swoje ustalenia.

FAQ

Którzy agenci mogą korzystać z REA?

Każdy agent obsługujący lokalne serwery MCP. Konfigurator konfiguruje obsługiwanych agentów; inne klienty mogą użyć ręcznej rejestracji MCP.

Czy potrzebuję Hoppera, Ghidry lub IDA?

Dogłębna analiza kodu natywnego używa jednego z nich. Statyczna analiza JavaScript i .NET działa bez silnika analizy natywnej. Konfigurator może zainstalować Hoppera po uzyskaniu zgody; Ghidra i IDA korzystają z istniejących instalacji. Zobacz konfigurację dostawców analizy.

Czy muszę najpierw uruchomić Hoppera?

REA uruchamia Hoppera, gdy wymaga tego operacja. W systemie macOS przy pierwszym uruchomieniu okno dialogowe może poprosić o wybór trybu demonstracyjnego lub aktywację licencji. Zobacz uruchamianie Hoppera i rozwiązywanie problemów.

Co daje zainstalowanie umiejętności z skills.sh?

Umiejętność dostarcza agentowi instrukcje prowadzenia analizy. Użyj npx rea-agents setup, aby zarejestrować serwer MCP REA i zainstalować pasujące instrukcje, a następnie uruchom agenta ponownie. Zobacz instalację samej umiejętności.

Jaki kod zwraca REA?

Analiza kodu natywnego zwraca pseudokod i kod asemblera. Analiza JavaScript/Electron odzyskuje moduły i ich powiązania. Agent wykorzystuje te ustalenia do napisania i przetestowania implementacji; przykłady zastosowań pokazują ten proces w praktyce.

Czy REA przesyła moją aplikację?

REA analizuje cele lokalnie. Twój agent otrzymuje wyniki narzędzi, a dostawca jego modelu ma własną politykę dotyczącą danych.

Co zrobić, gdy napotkam błąd?

Najpierw zaktualizuj REA; najnowsze wydanie mogło już naprawić ten problem.

Dla CLI zainstalowanego przez npm:

rea update

Dla konfiguracji agenta przez npx:

npx rea-agents@latest setup

Jeśli używasz agenta, wykonaj odświeżenie konfiguracji i uruchom go ponownie. Ponów tę samą operację. Jeśli problem pozostaje, otwórz zgłoszenie, podając wersję REA, typ celu analizy, kroki odtworzenia problemu i komunikaty błędu.

Dokumentacja

Zacznij od przewodników z przykładami na stronie internetowej. Dokładne opcje, wymagania wstępne i kontrakty wyników opisano tutaj:

Zgłaszaj podatności zgodnie z SECURITY.md.

Historia gwiazdek

🎉 50 000 gwiazdek na GitHubie — dziękujemy!

Dziękujemy wszystkim, którzy używają REA, zgłaszają błędy, proponują nowe funkcje, testują kompilacje i przesyłają poprawki.

Historia gwiazdek REA na GitHubie

Zastrzeżenie

REA dostarcza narzędzia do zgodnych z prawem badań z zakresu inżynierii wstecznej, analizy i odtwarzania. Odpowiadasz za uzyskanie wymaganych zezwoleń i przestrzeganie obowiązującego prawa. Projekt nie popiera działań nielegalnych ani nieautoryzowanych.

Współtworzenie

Chętnie przyjmiemy Twoją pomoc w rozwoju REA! Otwórz zgłoszenie, aby poinformować o błędzie lub zaproponować funkcję, albo wyślij pull request z ulepszeniami kodu lub dokumentacji.

Zobacz CONTRIBUTING.md, aby poznać konfigurację środowiska programistycznego i kontrole, testowanie, aby poznać ścieżki weryfikacji, oraz mapę architektury, aby poznać strukturę projektu.

Licencja

MIT