تصور کنید میخواهید قابلیتی خاص از یک نرمافزار بسته را در محصول خود پیاده کنید، اما هیچ دسترسی به کد منبع ندارید. حالا با REA، میتوانید از یک عامل هوش مصنوعی بخواهید این ویژگی را کالبدشکافی کرده و آن را از صفر برای شما بازسازی کند. این چارچوب، عاملها را از نویسندگان سادهی کد به متخصصان مهندسی معکوس تبدیل میکند و پلی مستقیم میان مدلهای زبانی و ابزارهای تحلیل سطح پایین ایجاد میکند. اگر در هر برنامهای قابلیتی را میبینید که میخواهید در محصول خودتان داشته باشید، میتوانید از عامل خود بخواهید با استفاده از REA آن را بررسی کند. این سیستم میتواند برنامه را بدون داشتن سورسکد بازرسی کند، توضیح دهد که آن ویژگی چگونه کار میکند، شواهد را ارائه دهد و در نهایت نسخهای از آن را برای پروژه شما بسازد.
مهندسی معکوس (Reverse Engineering) — شبیه به باز کردن یک ساعت قدیمی برای فهمیدن نحوهی کار چرخدندهها بدون داشتن نقشهی سازنده — بهطور سنتی فرآیندی دستی و دشوار بود که تخصص عمیقی در زبان اسمبلی و دکامپایلرها میطلبید. اگرچه هوش مصنوعی در توضیح تکههای کد موفق بود، اما عاملها فاقد توانایی پیمایش مستقل در ساختار یک فایل باینری یا ردیابی جریانهای اجرا در لایههای مختلف یک اپلیکیشن بودند. همانطور که در تحلیلهای قبلی ما دربارهی امنیت مدلهای بازمتن اشاره کردیم، نبودِ اتصال به ابزارهای خارجی، عاملها را در معرض توهم قرار میداد. REA با پیادهسازی پروتکل زمینهٔ مدل (MCP) — که مثل یک مترجم استاندارد، اجازه میدهد هوش مصنوعی با نرمافزارهای مختلف حرف بزند — این مشکل را حل کرده است و به عاملها اجازه میدهد ابزارهای تحلیلی خاصی را فراخوانی کرده و یافتههای مبتنی بر شواهد دریافت کنند.
پل فنی و سازگاری
طبق مستندات مخزن گیتهاب که در ۱۲ اکتبر ۲۰۲۶ بهروزرسانی شده است، REA بهعنوان یک سرور MCP عمل میکند و با عاملهایی نظیر Claude Code، Cursor، Gemini CLI، Codex و Grok Build سازگار است. پس از نصب، عامل میتواند مجموعهای از ابزارهای تخصصی را برای بازرسی هدف فعال کند، بدون اینکه به کد منبع اصلی نیاز داشته باشد. عامل از طریق MCP، REA را برای بازرسی هدف و ردیابی کدهای مرتبط فراخوانی میکند و یافتهها را به همراه شواهد دریافت مینماید. سپس از این اطلاعات برای پرسیدن سوالات تکمیلی، توضیح رفتار برنامه یا نوشتن و تست یک پیادهسازی جدید استفاده میکند.
برای فایلهای باینری بومی (Native Binaries)، REA با موتورهای استانداردی مثل Hopper، Ghidra و IDA ادغام میشود. عامل میتواند درخواستهای مربوط به شبهکد (Pseudocode)، رشتههای اسمبلی، نمادها (Symbols) و مراجع فراخوانی (Call References) را ارسال کند تا نقشهی عملکرد یک تابع را ترسیم کند. در فرآیند نصب، سیستم میتواند با تایید کاربر Hopper را نصب کند، در حالی که برای Ghidra و IDA از نسخههای نصبشده روی سیستم استفاده میکند. همچنین Ghidra از تحلیل سیستمهای ۱۶ بیتی DOS پشتیبانی میکند. برای باینریهای حجیم، کاربران میتوانند مهلت زمانبندی شروع ارائهدهنده را با استفاده از متغیرهای محیطی REA_GHIDRA_STARTUP_TIMEOUT_MS یا REA_HOPPER_STARTUP_TIMEOUT_MS افزایش دهند.
در سیستمهای لینوکس x64، این ابزار حتی میتواند از pwntools برای تحلیل آفلاین ساختار ELF استفاده کند؛ این تحلیل شامل بخشها (Sections)، سگمنتها، نمادهای اصلی/جابجاییها (Relocations) و کاندیداهای کاهش اثرات حمله (Static Mitigation Candidates) است. علاوه بر این، تشخیصهای مربوط به کرشهای لینوکس که شامل یادداشتهای خام و رجیسترها/سیگنالها برای هر رشته (Thread) ضبط شده است را تحلیل میکند. این تشخیصها ممکن است شامل کاندیداهای نقشهبرداری اختیاری نیز باشند.
پشتیبانی گسترده از اهداف
پشتیبانی REA تنها به کدهای ماشین محدود نمیشود و طیف گستردهای از پشتههای نرمافزاری مدرن را پوشش میدهد. جزئیات بازگشتیها و الزامات برای اهداف مختلف به شرح زیر است:
- جاوااسکریپت و Electron: بازیابی ماژولها، ایمپورتها، نقشههای منبع (Source Maps)، مسیرها (Routes)، IPC و روابط افزونههای بومی. این بخش به Node.js و npm نیاز دارد.
- مجموعههای .NET: بازرسی استاتیک دستورالعملهای CIL، متادادهها، وابستگیهای بومی اعلام شده و مقایسههای بیلد. برای این مورد نیازی به محیط اجرا (Runtime) نیست.
- برنامههای اندروید (APK): از طریق نسخه headless ابزار JADX و یک JDK کامل روی لینوکس/مک/ویندوز x64، متدها و مراجع را دکامپایل میکند. همچنین از یک لانچر Apktool برای رمزگشایی مانیفستها، جداول رشتهها، لوکالها و حقایق مربوط به نسخه استفاده میکند.
- دستگاههای اندروید: از adb ارائه شده توسط کاربر (شبیهساز یا سختافزار) برای دسترسی به پکیجها، فرآیندها، لاگها، دامپها، کپچر صفحه و انتقال فایلها استفاده میکند.
- وبسایتها و شبکه: از مرورگرهای خانواده کروم برای تحلیل ساختار صفحه، اسکریپتها و مشاهدات شبکه استفاده میکند. همچنین فایلهای HAR را تحلیل کرده و در لینوکس از mitmdump برای کپچرهای بومی mitmproxy جهت افشای محمولهها (Payloads) و مکانهای منبع استفاده میکند.
- فرمتهای تخصصی:
- WASM: اعتبارسنجی و استخراج فرمهای دقیق WAT ایمپورت/اکسپورت از طریق WABT 1.0.42.
- بایتکد EVM: استخراج انتخابگرهای دیسپچ (Dispatch Selectors)، آفستهای بایت و آرگومانهای استنباط شده از طریق یک حامل خام/هگز محلی در لینوکس x64.
- Flutter: پارسینگ استاتیک APK برای یافتن هشهای اسنپشات Dart و منشأ بیلد موتور.
- باینریهای Go: بازرسی استاتیک داخلی ELF/PE/thin Mach-O برای شناسایی نسخههای کامپایلر و تنظیمات بیلد؛ بدون نیاز به نصب Go.
در بخش تحلیلهای پیشرفته، REA از قابلیتهای زیر بهره میبرد:
- پروژههای JEB: دریافت واحدهای پروژه مبتنی بر موتور و شبهکد نوع/متد از طریق یک کلاینت JEB که MCP را سرو میکند (انتخاب شده با
REA_JEB_MCP_URL). - فریمورها (Firmware): نتایج استخراج و تحویل تحلیل بومی با استفاده از Binwalk یا Unblob در لینوکس.
- پکیجها/منابع: موجودی فایلها، plists و کالبدشناسی باندلهای اپل.
- رفتار فرآیند: خروجی ترمینال، مشاهدات سیستمفایل و مقایسههای اجرا در لینوکس و مکاواس با استفاده از یک PTY بومی.
مکانیسمهای تحلیل
برای تضمین دقت و ایمنی، REA بین تحلیل استاتیک و زمان اجرا (Runtime) تفکیک قائل میشود. بازرسی استاتیک جاوااسکریپت و .NET فایلهای ارائه شده را بدون اجرای برنامه میخواند. در مقابل، کپچر زمان اجرا با استفاده از مجوزهای فعلی کاربر با هدف تعامل برقرار میکند. هر راهنمای زمان اجرا، اثرات خاص این تعاملات را شرح میدهد.
برای تحلیلهای بومی، سیستم به انتخاب ارائهدهنده متکی است. در مکاواس، کاربران ممکن است در اولین اجرا با دیالوگی از سوی Hopper مواجه شوند که از آنها میخواهد حالت دمو یا لایسنس را انتخاب کنند. این مرحله باید در همان نشست کاربر، پیش از شروع عملیات CLI/MCP یا کارهای بدون نظارت، تکمیل شود. کاربران همچنین میتوانند Hopper را بهصورت دستی باز کنند تا این درخواستها را برطرف نمایند.
بازسازی در دنیای واقعی
برای اثبات کاربردی بودن، این پروژه چندین مورد مطالعاتی پیچیده را برجسته میکند. در یک مورد، REA برای بازسازی محاسبات صدای یک بازی قدیمی (DX-Ball) به کار رفت. عامل با ردیابی یک فراخوانی صوتی به کمکتابع تبدیل موقعیت به پان (Position-to-pan)، دستورالعملها را بازرسی کرد و شبهکد ناقص را به کد C تبدیل نمود. این کد در ۳۲۰۵ مورد تست x86 موفق بود و دقیقاً ۶۳ بایت کد کامپایلشده تابع را بازسازی کرد. این توانایی در تبدیل مفاهیم نظری یا کد ناقص به پیادهسازیهای اجرایی، یادآور قابلیتهای سیستم Paper2Agent در بازتولید نتایج پژوهشی است که مقالات علمی را به کدهای قابل اجرا تبدیل میکند.
مثال دیگر مربوط به اپلیکیشن Notion بود، جایی که عامل توانست پل ارتباطی کلیپبورد در Electron را از API رندرکننده، از طریق preload و IPC، تا فرآیند اصلی ردیابی کند. این امر به عامل اجازه داد تا فرمت غنی کلیپبورد مورد استفاده در این برنامه را بهطور کامل نقشهبرداری نماید.
برای نرمافزارهای قدیمی، REA محاسبات حلقه گلوله را از یک بازی ۱۶ بیتی DOS برای PC-98 (TH04) بازیابی کرد. عامل با بازرسی دستورالعملهای اصلی، محاسبات زاویه ثابت و هدفگذاری شده را بازیابی کرد و خروجی C++ بازسازی شده را با نتایج تاریخی کامپایلر مقایسه نمود.
اجرای محلی و حریم خصوصی
تمام تحلیلها بهصورت محلی روی دستگاه کاربر اجرا میشود. REA فایلهای باینری هدف را به سرور ابری آپلود نمیکند؛ در عوض، تنها شواهد استخراجشده — مانند یک بلوک خاص از اسمبلی یا لیستی از ماژولها — را به ارائهدهنده مدلِ عامل ارسال میکند. این امر تضمین میکند که بخش اصلی باینری اختصاصی روی دیسک محلی باقی بماند. با این حال، به کاربران یادآوری میشود که اگرچه REA محلی است، اما ارائهدهنده مدل آنها سیاستهای دادهای خاص خود در مورد نتایجی که به آن ارسال میشود دارد.
استقرار و گردشکار
راهاندازی REA به Node.js (نسخه ۲۲.۱۹، ۲۴.۱۱ یا ۲۶ به بالا) و npm نیاز دارد. کاربران میتوانند ابزار را بهصورت جهانی با دستور npm install --global rea-agents نصب کنند یا با npx rea-agents@latest setup آن را بهصورت آنی اجرا نمایند. فرآیند نصب، سرور MCP را ثبت کرده، دستورالعملهای گردشکار متناظر را نصب میکند و از پیکربندیهای موجود نسخه پشتیبان میگیرد. کاربران باید پس از نصب، عامل خود را ریاستارت کنند.
برای کسانی که محیط ترمینال را ترجیح میدهند، REA یک رابط خط فرمان (CLI) ارائه میدهد. دستوری مانند npx -y rea-agents@latest analyze-javascript-application /absolute/path/to/app --json میتواند یک نقشه JSON از ماژولها، ایمپورتها و مرزهای Electron یک برنامه را برگرداند. در ویندوز، میتوان از مسیری مانند D:/apps/example استفاده کرد. برای نصب دستور rea جهت استفاده منظم، کاربران میتوانند npm install --global rea-agents را اجرا کرده و از طریق rea --help به راهنما دسترسی یابند.
به دلیل تغییرات سریع REA، کاربران باید نصب خود را بهروز نگه دارند. برای کاربران Bun، بهروزرسانیهای جهانی به Bun 1.2.17 یا بالاتر نیاز دارد؛ در غیر این صورت، Bun باید بهصورت دستی ارتقا یابد. برای تازهسازی مهارتهای عامل پس از بهروزرسانی، کاربران باید دوباره دستور setup را اجرا کنند. برای دستورات تکباره CLI، میتوان از npx rea-agents@latest یا bunx rea-agents@latest استفاده کرد.
مستندات و پشتیبانی
کاربران میتوانند به راهنماهای مفصل در وبسایت REA دسترسی داشته باشند. مستندات به بخشهای کلیدی زیر تقسیم شدهاند:
- نصب و راهاندازی: پوشش ثبت عامل، پیکربندی ارائهدهنده، بهروزرسانیها و حذف نصب.
- آمادگی (Readiness): ابزارهایی برای تشخیص وضعیت یک عامل یا موتور تحلیل.
- CLI و شواهد: جزئیات دستورات، انتخاب ارائهدهنده، اسنپشاتها و وضعیتهای خروجی ایمپورت/اکسپورت.
- قراردادهای MCP: مستندات مربوط به نتایج ابزارها، نشستها و تحقیقات هدایتشده.
- کاتالوگ ابزارها: فهرستی تولید شده از تمام ابزارهای موجود، ارائهدهندگان و دستورات CLI.
- نقشه راه (Roadmap): ردیابهایی برای کارهای برنامهریزی شده و قابلیتهای جدید.
این تغییر رویکرد، عاملهای هوش مصنوعی را از حالت «حدس زدن» بر اساس دادههای آموزشی به حالت «مشاهده» بر اساس شواهد واقعی باینری منتقل میکند. با استقرار مدل در بایتهای واقعی برنامه، توهم (Hallucination) — یعنی وقتی مدل با اطمینان چیزی میگوید که اصلاً وجود ندارد — در مهندسی معکوس حذف میشود. این رویکرد مبتنی بر شواهد، مشابه تلاشهای گوگل در چارچوب RRSI برای کاهش بیشبرازش و خطاهای مدل در عاملهای هوشمند است تا دقت خروجیها را افزایش دهد.
برای توسعهدهندگان، این یعنی سد راه interoperability و حفظ نرمافزارهای قدیمی بهشدت پایین آمده است. توانایی خودکارسازی کشف APIهای مستندنشده یا منطقهای قدیمی، اجازه ادغام سریعتر و کلون کردن دقیقتر ویژگیهای پیچیده را میدهد. این پروژه تاکنون ۱۱۰ هزار ستاره در گیتهاب کسب کرده است.
گام بعدی شما
- اگر از Cursor یا Claude Code استفاده میکنید، REA را نصب کنید تا تحلیل کدهای بسته را به گردشکار خود اضافه کنید.
- برای شروع، یک اپلیکیشن ساده Electron را با CLI ابزار تحلیل کنید تا ساختار ماژولهای آن را ببینید.
- مستندات بخش MCP Contracts را در وبسایت REA بخوانید تا متوجه شوید عاملها چگونه شواهد را درخواست میکنند.
اما داستان سختافزاری این تحول حتی شگفتانگیزتر است — به تحلیل ما دربارهی تراشههای Blackwell مراجعه کنید.




گفتگو