26 KiB
English · 简体中文 · 繁體中文 · 日本語 · 한국어 · Türkçe · Русский · Tiếng Việt · ไทย · Deutsch · Español · Français · Українська · Polski · Português (Brasil) · العربية · فارسی · Bahasa Indonesia · Italiano
REA: مهندسی معکوس هر چیزی
یک MCP برای مهندسی معکوس فایلهای باینری، برنامهها و رفتار زمان اجرا.
قابلیتی دیدهاید که دوستش دارید؟ سازوکارش را تا سطح باینری درک کنید.
وبسایت · راهنماها · نمونههای عملی
شروع سریع · REA چگونه کار میکند؟ · چه چیزهایی را میتوان تحلیل کرد؟ · نمونههای عملی · پرسشهای متداول · مستندات
npx rea-agents setup
به انجمن مهندسی معکوس بپیوندید دیسکورد · پرسش و پاسخ · نمایش دستاوردها |
قابلیتی در یک برنامه دیدهاید که میخواهید در محصول خودتان داشته باشید؟ از ایجنت خود بخواهید با REA آن را بررسی کند. ایجنت میتواند بدون دسترسی به کد منبع برنامه، نحوهٔ کار قابلیت را بررسی و توضیح دهد، شواهد را نشان دهد و نسخهای مشابه برای پروژهٔ شما بسازد.
REA ایجنت شما را به ابزارهایی برای بررسی باینریهای بومی، برنامههای JavaScript و Electron، اسمبلیهای .NET و وبسایتها متصل میکند. همین ابزارها از ترمینال نیز قابل استفادهاند. تحلیل بهصورت محلی انجام میشود و نتایج شامل شواهد و محدودیتهای پشت هر نتیجهگیری هستند.
فرایند راهاندازی، REA را در ایجنت شما ثبت میکند و دستورالعملهای گردشکار متناظر را نصب میکند. تحلیل بومی میتواند از نصب موجود Hopper یا Ghidra استفاده کند؛ همچنین راهاندازی میتواند با تأیید شما Hopper را بهصورت اختیاری نصب کند. تحلیل ایستای JavaScript به هیچیک از این موتورهای تحلیل نیاز ندارد.
برای دستورالعملهای راهاندازی، راهنماهای تصویری و مطالعات موردی واقعی، به وبسایت REA مراجعه کنید.
شروع سریع
ایجنت خود را راهاندازی کنید
پس از نصب Node.js و npm، دستور زیر را اجرا کنید:
npx rea-agents setup
ایجنتهای موردنظر را انتخاب کنید، تغییرات پیشنهادی را بررسی و تأیید کنید. فرایند راهاندازی، سرور MCP مربوط به REA و دستورالعملهای گردشکار متناظر را اضافه میکند و از پیکربندی موجود نسخهٔ پشتیبان میگیرد. پس از آن ایجنت خود را مجدداً راهاندازی کنید.
راهاندازی از Claude Code، Codex، Cursor، Gemini CLI، Grok Build و ایجنتهای دیگر پشتیبانی میکند. برای پیکربندی ارائهدهنده و ثبت دستی 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:
rea update
برای بهروزرسانی ثبت ایجنتها و skill، دستور setup نمایشدادهشده توسط بهروزرسانی را اجرا کنید.
اگر از npx استفاده میکنید، راهاندازی ایجنت را با دستور زیر بهروز کنید:
npx rea-agents@latest setup
تغییرات راهاندازی را بررسی کنید و ایجنت را دوباره اجرا کنید. برای اجرای یکبارهٔ دستورات CLI، از npx rea-agents@latest و سپس دستور موردنظر استفاده کنید.
REA چگونه کار میکند؟
ایجنت شما از طریق MCP، REA را فراخوانی میکند تا هدف را بررسی و کد مرتبط را ردیابی کند. REA یافتهها را همراه با شواهد برمیگرداند. ایجنت از این نتایج برای طرح پرسشهای تکمیلی، توضیح رفتار یا نوشتن و آزمایش یک پیادهسازی استفاده میکند. دستورات CLI نیز از همین گردشکارها بهره میبرند.
چه چیزهایی را میتوان تحلیل کرد؟
REA به Node.js 22.x (>=22.19)، 24.x (>=24.11) یا 26+، بههمراه npm نیاز دارد. ابزارهای اضافی و پشتیبانی سیستم میزبان به نوع هدف بستگی دارند:
| هدف | خروجی REA | پیشنیازها و راهنما |
|---|---|---|
| باینریهای بومی | شبهکد، اسمبلی، رشتهها، نمادها، فراخوانیها و ارجاعات | Hopper، Ghidra یا IDA؛ تحلیل بومی |
| ساختار ELF آفلاین | بخشها، سگمنتها، نمادها و relocationهای اصلی و گزینههای احتمالی کاهش آسیبپذیری ایستا | pwntools تأمینشده توسط فراخواننده روی Linux x64؛ تشخیص باینری |
| بایتکد EVM | selectorهای dispatch، offsetهای بایتی، آرگومانهای استنباطشده و قابلیت تغییر وضعیت | دادهٔ خام/hex محلی روی Linux x64؛ راهنمای EVM آفلاین |
| کرشهای ثبتشدهٔ لینوکس | یادداشتهای خام، رجیسترها/سیگنالهای تمام threadهای ثبتشده و گزینههای احتمالی نگاشت | pwntools تأمینشده توسط فراخواننده روی Linux x64؛ GDB/pwndbg اختیاری؛ کرشهای ثبتشده |
| JavaScript / Electron | ماژولها، importها، source mapها، مسیرها، IPC و ارتباط افزونههای بومی | Node.js و npm؛ تحلیل برنامه |
| وبسایتها | ساختار صفحه، اسکریپتها، مشاهدات شبکه و اسکرینشاتهای درخواستی | مرورگر مبتنی بر Chrome؛ تحلیل مرورگر |
| دادههای ضبطشدهٔ شبکه | درخواستها، پاسخها، payloadهای آشکارشده و مکان آنها در منبع | HAR؛ ابزار mitmdump در لینوکس برای ضبطهای بومی mitmproxy؛ راهنمای ضبط شبکه |
| اسمبلیهای .NET | فراداده، دستورالعملهای CIL، وابستگیهای بومی اعلامشده و مقایسهٔ buildها | بررسی ایستا؛ راهنمای کد مدیریتشده |
| فایلهای APK اندروید | تعاریف Manifest، کلاسها، متدهای دیکامپایلشده و ارجاعات | JADX بدون رابط گرافیکی و JDK کامل در Linux/macOS/Windows x64؛ راهنمای اندروید |
| دستگاههای اندروید | دستگاهها، بستهها، فرایندها، لاگها، دامپها، اسکرینشاتها و انتقال APK/فایل | adb تأمینشده توسط فراخوانکننده (شبیهساز یا دستگاه)؛ راهنمای ADB |
| پروژههای JEB | واحدهای پروژه از موتور، هشهای مصنوع و شبهکدِ نوع/متد | یک کلاینت JEB که توسط فراخوانکننده اجرا شده و MCP ارائه میدهد و با REA_JEB_MCP_URL انتخاب میشود؛ راهنمای JEB |
| منابع اندروید | مانیفست رمزگشاییشده، جداول رشتهها، زبانها و اطلاعات نسخه | راهانداز Apktool تأمینشده توسط فراخوانکننده؛ راهنمای منابع |
| Firmware | ناحیهها، نتایج استخراج و تحویل به ابزارهای تحلیل بومی | Binwalk / Unblob در لینوکس؛ راهنمای Firmware |
| بستهها و منابع | فهرست فایلها، digestها، فایلهای plist، ساختار bundle اپل و منابع استخراجشده | راهنمای آرتیفکت و JavaScript، برنامههای اپل |
| رفتار فرایند | خروجی ترمینال، تعاملات، وضعیت خروج، مشاهدات سیستم فایل و مقایسهٔ اجراها | Linux/macOS با PTY بومی؛ ضبط فرایند |
بررسی ایستای JavaScript و .NET فایلهای ارائهشده را بدون اجرای برنامه میخواند. ضبط زمان اجرا، هدف انتخابشده را با مجوزهای کاربری شما اجرا میکند یا با آن تعامل دارد؛ آثار این عملیات در راهنمای مربوط به هر نوع ضبط توضیح داده شدهاند.
فرمتهای بومی و پشتیبانی سیستم میزبان بر اساس ارائهدهنده متفاوتاند. راهاندازی Hopper و Ghidra، راهنمای IDA و پشتیبانی آزمایشی Ghidra در ویندوز را ببینید. Ghidra همچنین از تحلیل DOS شانزدهبیتی پشتیبانی میکند. برای انتخاب ارائهدهنده، به راهنمای CLI مراجعه کنید. برای قابلیتهایی که پس از آخرین انتشار npm اضافه شدهاند، وضعیت انتشار را بررسی کنید.
نمونههای عملی
DX-Ball: بازسازی محاسبهٔ موقعیت استریوی صدا
یک فراخوانی صوتی را تا تابع کمکی تبدیل موقعیت به pan دنبال کنید، دستورالعملها را بررسی کنید و شبهکد ناقص را به C تبدیل کنید. بازسازی حاصل، هر ۳٬۲۰۵ مورد آزمایش x86 اصلی را با موفقیت پشت سر میگذارد و هر ۶۳ بایت تابع کامپایلشده را دقیقاً بازتولید میکند.
Notion: ردیابی پل کلیپبورد Electron
API کلیپبورد در renderer را پیدا کنید، مسیر آن را از preload و IPC تا فرایند اصلی دنبال کنید و قالب غنی کلیپبورد را بررسی کنید.
TH04: بازیابی محاسبهٔ حلقهٔ گلوله در DOS
دستورالعملهای ۱۶بیتی بازی اصلی PC-98 را بررسی کنید، محاسبات زاویهٔ ثابت و هدفگیریشده را بازیابی کنید و کد C++ بازسازیشده را با خروجی کامپایلر تاریخی مقایسه کنید.
اگر از REA برای بررسی موضوع جالبی استفاده کردهاید، خوشحال میشویم آن را به اشتراک بگذارید. یک issue یا pull request ثبت کنید و هدف، پرسش خود، نقش REA و یافتههایتان را توضیح دهید.
پرسشهای متداول
کدام ایجنتها میتوانند از REA استفاده کنند؟
هر ایجنتی که از سرورهای MCP محلی پشتیبانی کند. فرایند setup، ایجنتهای پشتیبانیشده را پیکربندی میکند؛ سایر کلاینتها میتوانند از ثبت دستی MCP استفاده کنند.
آیا به Hopper، Ghidra یا IDA نیاز دارم؟
تحلیل عمیق بومی به یکی از آنها نیاز دارد. بررسی ایستای JavaScript و .NET بدون موتور تحلیل بومی کار میکند. setup میتواند با تأیید شما Hopper را نصب کند؛ Ghidra و IDA از نصبهای موجود شما استفاده میکنند. راهاندازی ارائهدهنده را ببینید.
آیا باید ابتدا 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ها را آزمایش میکنند و در بهبود پروژه مشارکت دارند سپاسگزاریم.
سلب مسئولیت
REA ابزارهایی برای پژوهش، تحلیل و بازسازی قانونی در حوزهٔ مهندسی معکوس فراهم میکند. مسئولیت دریافت مجوزهای لازم و رعایت قوانین مربوط بر عهدهٔ شماست. این پروژه استفادهٔ غیرقانونی یا بدون مجوز را تأیید نمیکند.
مشارکت
از کمک شما به REA استقبال میکنیم! برای گزارش خطا یا پیشنهاد قابلیت، یک issue باز کنید یا برای بهبود کد و مستندات pull request بفرستید.
برای راهاندازی محیط توسعه و بررسیها، CONTRIBUTING.md، برای مراحل اعتبارسنجی آزمایشها و برای ساختار پروژه نقشهٔ معماری را ببینید.
