* feat(native): report binary hardening for ELF, PE and Mach-O Documents inspect_binary_hardening and its CLI equivalent, including per-property states, supporting evidence, read budgets, and one report per Mach-O slice. Explains that missing protection imports remain unknown, signature presence does not establish validity, and hardened runtime requires inspect_signature. Adds hardening links throughout the documentation. The supplied diff also removes the advanced CodeQL workflow and configuration, along with snapshot-binding mismatch guidance. * fix(native): validate declared payloads and dynamic tables before hardening rows Run the shared range checks for ELF, read imports from the dynamic tables rather than section metadata, and keep an unresolved symbol count apart from an absent table. Check every Mach-O command before building rows and retain only the offsets the rows need. Make the verifier's readelf output wide, check the emitted format before parsing Mach-O, and place the sources before the libraries in the link. * fix(native): share Mach-O segment admission with hardening reads A segment with a section count its cmdsize cannot hold passed the hardening reader and could enable restrict_segment. Move the size, section count and file range checks to a shared admission that readMachoImage and the hardening reader both use, and pin the ELF load-size case with a regression test. * fix(hardening): reject Mach-O section payloads past the slice and empty ELF interpreters Segment admission never checked each section's payload range, so a file-backed section past the slice still produced rows. Decode sections with the section header owner and mark the slice malformed when a payload leaves it; zero-fill and empty sections own no file bytes and are exempt. admitInterp accepted a NUL first byte in a longer extent, which counted an empty interpreter as PIE evidence. It now requires a nonempty path. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KuWHGvzJkrhCqjtEHUwqyH * fix(native): read CFG instrumentation from decoded GuardFlags Use the IMAGE_GUARD_CF_INSTRUMENTED flag that guardFlagRecord already decodes instead of masking the raw GuardFlags word a second time. * fix(native): reject ELF table spans a second PT_LOAD remaps The hardening reader mapped DT_STRTAB, DT_SYMTAB and hash tables through the one PT_LOAD containing the table's first address. A second PT_LOAD starting inside the table could map the rest of it from other file bytes and the reader still reported parsed import evidence. Cap each mapping at the next PT_LOAD that starts inside it, reject a requested range that crosses that boundary, and stop hash reads at the same limit, matching the conflicting-mapping refusal in readElfSymbols. * fix(native): dedupe ELF note tables only on shared boundaries The hardening reader dropped any note table whose bytes another table already covered. A covering SHT_NOTE can hold a non-GNU note whose descriptor is itself a complete GNU property note, while PT_NOTE names that inner note directly. Walking only the outer stream missed the GNU marker and reported CET disabled. Drop an alias only when it starts and ends on boundaries of admitted tables, which are note boundaries of the walked streams. Any other covered alias leaves the feature rows unknown, as a partial overlap already does. * fix(native): admit every Mach-O symbol record after a canary match The Mach-O stack protector scan returned as soon as it found an undefined ___stack_chk_fail, so a later undefined symbol whose n_strx lay outside the string table was never checked. The same damaged table parsed or failed as malformed depending only on record order. Keep the match and finish the bounded record walk. Records after the match are only checked against the string table bounds, so their names are not read or charged to the scan budget. The ELF reader already admits its whole symbol table before matching names. * fix(native): accept ELF load aliases with the same file translation The hardening reader treated every PT_LOAD that starts inside a table, or that also contains the table's address, as a conflicting mapping. A load with the same address-to-file translation names the same file bytes, so tables it overlaps still have one interpretation, and the canonical ElfLoadMap already merges such spans. Treat equivalent loads as one interpretation. A load with a different translation, or the zero-filled tail of an equivalent load, still ends the usable range, so a remapped table is still rejected. * fix(native): keep same-span ELF note tables with different alignments unknown A section and a program header that share endpoints were treated as one note stream even when their effective note alignments differed. Walking the same bytes at 4 and 8 can frame different notes, so dropping the second table could hide a GNU property word and report CET or BTI as disabled. Require matching effective alignment at both endpoints, and no alignment change inside the covered span, before treating a table as an alias. Otherwise mark the feature rows unknown. The fixture's .note.gnu.property section now declares the class's note alignment, as toolchains emit it. * refactor(native): read LC_SYMTAB through the shared fixed-word decoder Move the Mach-O fixed uint32 command layouts out of MachoCommandNames into domain/apple/machoLoadCommands so there is one owner of those offsets. MachoCommandNames and the hardening reader now both decode through it; the hardening reader keeps its own bounds and import policy. * fix(native): skip Mach-O common definitions in canary imports A common definition sets N_UNDF|N_EXT like an import but stores its allocation size in n_value. An object holding only `int __stack_chk_fail;` therefore reported stack_protector: enabled. Require a zero n_value before an undefined external counts as an import, for both nlist widths. * refactor(native): read linkedit data commands through the shared fixed-word decoder readMachoLinkeditDataCommand reproduced the dataoff/datasize offsets that FIXED_WORD_FIELDS already owns. Take the command and decode through decodeMachoFixedWordFields, as readMachoSymtabCommand does, keeping the truncation and endianness behavior. * fix(native): skip empty SHT_NOTE sections in ELF hardening A zero-sized SHT_NOTE owns no bytes, so the section directory marks it not file-backed and the hardening reader rejected the whole image as malformed, while readElfImage accepted the same bytes. Skip empty note sections before the file-backing check; they have nothing to walk. * fix(scripts): run hardening verifier commands through the shared owner The binary hardening verifier started its probes and compiler drivers with raw spawnSync, which bypassed the src/process/ supervision that AGENTS.md requires. Every launch now goes through createVerifierCommands, and the temporary root is removed only after the owner closes cleanly. * fix(scripts): clean up hardening verifier commands on Ctrl-C SIGINT or SIGTERM ended Node before withVerifierCleanup ran, so detached compiler trees and the temporary root could outlive the verifier. The verifier now turns those signals into an abort that every owned command receives, so cleanup closes the owner and removes the root before exit. * fix(scripts): fail the hardening verifier when a signal lands outside a command Only the owned commands read the interruption signal, so a SIGINT or SIGTERM during the final cleanup or between commands was recorded and then dropped, and the verifier exited 0. After cleanup settles, the verifier now throws the interruption reason. A failure the operation or its cleanup already raised still leaves first and is not replaced. * fix(native): fail Mach-O slices with a malformed encryption command The hardening reader turned every malformed status from the shared encryption reader into an unknown `encrypted` row, so a short LC_ENCRYPTION_INFO_64 or an encrypted range past the slice still left the slice parsed with a full report. Only two conflicting encryption commands stay an unknown row now. Any other encryption defect fails the slice like other structural command failures. * fix(native): ignore STB_LOCAL undefined ELF symbols as imports A local undefined __stack_chk_fail or __memcpy_chk is never resolved against another object, so it does not establish an external import. Skip STB_LOCAL bindings when reading protector signs, and give the fixture's positive symbols STB_GLOBAL binding. --------- Co-authored-by: Matt Van Horn <455140+mvanhorn@users.noreply.github.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
39 KiB
English · 简体中文 · 繁體中文 · 日本語 · 한국어 · Türkçe · Русский · Tiếng Việt · ไทย · Deutsch · Español · Français · Українська · Polski · Português (Brasil) · العربية · فارسی · Bahasa Indonesia · Italiano · Ελληνικά · മലയാളം · Roman Urdu · Română
REA: مهندسی معکوس هر چیزی
یک MCP برای مهندسی معکوس فایلهای باینری، برنامهها و رفتار زمان اجرا.
قابلیتی دیدهاید که دوستش دارید؟ سازوکارش را تا سطح باینری درک کنید.
وبسایت · راهنماها · نمونههای عملی
شروع سریع · REA چگونه کار میکند؟ · چه چیزهایی را میتوان تحلیل کرد؟ · نمونههای عملی · ساخت محیطهای RL · پرسشهای متداول · مستندات
npx rea-agents setup
Important
منابع رسمی REA: morluto/rea, rea.tools, rea-agents (npm). از پیوندهای نصب و انتشار در این منابع رسمی استفاده کنید. نام مشابه مخزن یا README کپیشده ثابت نمیکند که فایل دانلودی رسمی است.
قابلیتی در یک برنامه دیدهاید که میخواهید در محصول خودتان داشته باشید؟ از ایجنت خود بخواهید با REA آن را بررسی کند. ایجنت میتواند بدون دسترسی به کد منبع برنامه، نحوهٔ کار قابلیت را بررسی و توضیح دهد، شواهد را نشان دهد و نسخهای مشابه برای پروژهٔ شما بسازد.
REA ایجنت شما را به ابزارهایی برای بررسی باینریهای بومی، برنامههای JavaScript و Electron، اسمبلیهای .NET و وبسایتها متصل میکند. همین ابزارها از ترمینال نیز قابل استفادهاند. تحلیل بهصورت محلی انجام میشود و نتایج شامل شواهد و محدودیتهای پشت هر نتیجهگیری هستند.
راهاندازی، REA را در ایجنت ثبت و دستورالعملهای متناظر را نصب میکند. تحلیل بومی میتواند از Hopper، Ghidra، IDA یا Kuna موجود استفاده کند؛ نصب Hopper پس از تأیید شما ممکن است. تحلیل ایستای JavaScript به موتور تحلیل بومی نیاز ندارد.
برای دستورالعملهای راهاندازی، راهنماهای تصویری و مطالعات موردی واقعی، به وبسایت REA مراجعه کنید.
شروع سریع
در Linux، اجرای Ghidra، JADX و ابزارهای firmware و تحلیل ایستای JavaScript/Electron برای بررسی مالکیت فرایندها به ps سازگار با procps در PATH مربوط به REA نیاز دارد. راهکارها در پیشنیاز Linux آمدهاند.
ایجنت خود را راهاندازی کنید
پس از نصب Node.js و npm، دستور زیر را اجرا کنید:
npx rea-agents setup
ایجنتهای موردنظر را انتخاب کنید، تغییرات پیشنهادی را بررسی و تأیید کنید. فرایند راهاندازی، سرور MCP مربوط به REA و دستورالعملهای گردشکار متناظر را اضافه میکند و از پیکربندی موجود نسخهٔ پشتیبان میگیرد. پس از آن ایجنت خود را مجدداً راهاندازی کنید.
راهاندازی از Claude Code، Codex، Cursor، Gemini CLI، Grok Build و ایجنتهای دیگر پشتیبانی میکند. برای پیکربندی ارائهدهنده و ثبت دستی MCP، نصب و راهاندازی را ببینید.
MCP بهطور پیشفرض از schema ورودی فشرده استفاده میکند. برای راهنمای کامل فیلدها و اعتبارسنجی تودرتو، در ثبت MCP مقدار REA_MCP_INPUT_SCHEMA_PROFILE=full را تنظیم کنید. هر دو حالت همهٔ ابزارها و اعتبارسنجی استاندارد یکسان سرور را نگه میدارند؛ راهنمای قراردادهای MCP را ببینید.
از ایجنت خود بپرسید
بررسی کن جستوجو در برنامهٔ Notes چگونه کار میکند، شواهدش را نشان بده و قابلیتی مشابه برای پروژهٔ من بساز.
بهجای Notes، نام برنامهٔ هدف و قابلیتی را قرار دهید که میخواهید درک کنید.
استفاده از ترمینال
برای بررسی پوشهٔ استخراجشدهٔ یک برنامهٔ JavaScript/Electron یا فایل ASAR:
npx -y rea-agents@latest analyze-javascript-application /absolute/path/to/app --json
نتیجه شامل ماژولها، importها، مرزهای Electron و شواهد مربوط به آنهاست. مسیر را با مسیر برنامهٔ هدف جایگزین کنید؛ مثلاً در ویندوز "D:/apps/example".
برای نصب دستور rea جهت استفادهٔ مداوم:
npm install --global rea-agents
rea --help
برای تحلیل بومی ابتدا یک ارائهدهنده پیکربندی کنید. برای دستورات بومی، انتخاب ارائهدهنده، snapshotها و اسکریپتنویسی، راهنمای CLI و شواهد را ببینید.
بهروزرسانی REA
REA بهسرعت تغییر میکند و نسخههای جدید معمولاً شامل رفع اشکالهای متعددی هستند. نصب خود را بهروز نگه دارید.
برای CLI نصبشده از طریق npm install --global / bun add --global:
rea update
rea --update نام مستعار rea update با همان گزینههای عمومی خروجی است. فرمانهای بهروزرسانی در مجموع حداکثر 4 MiB از stdout/stderr را نگه میدارند. پاسخ فرادادهٔ بزرگتر پس از پایان فرمان رد میشود؛ نصبهای پرخروجی تشخیصهای محدود دارند. نمایش پیشرفت فشار برگشتی ترمینال را رعایت و تا پایان نوشتنهای ارسالشده صبر میکند.
بهروزرسانی سراسری با Bun به Bun 1.2.17 یا جدیدتر نیاز دارد. پیش از اجرای rea update نسخههای قدیمیتر Bun را دستی ارتقا دهید.
برای بهروزرسانی ثبت ایجنتها و skill، دستور setup نمایشدادهشده توسط بهروزرسانی را اجرا کنید.
اگر از npx استفاده میکنید، راهاندازی ایجنت را با دستور زیر بهروز کنید:
npx rea-agents@latest setup
تغییرات راهاندازی را بررسی کنید و ایجنت را دوباره اجرا کنید. برای اجرای یکبارهٔ دستورات CLI، از npx rea-agents@latest و سپس دستور موردنظر استفاده کنید.
با Bun، بهجای npx rea-agents@latest از bunx rea-agents@latest استفاده کنید.
REA چگونه کار میکند؟
ایجنت شما از طریق MCP، REA را فراخوانی میکند تا هدف را بررسی و کد مرتبط را ردیابی کند. REA یافتهها را همراه با شواهد برمیگرداند. ایجنت از این نتایج برای طرح پرسشهای تکمیلی، توضیح رفتار یا نوشتن و آزمایش یک پیادهسازی استفاده میکند. دستورات CLI نیز از همین گردشکارها بهره میبرند.
چه چیزهایی را میتوان تحلیل کرد؟
REA به Node.js 22.x (>=22.23.4)، 24.x (>=24.22.1) یا 26+ (>=26.12.1)، بههمراه npm نیاز دارد. ابزارهای اضافی و پشتیبانی سیستم میزبان به نوع هدف بستگی دارند:
| هدف | خروجی REA | پیشنیازها و راهنما |
|---|---|---|
| باینریهای بومی | شبهکد، اسمبلی، رشتهها، نمادها، فراخوانیها و ارجاعات | Hopper، Ghidra، IDA یا Kuna؛ تحلیل بومی |
| ساختار ELF آفلاین | بخشها، سگمنتها، نمادها و relocationهای اصلی و گزینههای احتمالی کاهش آسیبپذیری ایستا | pwntools تأمینشده توسط فراخواننده روی Linux x64؛ تشخیص باینری |
| PE certificates | Authenticode WIN_CERTIFICATE entries and PKCS#7 signer/X.509 identity fields | Built-in static PE inspection; PE certificates |
| PE imports | Import and delay-load DLL names, ordinals, IAT RVAs and pefile import hash | Built-in static PE inspection; PE imports |
| بایتکد EVM | selectorهای dispatch، offsetهای بایتی، آرگومانهای استنباطشده و قابلیت تغییر وضعیت | دادهٔ خام/hex محلی روی Linux x64؛ راهنمای EVM آفلاین |
| Rust binaries | Embedded cargo-auditable dependency list | Rust binaries |
| ELF notes | PT_NOTE/SHT_NOTE owners, types, GNU build-id and ABI-tag fields | Built-in static ELF inspection; ELF notes |
| Binary hardening | PIE, NX, RELRO, CFG and related header flags for ELF, PE and Mach-O | Built-in static header inspection; binary hardening |
| Apple IPS crashes | .ips metadata, threads, images, registers and crash classes | Built-in static JSON inspection; Apple IPS |
| Linux kernel modules | .modinfo keys, __versions CRCs, this_module presence, and signature trailer | Built-in static ELF inspection; kernel modules |
| Erlang BEAM | IFF chunks, atoms, exports, and tables | Built-in static BEAM inspection; Erlang BEAM |
| کرشهای ثبتشدهٔ لینوکس | یادداشتهای خام، رجیسترها/سیگنالهای تمام threadهای ثبتشده و گزینههای احتمالی نگاشت | pwntools تأمینشده توسط فراخواننده روی Linux x64؛ GDB/pwndbg اختیاری؛ کرشهای ثبتشده |
| نصبهای دسکتاپ | نامزدهای زمان اجرا، فایلهای شاهد، نشانههای مؤلفهها و مراحل بعدی | بررسی محدود پوشهها و سرآیندها;برنامههای دسکتاپ |
| JavaScript / Electron | ماژولها، importها، source mapها، مسیرها، IPC و ارتباط افزونههای بومی | Node.js و npm؛ تحلیل برنامه; Linux: procps ps |
| وبسایتها | ساختار صفحه، اسکریپتها، مشاهدات شبکه و اسکرینشاتهای درخواستی | مرورگر مبتنی بر Chrome؛ تحلیل مرورگر |
| دادههای ضبطشدهٔ شبکه | درخواستها، پاسخها، payloadهای آشکارشده و مکان آنها در منبع | HAR / Fiddler Everywhere SAZ؛ ابزار mitmdump در لینوکس برای ضبطهای بومی mitmproxy؛ راهنمای ضبط شبکه |
| اسمبلیهای .NET | فراداده، دستورالعملهای CIL، وابستگیهای بومی اعلامشده و مقایسهٔ buildها | بررسی ایستا؛ راهنمای کد مدیریتشده |
| PyInstaller | CArchive, PYZ, Python bytecode | Static inspection; Python packaged applications |
| فایلهای APK اندروید | تعاریف Manifest، کلاسها، متدهای دیکامپایلشده و ارجاعات | JADX بدون رابط گرافیکی و JDK کامل در Linux/macOS/Windows x64؛ راهنمای اندروید |
| دستگاههای اندروید | دستگاهها، بستهها، فرایندها، لاگها، دامپها، اسکرینشاتها و انتقال APK/فایل | adb تأمینشده توسط فراخوانکننده (شبیهساز یا دستگاه)؛ راهنمای ADB |
| پروژههای JEB | واحدهای پروژه از موتور، هشهای مصنوع و شبهکدِ نوع/متد | یک کلاینت JEB که توسط فراخوانکننده اجرا شده و MCP ارائه میدهد و با REA_JEB_MCP_URL انتخاب میشود؛ راهنمای JEB |
| منابع اندروید | مانیفست رمزگشاییشده، جداول رشتهها، زبانها و اطلاعات نسخه | راهانداز Apktool تأمینشده توسط فراخوانکننده؛ راهنمای منابع |
| برنامههای فلاتر | هش اسنپشات دارت، هش کتابخانهها به تفکیک ABI و اصالت بیلد موتور | هیچ (تحلیل ایستا APK)؛ راهنمای فلاتر |
| Firmware | ناحیهها، نتایج استخراج و تحویل به ابزارهای تحلیل بومی | Binwalk / Unblob در لینوکس؛ راهنمای Firmware |
| بستههای ضبطشده | فیلدهای منتخب، مقادیر تکراری، فیلترها و قواعد رمزگشایی | Linux: TShark 4.x + prlimit; راهنمای ضبط بسته |
| ضبط بستهها | نقاط پایانی، DNS، TLS SNI، توزیع پروتکل و درخواستهای HTTP | tshark و capinfos تأمینشده توسط فراخوانکننده؛ راهنمای pcap |
| سیگنالهای منطقی ضبطشده | توضیحات رمزگشا، بازههای نمونه و اطلاعات عیبیابی | Linux: sigrok-cli 0.7.2 + prlimit; راهنمای سیگنالها |
| بستهها و منابع | فهرست فایلها، digestها، فایلهای plist، ساختار bundle اپل و منابع استخراجشده | راهنمای آرتیفکت و JavaScript، برنامههای اپل |
| رفتار فرایند | خروجی ترمینال، تعاملات، وضعیت خروج، مشاهدات سیستم فایل و مقایسهٔ اجراها | Linux/macOS با PTY بومی؛ ضبط فرایند |
| باینریهای Go | نسخهٔ کامپایلر تعبیهشده، ماژولها، جایگزینیها و تنظیمات ساخت | بررسی ایستای داخلی ELF/PE/thin Mach-O; نصب Go لازم نیست |
| پایگاههای SQLite | جدولها، ستونها، ایندکسها، نماها، تریگرها و سطرهای انتخابشدهٔ جدولهای عادی | snapshot محلی پایگاه/WAL؛ Node.js 24.x >=24.15 یا 26+ با محدودیتهای بومی SQLite |
| اشیای کد GPU | هدفهای CUDA/HIP، پارامترها و منابع کرنلهای انتخابشده و متن PTX نگهداریشده | بررسی ایستای داخلی ELF/PE/fatbin/CUBIN/PTX; GPU |
| فایلهای مدل | فرادادهٔ GGUF / safetensors، اعلان تانسورها و مجموعهای مشتقشده | بررسی هدر؛ هش کل فایل اختیاری است; GGUF / safetensors |
| فرادادهٔ IL2CPP | تصاویر اسمبلی، نام نوعها/متدها و بازهٔ ایندکسها در Unity global-metadata.dat | رمزگشایی ایستای نسخههای 24، 27، 29، 31 و 39؛ بدون نیاز به Unity |
| Godot PCK | فهرست و استخراج آرشیو، اطلاعات اصلی هدر/دایرکتوری و هویت محتوای انتخابشده | قالبهای ایستای 2، 3 و 4؛ بدون نیاز به Godot |
| مصنوعات WASM | اعتبارسنجی، بخشها، فرم دقیق WAT ورودی/خروجی و WAT رمزگشاییشده | تهیهشده توسط کاربر WABT 1.0.42; inspect_wasm_artifact |
| امضاهای APK | امضاکنندگان v1/v2/v3/v3.1، اثر انگشت گواهی، چرخش کلید و سازگاری داخلی digest | بررسی ایستای داخلی; inspect_apk_signature |
بررسی ایستای JavaScript و .NET فایلهای ارائهشده را بدون اجرای برنامه میخواند. ضبط زمان اجرا، هدف انتخابشده را با مجوزهای کاربری شما اجرا میکند یا با آن تعامل دارد؛ آثار این عملیات در راهنمای مربوط به هر نوع ضبط توضیح داده شدهاند.
برای بررسی آفلاین فایلهای باینری بومی، REA از GNU objdump و Rizin نیز پشتیبانی میکند؛ این ابزارها را باید خودتان فراهم کنید. راهنمای ابزارهای مهندسی معکوس تنظیم ارائهدهندگان، فرمانهای CLI و محدودیتهای Evidence را توضیح میدهد. REA هیچیک از این دو ارائهدهنده را نصب یا بهروزرسانی نمیکند.
برای باینریهای بزرگ، مهلت شروع را با REA_GHIDRA_STARTUP_TIMEOUT_MS یا REA_HOPPER_STARTUP_TIMEOUT_MS افزایش دهید.
فرمتهای بومی و پشتیبانی سیستم میزبان بر اساس ارائهدهنده متفاوتاند. راهاندازی Hopper و Ghidra، راهنمای IDA، Kuna و پشتیبانی آزمایشی Ghidra در ویندوز را ببینید. Ghidra همچنین از تحلیل DOS شانزدهبیتی پشتیبانی میکند. برای انتخاب ارائهدهنده، به راهنمای CLI مراجعه کنید. برای قابلیتهایی که پس از آخرین انتشار npm اضافه شدهاند، وضعیت انتشار را بررسی کنید.
نمونههای عملی
DX-Ball: بازسازی محاسبهٔ موقعیت استریوی صدا
یک فراخوانی صوتی را تا تابع کمکی تبدیل موقعیت به pan دنبال کنید، دستورالعملها را بررسی کنید و شبهکد ناقص را به C تبدیل کنید. بازسازی حاصل، هر ۳٬۲۰۵ مورد آزمایش x86 اصلی را با موفقیت پشت سر میگذارد و هر ۶۳ بایت تابع کامپایلشده را دقیقاً بازتولید میکند.
Notion: ردیابی پل کلیپبورد Electron
API کلیپبورد در renderer را پیدا کنید، مسیر آن را از preload و IPC تا فرایند اصلی دنبال کنید و قالب غنی کلیپبورد را بررسی کنید.
TH04: بازیابی محاسبهٔ حلقهٔ گلوله در DOS
دستورالعملهای ۱۶بیتی بازی اصلی PC-98 را بررسی کنید، محاسبات زاویهٔ ثابت و هدفگیریشده را بازیابی کنید و کد C++ بازسازیشده را با خروجی کامپایلر تاریخی مقایسه کنید.
ساخت محیطهای RL با REA
یک نشست برنامهٔ وب را ضبط کنید، API آن را به ابزار تبدیل کنید و محیطی برای عامل هوش مصنوعی صادر کنید. آن را با AgentEnv اجرا کنید و کارها و بررسی پاداش را برای آموزش RL یا ارزیابی اضافه کنید.
راهنمای ساخت محیط · نمایش را در X ببینید
اگر از REA برای بررسی موضوع جالبی استفاده کردهاید، خوشحال میشویم آن را به اشتراک بگذارید. یک issue یا pull request ثبت کنید و هدف، پرسش خود، نقش REA و یافتههایتان را توضیح دهید.
ساخت محیطهای RL
محیطی محلی بسازید تا عامل هوش مصنوعی بدون اجرای برنامهٔ اصلی، کارهایی مثل پیدا کردن یک مسئله یا ساخت پوشه را تمرین کند. از آن برای یادگیری تقویتی (RL) یا سنجش توانایی عامل در انجام کارها استفاده کنید.
REA درخواستها و پاسخهای ضبطشدهٔ API را به ابزارهایی تبدیل میکند که عامل میتواند فراخوانی کند. محیط از دادههای ضبطشده استفاده میکند و فقط تغییراتی را پشتیبانی میکند که اثرشان در ضبط تأیید شده باشد.
پس از راهاندازی REA در عامل، نشانی نمونه و کارهای مربوط به پوشه را با موارد خودتان جایگزین کنید:
با REA از برنامهٔ وب آزمایشی من در این نشانی یک محیط RL بساز:
http://127.0.0.1:3000
فهرست کردن، ساختن، تغییر نام و حذف پوشهها را پوشش بده. میتوانی پوشههای
آزمایشی بسازی و حذف کنی، اما دادههای موجود را تغییر نده.
در پوشهای به نام my-env ذخیره کن، عملیات قابل استفاده را بررسی کن و روش اجرا را بگو.
استفاده از خط فرمان
اگر فایل ضبط درخواستها و پاسخهای برنامه در مرورگر را دارید، از این فرمانها استفاده کنید. اجرای نتیجه به AgentEnv و Docker هم نیاز دارد.
rea environment-build ./session.har ./my-env --name my-env --json
agent-env run ./my-env
REA محیطی آمادهٔ اجرا همراه با یک آزمون ساده برای بررسی شروع به کار و پاسخگویی آن صادر میکند. آن را به چارچوب RL متصل کنید تا اهداف کارها و بررسی پاداش را تعریف و آموزش را اجرا کنید.
راهنمای ساخت محیط · مرجع محیطها · نمایش را در X ببینید
پرسشهای متداول
کدام ایجنتها میتوانند از REA استفاده کنند؟
هر ایجنتی که از سرورهای MCP محلی پشتیبانی کند. فرایند setup، ایجنتهای پشتیبانیشده را پیکربندی میکند؛ سایر کلاینتها میتوانند از ثبت دستی MCP استفاده کنند.
آیا به Hopper، Ghidra، IDA یا Kuna نیاز دارم؟
تحلیل عمیق بومی به یکی از آنها نیاز دارد. بررسی ایستای JavaScript و .NET بدون موتور تحلیل بومی کار میکند. setup میتواند با تأیید شما Hopper را نصب کند؛ Ghidra، IDA و Kuna از نصبهای موجود شما استفاده میکنند. راهاندازی ارائهدهنده را ببینید.
آیا باید ابتدا Hopper را اجرا کنم؟
REA زمانی که عملیاتی به Hopper نیاز داشته باشد آن را اجرا میکند. در macOS، ممکن است هنگام نخستین اجرا پنجرهای برای انتخاب حالت آزمایشی یا فعالسازی مجوز نمایش داده شود. راهاندازی Hopper و رفع اشکال را ببینید.
نصب skill از skills.sh چه کاری انجام میدهد؟
این skill دستورالعملهای بررسی را برای ایجنت فراهم میکند. برای ثبت سرور MCP مربوط به REA و نصب دستورالعملهای متناظر، npx rea-agents setup را اجرا کنید و سپس ایجنت را مجدداً راهاندازی کنید. نصب مستقل skill را ببینید.
REA چه نوع کدی برمیگرداند؟
تحلیل بومی، شبهکد و اسمبلی برمیگرداند. تحلیل JavaScript/Electron ماژولها و روابط میان آنها را بازیابی میکند. ایجنت شما از این یافتهها برای نوشتن و آزمایش یک پیادهسازی استفاده میکند؛ نمونههای عملی مثالهای گامبهگام ارائه میدهند.
آیا REA برنامهٔ من را آپلود میکند؟
REA اهداف را بهصورت محلی تحلیل میکند. ایجنت شما نتایج ابزارها را دریافت میکند و ارائهدهندهٔ مدل آن سیاست مستقل خود را دربارهٔ دادهها دارد.
اگر با خطا مواجه شدم چه کنم؟
ابتدا بهروزرسانی کنید؛ ممکن است مشکل در نسخهای جدید رفع شده باشد.
برای CLI نصبشده با npm:
rea update
برای راهاندازی ایجنت با npx:
npx rea-agents@latest setup
اگر از ایجنت استفاده میکنید، بهروزرسانی راهاندازی را تکمیل و ایجنت را مجدداً اجرا کنید. همان کار را دوباره امتحان کنید. اگر مشکل ادامه داشت، یک issue ثبت کنید و نسخهٔ REA، نوع هدف، مراحل بازتولید و خروجی خطا را ذکر کنید.
مستندات
از راهنماهای عملی وبسایت شروع کنید. برای گزینههای دقیق، پیشنیازها و قراردادهای خروجی:
- نصب و راهاندازی: ثبت ایجنت، پیکربندی ارائهدهنده، بهروزرسانی و حذف نصب.
- آمادگی و رفع اشکال: عیبیابی یک ایجنت یا موتور تحلیل.
- CLI و شواهد: دستورات، انتخاب ارائهدهنده، snapshotها، ورود/خروج داده و وضعیتهای خروج.
- قراردادهای MCP و پرامپتهای ایجنت: نتایج ابزارها، نشستها و بررسیهای هدایتشده.
- فهرست ابزارها: فهرست تولیدشده هنگام build از ابزارها، ارائهدهندگان و دستورات CLI.
- نقشهٔ راه: برنامههای آینده و پیگیری قابلیتها.
آسیبپذیریها را از طریق SECURITY.md گزارش کنید.
تاریخچهٔ ستارهها
🎉 ۴۰۰٬۰۰۰ ستارهٔ GitHub — سپاسگزاریم!
از همهٔ کسانی که از REA استفاده میکنند، خطاها را گزارش میدهند، قابلیتهای جدید پیشنهاد میکنند، buildها را آزمایش میکنند و در بهبود پروژه مشارکت دارند سپاسگزاریم.
سلب مسئولیت
برای راهنمای استفادهٔ مسئولانه، DISCLAIMER.md را ببینید.
REA برای پژوهش، آموزش، تعاملپذیری، حفظ نرمافزار و تحلیل نرمافزارهایی است که مالک آنها هستید یا اجازهٔ بررسی آنها را دارید، در چارچوب قانون.
The project's position on illegal or unauthorized use covers all REA versions, distribution channels, and platforms; each copy retains its applicable licenses.
مشارکت
از کمک شما به REA استقبال میکنیم! برای گزارش خطا یا پیشنهاد قابلیت، یک issue باز کنید یا برای بهبود کد و مستندات pull request بفرستید.
برای راهاندازی محیط توسعه و بررسیها، CONTRIBUTING.md، برای مراحل اعتبارسنجی آزمایشها و برای ساختار پروژه نقشهٔ معماری را ببینید.
مجوز
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.
