Files
rea/docs/readme/README_pl.md
T
c1fd496e6a feat(kuna): serve procedures, pseudocode and assembly from Kuna exports (#3854)
* feat(kuna): serve procedures, pseudocode and assembly from Kuna exports

Register Kuna as a bring-your-own deep-analysis provider. It answers
list_documents, list_procedures, search_procedures, procedure_address,
address_name, procedure_pseudo_code, procedure_assembly and
analyze_function (and batch_decompile through composition) from the
verified project export. While a cold export builds in the background,
pseudocode comes from a single-function `kuna decompile` run on a private
copy and says so; assembly and data names wait for the export.

Each answer records its source and file span in raw_result, limitations
are scoped per operation, and the session-owned export is stopped on
close unless another session still waits for it. The literal/regex
procedure search predicate moves from the IDA runner into a shared
domain helper. `npm run verify:kuna` adds a real-provider lane with an
optional Ghidra comparison.

Refs #1957

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix(kuna): refuse a Ghidra comparison without caller-built targets

Refs #1957

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix(kuna): retry owned cleanup and keep answers bound to the opened Kuna

- Re-verify the Kuna executable's digest before every launch (memoized by
  file identity), so no answer names one build while another produced it.
- Keep the process supervisor of an unproven stop, and retry it on every
  later close in both the session and the cache; a failed close keeps
  failing until the stop is proven instead of reporting success.
- Report an abandoned export's retained cleanup from session close.
- Forget and rebuild an adopted export whose files another REA process
  evicted, instead of failing every later read.
- Close a private copy whose setup failed, and retry failed removals.
- Let the session own the shared quick inventory; each caller only stops
  waiting when it cancels.
- Report a failed export as `failed` with its reason.
- Lane: release the MCP client when open_binary rejects a target, and accept
  either valid source for the first answer.

Refs #1957

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix(kuna): drain session requests before releasing workspaces

Combine caller cancellation with session shutdown and wait for active reads before releasing their process supervisors or private inputs. Retain unproven cleanup for later close attempts. Measure UTF-8 reply bytes without implying model token usage.

Co-authored-by: gensokyo-dev <342580529+gensokyo-dev@users.noreply.github.com>
Co-authored-by: Kaoru0822 <208281322+kaoru0822-kitauji@users.noreply.github.com>

* perf(kuna): keep document metadata reads free of target analysis

Listing the selected path no longer initializes the project cache or starts an export that the request never consumes.

Co-authored-by: gensokyo-dev <342580529+gensokyo-dev@users.noreply.github.com>
Co-authored-by: Kaoru0822 <208281322+kaoru0822-kitauji@users.noreply.github.com>

* fix(kuna): reject verification matrices with missing functions

Validate requested matrix coverage before building the fixture or opening providers. Empty matrices, unmatched names and partially matched function sets must fail instead of reporting an unperformed comparison as successful.

Co-authored-by: gensokyo-dev <342580529+gensokyo-dev@users.noreply.github.com>
Co-authored-by: Kaoru0822 <208281322+kaoru0822-kitauji@users.noreply.github.com>

* fix(kuna): retain component provenance in function dossiers

Record each source facet as one file span and preserve both pseudocode and assembly digests/ranges in combined reports. Keep direct text source fields compatible and verify every combined span through the real MCP lane.

Co-authored-by: gensokyo-dev <342580529+gensokyo-dev@users.noreply.github.com>
Co-authored-by: Kaoru0822 <208281322+kaoru0822-kitauji@users.noreply.github.com>

* fix(kuna): keep retired file cleanup bound to its export

Retain the export key with each failed file removal so a cancelled session reports and retries its own stopped resources. Preserve that association across sweeping and process-cleanup recovery without attributing unrelated cache failures to the session.

Co-authored-by: gensokyo-dev <342580529+gensokyo-dev@users.noreply.github.com>
Co-authored-by: Kaoru0822 <208281322+kaoru0822-kitauji@users.noreply.github.com>

