Files
rea/docs/readme/README_id.md
T
Kaoru0822 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

22 KiB

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

REA: Rekayasa Balik Apa Pun

Satu MCP untuk rekayasa balik pada berbagai biner, aplikasi, dan perilaku saat runtime.

Melihat fitur yang Anda sukai. Pahami cara kerjanya hingga ke tingkat biner.

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

morluto%2Frea | Trendshift

Situs Web · Panduan · Contoh Penggunaan

Mulai Cepat · Cara Kerja REA · Hal yang Dapat Anda Analisis · Contoh Penggunaan · FAQ · Alat GNU objdump dan Rizin · Dokumentasi

npx rea-agents setup

Important

Sumber resmi REA: morluto/rea, rea.tools, rea-agents (npm). Gunakan tautan instalasi dan rilis dari sumber resmi ini. Nama repositori yang mirip atau README yang disalin tidak membuktikan bahwa unduhan tersebut resmi.


REA menjalankan jembatan analisisnya di dalam Hopper saat memeriksa biner native



Discord
Bergabunglah dengan Komunitas Rekayasa Balik

Discord · Tanya Jawab · Berbagi Hasil


Melihat fitur dalam suatu aplikasi yang ingin Anda hadirkan di produk sendiri? Minta agen Anda menyelidikinya menggunakan REA. REA dapat memeriksa aplikasi tanpa kode sumbernya, menjelaskan cara kerja fitur tersebut, menunjukkan bukti, dan membangun versi untuk proyek Anda.

REA menghubungkan agen Anda dengan berbagai alat untuk memeriksa biner native, aplikasi JavaScript dan Electron, assembly .NET, serta situs web. Anda juga dapat menggunakan alat yang sama dari terminal. Analisis dijalankan secara lokal, dan hasilnya mencakup bukti serta keterbatasan yang mendasari setiap kesimpulan.

Proses penyiapan mendaftarkan REA ke agen Anda dan memasang instruksi alur kerja yang sesuai. Analisis native dapat menggunakan instalasi Hopper, Ghidra, atau IDA yang sudah ada. Proses penyiapan juga dapat memasang Hopper secara opsional setelah mendapatkan persetujuan. Analisis JavaScript statis tidak memerlukan mesin analisis native.

Kunjungi situs web REA untuk mendapatkan petunjuk penyiapan, panduan bergambar, dan studi kasus nyata.

Mulai Cepat

Siapkan agen Anda

Dengan Node.js dan npm yang telah terpasang, jalankan:

npx rea-agents setup

Pilih agen yang ingin digunakan, tinjau perubahan yang diusulkan, lalu setujui perubahan tersebut. Proses penyiapan menambahkan server MCP REA dan instruksi alur kerja yang sesuai, serta membuat cadangan konfigurasi yang sudah ada. Setelah itu, mulai ulang agen Anda.

Penyiapan mendukung Claude Code, Codex, Cursor, Gemini CLI, Grok Build, dan agen lainnya. Lihat instalasi dan penyiapan untuk konfigurasi penyedia dan pendaftaran MCP secara manual.

Minta agen Anda

Pahami cara kerja pencarian di aplikasi Notes, tunjukkan buktinya, dan buat fitur serupa untuk proyek saya.

Ganti Notes dengan aplikasi target dan fitur yang ingin Anda pahami.

Gunakan terminal

Periksa direktori aplikasi JavaScript/Electron yang telah diekstrak atau berkas ASAR:

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

Hasilnya mencakup modul, impor, batas antarkomponen Electron, dan bukti yang mendasarinya. Ganti jalur tersebut dengan lokasi target Anda, misalnya "D:/apps/example" di Windows.

Untuk memasang perintah rea agar dapat digunakan secara rutin:

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

Untuk analisis native, konfigurasikan penyedia terlebih dahulu. Lihat Panduan CLI dan Bukti untuk perintah native, pemilihan penyedia, snapshot, dan pembuatan skrip.

Perbarui REA

REA berkembang dengan cepat, dan rilis baru sering menyertakan perbaikan bug. Pastikan instalasi Anda selalu diperbarui.

Untuk CLI yang dipasang melalui npm install --global atau bun add --global:

rea update

Pembaruan global dengan Bun memerlukan Bun 1.2.17 atau yang lebih baru. Pada rilis Bun yang lebih lama, perbarui Bun secara manual sebelum menjalankan rea update.

Untuk memperbarui pendaftaran agen dan skill Anda, jalankan perintah penyiapan yang ditampilkan oleh proses pembaruan.

Jika Anda menggunakan npx, perbarui penyiapan agen dengan:

npx rea-agents@latest setup

Tinjau perubahan penyiapan dan mulai ulang agen Anda. Untuk menjalankan perintah CLI sekali pakai, gunakan npx rea-agents@latest diikuti dengan perintah yang diinginkan. Dengan Bun, gunakan bunx rea-agents@latest sebagai pengganti npx rea-agents@latest.

Cara Kerja REA

Agen Anda memanggil REA melalui MCP untuk memeriksa target dan menelusuri kode yang relevan. REA mengembalikan temuan beserta bukti pendukungnya. Agen kemudian menggunakan temuan tersebut untuk mengajukan pertanyaan lanjutan, menjelaskan perilaku, atau menulis dan menguji implementasi.

Perintah CLI menggunakan alur kerja yang sama.

Alur investigasi REA: agen Anda menanyakan sesuatu tentang target lokal, REA memeriksa dan menelusurinya menggunakan alat analisis, lalu agen menggunakan kode, referensi, dan hal-hal yang belum diketahui dari hasil tersebut untuk menjelaskan, mengimplementasikan, dan menguji.

Buka ilustrasi dalam ukuran penuh.

Hal yang Dapat Anda Analisis

REA memerlukan Node.js 22.x (>=22.19), 24.x (>=24.11), atau 26+, beserta npm.

Alat tambahan dan dukungan sistem host bergantung pada target yang dianalisis:

Target Hasil yang diberikan REA Persyaratan dan panduan
Biner native Pseudocode, assembly, string, simbol, pemanggilan, dan referensi Hopper, Ghidra, atau IDA; analisis native
Tata letak ELF offline Bagian, segmen, simbol/relokasi asli, dan kandidat mitigasi statis pwntools yang disediakan pemanggil pada Linux x64; diagnostik biner
Artefak WASM Validasi, bagian, bentuk WAT import/ekspor yang tepat, dan WAT yang didekode WABT 1.0.42 yang disediakan pemanggil; inspect_wasm_artifact
Bytecode EVM Selector dispatch, offset byte, argumen yang disimpulkan, dan sifat mutabilitas Pembawa data raw/hex lokal; panduan EVM offline
Rust binaries Embedded cargo-auditable dependency list Rust binaries
Crash Linux yang direkam Catatan mentah, register/sinyal setiap thread yang direkam, dan kandidat pemetaan opsional pwntools yang disediakan pemanggil; GDB/pwndbg opsional; crash yang direkam
JavaScript / Electron Modul, impor, source map, rute, IPC, dan hubungan add-on native Node.js dan npm; analisis aplikasi
Situs web Struktur halaman, skrip, pengamatan jaringan, dan tangkapan layar yang diminta Peramban berbasis Chrome; analisis peramban
Rekaman jaringan tersimpan Permintaan, respons, payload yang terekspos, dan lokasi sumber HAR; mitmdump di Linux untuk rekaman native mitmproxy; panduan rekaman
Capturan paket Endpoint, DNS, TLS SNI, distribusi protokol, dan permintaan HTTP tshark dan capinfos buatan pemanggil; panduan pcap
Assembly .NET Metadata, instruksi CIL, dependensi native yang dideklarasikan, dan perbandingan build Tidak ada (hanya analisis statis); panduan kode terkelola
APK Android Deklarasi manifest, kelas, metode hasil dekompilasi, dan referensi JADX mode headless dan JDK lengkap di Linux/macOS/Windows x64; panduan Android
Perangkat Android Perangkat, paket, proses, log, dump, tangkapan layar, serta transfer APK/berkas adb buatan pemanggil (emulator atau perangkat); panduan ADB
Proyek JEB Unit proyek bertenaga mesin, hash artefak, dan pseudokode tipe/metode Klien JEB yang dijalankan pemanggil dan menyajikan MCP, dipilih dengan REA_JEB_MCP_URL; panduan JEB
Resource Android Manifest terdekode, tabel string, lokal, dan fakta versi Peluncur Apktool buatan pemanggil; panduan resource
Aplikasi Flutter Hash snapshot Dart, hash pustaka per ABI, dan asal build engine Tidak ada (parsing APK statis); panduan Flutter
Firmware Wilayah, hasil ekstraksi, dan pengalihan ke analisis native Binwalk / Unblob di Linux; panduan firmware
Paket rekaman Kolom terpilih, nilai berulang, filter, dan aturan decode-as Linux: TShark 4.x + prlimit; panduan tangkapan
Sinyal logika terekam Anotasi dekoder, rentang sampel, dan diagnostik Linux: sigrok-cli 0.7.2 + prlimit; panduan sinyal
Paket dan sumber daya Inventaris berkas, digest, plist, struktur paket Apple, dan sumber daya yang diekstrak Panduan artefak dan JavaScript, aplikasi Apple
Perilaku proses Keluaran terminal, interaksi, pengamatan proses keluar dan sistem berkas, serta perbandingan eksekusi Linux/macOS dengan PTY native; perekaman proses