* docs(kuna): document the Kuna provider and list it in the catalog (#3855)

* docs(kuna): document the Kuna provider and list it in the catalog

Add the Kuna provider guide (configuration, answered tools, cold and warm
paths, provenance, cache ownership, verification lane), link it from the
README and its translations, the CLI, installation and index pages and the
site navigation, describe `npm run verify:kuna` in the testing guide, credit
Kuna in THIRD_PARTY_NOTICES, teach the agent skill when to select Kuna, and
register its identity and operations in the generated product catalog.

Refs #1957

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* docs(kuna): state the Linux cache fallback, raw_result scope and comparison inputs

Refs #1957

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* docs(kuna): note that cache pins hold within one REA process

Refs #1957

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* docs(kuna): describe retired staging and retried cleanup

Refs #1957

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(kuna): supervise regex and bind reads to one export

Share a cancellable ECMAScript matching worker with Hopper while preserving its error contract. Bind C and assembly indexes to immutable project readers, retry whole dossiers after eviction, and enforce the existing buffered-text capacity before allocating cached spans. Document the verified Linux scope and keep complete exports accessible.

Co-authored-by: gensokyo-dev <342580529+gensokyo-dev@users.noreply.github.com>
Co-authored-by: Kaoru0822 <208281322+kaoru0822-kitauji@users.noreply.github.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: N0zoM1z0 <161784452+N0zoM1z0@users.noreply.github.com>
Co-authored-by: gensokyo-dev <342580529+gensokyo-dev@users.noreply.github.com>
2026-10-15 00:53:26 -07:00

23 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 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 · Narzędzia GNU objdump i Rizin · Dokumentacja

npx rea-agents setup

Important

Oficjalne źródła REA: morluto/rea, rea.tools, rea-agents (npm). Korzystaj z odnośników do instalacji i wydań w tych oficjalnych źródłach. Podobna nazwa repozytorium lub skopiowany README nie potwierdzają, że pobierany plik jest oficjalny.


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
Rust binaries Embedded cargo-auditable dependency list Rust binaries
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
Przechwytywanie pakietów Punkty końcowe, DNS, TLS SNI, dystrybucja protokołów i żądania HTTP Dostarczone przez wywołującego tshark i capinfos; przewodnik pcap
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
Projekty JEB Jednostki projektu obsługiwane przez silnik, skróty artefaktów i pseudokod typów/metod Uruchomiony przez wywołującego klient JEB udostępniający MCP, wybrany przez REA_JEB_MCP_URL; przewodnik JEB
Zasoby Androida Zdekodowany manifest, tablice ciągów, języki i informacje o wersji Należący do wywołującego launcher Apktool; przewodnik zasobów
Aplikacje Flutter Hash migawki Dart, sumy bibliotek per ABI i pochodzenie kompilacji silnika Brak (statyczna analiza APK); przewodnik Flutter
Oprogramowanie układowe Regiony, wyniki wyodrębniania i przekazanie do analizy kodu natywnego Binwalk / Unblob w systemie Linux; przewodnik oprogramowania układowego
Zapisane pakiety Wybrane pola, powtarzane wartości, filtry i reguły dekodowania Linux: TShark 4.x + prlimit; przewodnik po przechwyconych pakietach
Zapisane sygnały logiczne Adnotacje dekodera, zakresy próbek i diagnostyka Linux: sigrok-cli 0.7.2 + prlimit; przewodnik po sygnałach
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, Kuna 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

🎉 250 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

Wskazówki dotyczące odpowiedzialnego korzystania znajdziesz w DISCLAIMER.md.

REA służy zgodnym z prawem badaniom, edukacji, zapewnianiu interoperacyjności, zachowaniu oprogramowania oraz analizie oprogramowania, które posiadasz lub masz prawo badać.

The project's position on illegal or unauthorized use covers all REA versions, distribution channels, and platforms; each copy retains its applicable licenses.

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

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.