Pemeriksaan JavaScript dan .NET statis membaca berkas yang disediakan tanpa menjalankan aplikasinya. Perekaman runtime menjalankan atau berinteraksi dengan target yang dipilih menggunakan izin pengguna Anda. Setiap panduan runtime menjelaskan dampaknya.

Format native dan dukungan sistem host berbeda-beda menurut penyedia. Lihat penyiapan Hopper dan Ghidra, panduan IDA, Kuna, dan dukungan eksperimental Ghidra di Windows.

Ghidra juga mendukung analisis DOS 16-bit.

Untuk biner berukuran besar, tingkatkan batas waktu startup menggunakan REA_GHIDRA_STARTUP_TIMEOUT_MS.

Untuk memilih penyedia, lihat panduan CLI.

Periksa ketersediaan rilis untuk mengetahui fitur yang ditambahkan setelah rilis npm terbaru.

Contoh Penggunaan

Ilustrasi contoh penggunaan DX-Ball sound-pan, Notion clipboard-bridge, dan TH04 bullet-ring

DX-Ball: merekonstruksi perhitungan sound-pan

Ikuti pemanggilan suara hingga ke fungsi pembantu yang mengubah posisi menjadi nilai pan, periksa instruksinya, lalu ubah pseudocode yang belum lengkap menjadi C. Hasil rekonstruksi tersebut lolos pada 3.205 kasus x86 asli dan mereproduksi seluruh 63 byte fungsi hasil kompilasi.

Baca studi kasus · Repositori rekonstruksi

Notion: menelusuri jembatan clipboard Electron

Temukan API clipboard pada renderer, telusuri jalurnya melalui preload dan IPC hingga ke proses utama, lalu periksa format clipboard kaya.

Baca studi kasus

TH04: memulihkan perhitungan bullet-ring DOS

Periksa instruksi 16-bit dari gim PC-98 asli, pulihkan perhitungan sudut tetap dan sudut yang diarahkan, lalu bandingkan C++ hasil rekonstruksi dengan keluaran historis kompiler.

Baca studi kasus · Repositori rekonstruksi

Jika Anda telah menggunakan REA untuk menganalisis sesuatu yang menarik, kami ingin melihat hasilnya. Bagikan kasus Anda melalui issue atau pull request, sertakan target, pertanyaan Anda, bagaimana REA membantu, dan apa yang Anda temukan.

FAQ

Agen apa saja yang dapat menggunakan REA?

Agen apa pun yang mendukung server MCP lokal dapat menggunakan REA. Proses penyiapan mengonfigurasi agen yang didukung. Klien lain dapat menggunakan pendaftaran MCP manual.

Apakah saya memerlukan Hopper, Ghidra, atau IDA?

Analisis native mendalam menggunakan salah satu dari ketiganya. Pemeriksaan JavaScript dan .NET statis dapat dilakukan tanpa mesin analisis native.

Proses penyiapan dapat memasang Hopper setelah memperoleh persetujuan. Ghidra dan IDA menggunakan instalasi yang sudah tersedia. Lihat penyiapan penyedia.

Apakah saya harus menjalankan Hopper terlebih dahulu?

REA akan menjalankan Hopper saat suatu operasi membutuhkannya. Di macOS, dialog saat pertama kali dijalankan mungkin meminta Anda memilih mode demo atau mengaktifkan lisensi.

Lihat startup dan pemecahan masalah Hopper.

Apa fungsi memasang skill dari skills.sh?

Skill tersebut menyediakan instruksi investigasi untuk agen Anda. Gunakan npx rea-agents setup untuk mendaftarkan server MCP REA dan memasang instruksi yang sesuai, lalu mulai ulang agen Anda.

Lihat instalasi khusus skill.

Kode seperti apa yang dihasilkan REA?

Analisis native menghasilkan pseudocode dan assembly. Analisis JavaScript/Electron memulihkan modul dan hubungan antarmodulnya. Agen Anda menggunakan temuan tersebut untuk menulis dan menguji implementasi. Contoh penggunaan menyediakan contoh yang telah dikerjakan.

Apakah REA mengunggah aplikasi saya?

REA menganalisis target secara lokal. Agen Anda menerima hasil alat, sedangkan penyedia model yang digunakannya memiliki kebijakan datanya sendiri.

Apa yang harus saya lakukan jika menemukan bug?

Perbarui terlebih dahulu. Rilis terbaru mungkin sudah memperbaiki masalah tersebut.

Untuk CLI yang dipasang melalui npm install --global atau bun add --global:

rea update

Untuk penyiapan agen melalui npx:

npx rea-agents@latest setup

Jika Anda menggunakan agen, selesaikan pembaruan penyiapan dan mulai ulang agen tersebut.

Coba kembali tugas yang sama. Jika masalah masih terjadi, buat issue dengan menyertakan versi REA, jenis target, langkah-langkah untuk mereproduksi masalah, dan keluaran kesalahan.

Dokumentasi

Mulailah dengan panduan praktik di situs web.

Untuk mengetahui opsi, prasyarat, dan kontrak hasil secara tepat:

Laporkan kerentanan melalui SECURITY.md.

Riwayat Bintang

🎉 250.000 bintang GitHub, terima kasih!

Terima kasih kepada semua orang yang menggunakan REA, melaporkan bug, meminta fitur, menguji build, dan berkontribusi dalam perbaikan.

Riwayat bintang GitHub REA

Penafian

Lihat DISCLAIMER.md untuk panduan penggunaan yang bertanggung jawab.

REA ditujukan untuk penelitian, pendidikan, interoperabilitas, pelestarian perangkat lunak, dan analisis perangkat lunak yang Anda miliki atau diizinkan untuk Anda periksa, sesuai hukum.

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

Kontribusi

Kami sangat menghargai bantuan Anda untuk REA! Buat issue untuk melaporkan bug atau menyarankan fitur, atau kirim pull request untuk meningkatkan kode atau dokumentasi.

Lihat CONTRIBUTING.md untuk penyiapan pengembangan dan pemeriksaan, pengujian untuk tahapan verifikasi, serta peta arsitektur untuk struktur proyek.

Lisensi

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.