
در دنیای توسعه نرمافزار و امنیت، ابزارهای جدیدی ظهور کردهاند که مرزهای سنتی را جابهجا میکنند. یکی از این ابزارهای پیشرو و تحولآفرین، پروژه REA یا Reverse Engineer Anything است که در اکتبر ۲۰۲۶ بهسرعت در GitHub Trending صدرنشین شد و در کمتر از یک هفته از مرز ۱۱۵,۰۰۰ ستاره گذشت. این ابزار که بهصورت متنباز (MIT License) منتشر شده، به عاملهای هوش مصنوعی (AI Agents) این قدرت را میدهد تا نرمافزارها را بدون نیاز به کد منبع اصلی، تحلیل و مهندسی معکوس کنند.
REA یک "جادو" نیست که با دادن یک برنامه، کد منبع اصلی را بازگرداند. بر اساس مستندات رسمی، REA شبهکد، نمودار ماژولها، گزارش درخواستها و شواهد پشتیبان هر ادعا را برمیگرداند و سپس عامل هوش مصنوعی رفتار نرمافزار را توضیح میدهد یا آن را بازسازی میکند. در واقع، REA یک لایه هماهنگکننده (Orchestration Layer) هوشمند است که فرآیند پیچیده مهندسی معکوس را به یک گردش کار قابل مدیریت تبدیل میکند.
REA از سه جزء اصلی تشکیل شده است که هر کدام نقش مشخصی دارند:
سرور MCP (MCP Server): نقش آن اتصال به عامل هوش مصنوعی است. در واقع پروتکل استانداردی است که به مدلهای زبانی بزرگ (LLM) اجازه میدهد تا با ابزارهای تحلیل خارجی ارتباط برقرار کنند.
Skill (مهارت / راهنما): نقش آن راهنمای گردش کار است. دستورالعملهایی است که به عامل هوش مصنوعی میگوید چه زمانی از کدام ابزار استفاده کند و چگونه شواهد را تفسیر کند.
CLI (رابط خط فرمان): امکان اجرای تحلیلها را بدون نیاز به عامل هوش مصنوعی فراهم میکند و برای اسکریپتنویسی بسیار مناسب است.
نحوه کار به این صورت است:
۱. شما از عامل هوش مصنوعی خود یک سوال میپرسید (مثلاً: "این برنامه چگونه کار میکند؟").
۲. عامل هوش مصنوعی از طریق پروتکل MCP، درخواستی را به REA ارسال میکند.
۳. REA بهصورت محلی، ابزارهای تخصصی تحلیل نرمافزار (مانند Hopper، Ghidra یا IDA) را روی هدف مورد نظر اجرا میکند.
۴. نتایج بهصورت شواهد فنی (شامل شبهکد، دستورات اسمبلی، رشتهها و ...) به عامل بازگردانده میشود تا عامل بتواند رفتار نرمافزار را توضیح دهد یا نسخهای جدید از آن را بازسازی کند.
REA از طیف گستردهای از اهداف پشتیبانی میکند. در اینجا خروجیهای ارائهشده و پیشنیازهای هر هدف را بررسی میکنیم:
فایلهای باینری بومی: خروجی شامل شبهکد، اسمبلی، رشتهها، نمادها و ارجاعات متقابل است. پیشنیاز: Hopper، Ghidra یا IDA.
برنامههای Go: خروجی شامل نسخه کامپایلر، ماژولها و تنظیمات ساخت است. بدون نیاز به ابزار اضافی.
برنامههای JavaScript و Electron: خروجی شامل ماژولها، ایمپورتها، نقشههای منبع، مسیرها و مرزهای IPC است. پیشنیاز: فقط Node.js.
وبسایتها: خروجی شامل ساختار صفحه، اسکریپتها، مشاهدات شبکه و اسکرینشات است. پیشنیاز: مرورگر مبتنی بر Chromium.
ضبطهای شبکه (HAR): خروجی شامل درخواستها، پاسخها، محمولهها (Payloads) و مکانهای منبع است. پیشنیاز: فایل HAR؛ mitmdump در لینوکس برای mitmproxy.
برنامههای .NET: خروجی شامل متادیتا، کد IL و وابستگیهای بومی است. بدون نیاز به ابزار اضافی.
برنامههای اندروید (APK): خروجی شامل مانیفست، متدهای دیکامپایلشده، لاگها و اسکرینشات است. پیشنیاز: JADX بههمراه JDK؛ adb.
فریمور (Firmware): خروجی شامل مناطق و نتایج استخراج است. پیشنیاز: Binwalk یا Unblob در لینوکس.
WASM و EVM: خروجی شامل بخشها، ایمپورتها و اکسپورتها است. پیشنیاز: WABT؛ Linux x64.
🔍 تحلیل مبتنی بر شواهد (Evidence-Based Analysis):
برخلاف پاسخهای احتمالی، REA نتایجی را برمیگرداند که شامل شواهد، سطح اطمینان و محدودیتهای تحلیل است. هر نتیجه دارای منشأ خود است: هش فایل، محدوده بایت، اشارهگرهای JSON به ضبط، و فهرست صریح آنچه تحلیل نتوانسته است اثبات کند. این ویژگی به عامل هوش مصنوعی کمک میکند تا از توهمزدگی جلوگیری کند.
🔒 حریم خصوصی و اجرای محلی:
تمام تحلیلها بهصورت محلی روی سیستم شما انجام میشود و فایلهای باینری به سرورهای ابری ارسال نمیشوند. با این حال، توجه داشته باشید که یافتهها به عامل هوش مصنوعی منتقل میشوند و ممکن است بر اساس سیاست دادهای ارائهدهنده مدل، به سرویس خارجی ارسال شوند.
⚙️ خودکارسازی فرآیند پیچیده:
REA مدیریت نصب، راهاندازی و اجرای ابزارهای مختلف تحلیل را بر عهده میگیرد و فرآیند را برای عامل هوش مصنوعی ساده میکند. این ابزار از بیش از ۱۴ عامل هوش مصنوعی مختلف پشتیبانی میکند، از جمله Claude Code، Codex، Cursor، Gemini CLI و Windsurf.
📊 تحلیل API از طریق ضبط شبکه:
REA میتواند فایلهای HAR یا ضبطهای mitmproxy را بهصورت آفلاین بخواند و درخواستها را بر اساس متد، مبدأ و الگوی مسیر گروهبندی کند. شناسههای عددی به {numeric}، UUIDها به {uuid} و تاریخها به {iso-date} تبدیل میشوند تا یک نقشه اولیه از سطح API به دست آید.
مطالعات موردی رسمی پروژه، بهترین معیار برای درک تواناییهای واقعی REA هستند:
بازسازی محاسبه صدا در بازی DX-Ball: در این مطالعه موردی، عامل هوش مصنوعی یک فراخوانی صدا را تا تابع کمکی موقعیت به پن تعقیب کرد، شبهکد ناقص را به زبان C تبدیل کرد و بازسازی نهایی در ۳,۲۰۵ تست اصلی x86 موفق شد و تمام ۶۳ بایت تابع کامپایلشده را بازتولید کرد.
ردیابی مکانیزم کلیپبورد در Notion: REA مسیر API کلیپبورد را از فرآیند Renderer، از طریق Preload و IPC، تا فرآیند اصلی Electron ردیابی کرد. این نشان میدهد که REA میتواند روابط پیچیده بین اجزای یک برنامه دسکتاپ را آشکار کند.
بازیافت محاسبات از یک بازی کلاسیک PC-98: یک مطالعه موردی دیگر، محاسبه زاویه حلقه گلوله را از دستورات ۱۶ بیتی یک بازی PC-98 دهه ۱۹۹۰ بازیابی کرد.
نکته کلیدی: این مطالعات موردی نشان میدهند که REA در سوالات دقیق و محدود درباره یک تابع یا یک مسیر داده، با قابلیت تأیید پاسخ، بهترین عملکرد را دارد. دموهای "بازسازی کل برنامه" ممکن است در ویدیو خوب به نظر برسند، اما ارزش واقعی زمانی ظاهر میشود که سوال مشخص و هدف پیچیده باشد.
برای درک بهتر جایگاه REA، آن را با دو ابزار محبوب دیگر (GhidraMCP و IDA Pro MCP) مقایسه میکنیم:
موتورهای تحلیل: REA از Hopper، Ghidra و IDA پشتیبانی میکند؛ در حالی که GhidraMCP عمدتاً روی Ghidra و IDA Pro MCP روی IDA Pro تمرکز دارند.
اهداف اضافی (فراتر از باینری): REA وبسایتها، JavaScript، .NET و اندروید را نیز پوشش میدهد، اما دو ابزار دیگر عمدتاً روی تحلیل باینریهای مربوط به موتور خود تمرکز دارند.
راهاندازی: REA نیازمند پیکربندی عامل و ارائهدهندگان خاص هدف است. GhidraMCP نیازمند افزونه Ghidra است و IDA Pro MCP نیازمند راهاندازی IDA Pro و سرور MCP است.
هزینه موتور: هزینه REA بستگی به موتور انتخابی شما دارد (Ghidra رایگان است، IDA Pro نیازمند خرید لایسنس است). GhidraMCP رایگان است، اما IDA Pro MCP نیازمند لایسنس IDA Pro است.
مناسب برای: REA برای بررسی انواع مختلف نرمافزار و فرمتها عالی است، در حالی که ابزارهای دیگر برای کسانی که گردش کارهای موجود و اختصاصی Ghidra یا IDA Pro را دارند، مناسبترند.
(نکته: اگر قبلاً منحصراً با Ghidra یا IDA Pro کار میکردید، یکپارچهسازی اختصاصی MCP آنها ممکن است برای شما کافی باشد. اما REA بهویژه زمانی مفید است که تحقیقات شما انواع مختلفی از فرمتها، برنامهها و ابزارهای تحلیل را در بر میگیرد.)
🚫 محدودیتهای فنی:
عدم بازیابی کد منبع اصلی: REA شبهکد تولید میکند، نه کد منبع اصلی. بهینهسازیهای کامپایلر و حذف نمادها بازیابی کد اولیه را غیرممکن میسازد.
وابستگی به ابزارهای تجاری: برای تحلیل باینریهای بومی، استفاده از ابزارهایی مانند Hopper، IDA Pro یا Ghidra ضروری است. REA این ابزارها را در خود جای نداده و کاربر باید مجوز استفاده از آنها را بهصورت قانونی تهیه کند.
محدودیتهای پلتفرمی: Hopper نسخه ویندوز ندارد و Ghidra روی ویندوز آزمایشی است. پشتیبانی از Firmware، EVM و WASM فقط روی Linux x64 کار میکند.
سرعت انتشار: نسخههای جزئی متعدد در مدت کوتاه منتشر میشوند و هر نسخه جزئی میتواند تغییرات شکننده ایجاد کند. اگر از خروجی JSON استفاده میکنید، نسخه را پین کنید.
🔐 ریسکهای امنیتی:
REA یک Sandbox نیست: سیاست امنیتی پروژه تصریح میکند که پل ارائهدهنده محلی آن یک sandbox نیست و باز کردن یک فایل باینری غیرقابلاعتماد، تجزیه آن را با مجوزهای کاربر شما اجرا میکند. تحلیل اهداف غیرقابلاعتماد باید در یک محیط ایزوله انجام شود.
مخازن جعلی: مخازن تقلبی REA شناسایی شدهاند که بدافزار توزیع میکنند. فقط از مخزن رسمی GitHub، وبسایت یا پکیج npm تأییدشده دانلود کنید.
⚖️ ملاحظات حقوقی:
استفاده قانونی: این ابزار صرفاً برای تحقیقات قانونی، آموزش، بررسی نرمافزارهایی که مالک آن هستید یا مجوز بررسی آن را دارید، طراحی شده است.
ممنوعیتهای صریح: پروژه REA از دور زدن DRM، بررسیهای مجوز، سیستمهای ضد تقلب یا سایر اقدامات حفاظتی فنی پشتیبانی نمیکند و کمکی نمیکند.
نقض شرایط سرویس: مهندسی معکوس ممکن است شرایط سرویس یک برنامه را نقض کند و دور زدن DRM یا رمزنگاری نگرانیهای قانونی جداگانهای ایجاد میکند.
پیشنیازها:
Node.js: نسخه 22.19 یا بالاتر در سری 22.x، نسخه 24.11 یا بالاتر در سری 24.x، یا نسخه 26 و جدیدتر. (نسخههای 23 و 25 پشتیبانی نمیشوند).
npm: همراه با Node.js نصب میشود.
مرحله ۱: بررسی نسخه Node.js
در ترمینال خود دستور زیر را وارد کنید:
bash
node --version
(اگر نسخه شما پشتیبانی نمیشود، Node.js را بهروزرسانی کنید.)
مرحله ۲: نصب و راهاندازی اولیه
دستور زیر را اجرا کنید. این دستور یک ویزارد راهاندازی را اجرا میکند که بهصورت خودکار تنظیمات لازم را انجام میدهد و از عاملهای هوش مصنوعی مختلف پشتیبانی میکند:
bash
npx rea-agents setup
ویزارد یک طرح را نمایش میدهد، از تنظیمات موجود پشتیبانگیری میکند و تنها پس از تأیید شما تغییرات را مینویسد.
مرحله ۳: بررسی یکپارچگی
برای اطمینان از نصب صحیح، دستور زیر را اجرا کنید:
bash
npx rea-agents doctor
مرحله ۴: شروع سرور MCP
برای اینکه عامل هوش مصنوعی شما بتواند به REA متصل شود، سرور MCP را اجرا کنید:
bash
npx rea-agents mcp
مرحله ۵: استفاده از خط فرمان (اختیاری)
برای نصب جهانی CLI و استفاده مستقیم بدون عامل هوش مصنوعی:
bash
npm install --global rea-agents rea --help
مثال: تحلیل یک برنامه /p>
bash
npx -y rea-agents@latest analyze-javascript-application /path/to/app --json > app-evidence.json
(نکته: نتایج کامل ممکن است بسیار بزرگ باشند. توصیه میشود ابتدا یک نمای خلاصه ایجاد کنید و سپس جزئیات را بررسی کنید.)
آیا REA میتواند کد منبع اصلی را بازیابی کند؟
خیر. REA شبهکد، اسمبلی و شواهد فنی تولید میکند، اما کد منبع اصلی را بازیابی نمیکند. بهینهسازیهای کامپایلر و حذف نمادها این کار را غیرممکن میسازد.
آیا استفاده از REA قانونی است؟
این بستگی به هدف و قوانین محلی شما دارد. REA برای تحقیقات قانونی، آموزش و تحلیل نرمافزاری که مالک آن هستید یا مجوز دارید، طراحی شده است. همیشه قبل از استفاده، قوانین کپیرایت و شرایط سرویس مربوطه را بررسی کنید.
آیا REA یک ابزار امن برای تحلیل بدافزار است؟
REA یک sandbox نیست. برای تحلیل فایلهای غیرقابلاعتماد، باید از یک محیط ایزوله (مانند ماشین مجازی یا کانتینر) استفاده کنید.
چه تفاوتی بین REA و Ghidra وجود دارد؟
Ghidra یک ابزار مهندسی معکوس است، در حالی که REA یک لایه هماهنگکننده است که Ghidra (و ابزارهای دیگر) را به عاملهای هوش مصنوعی متصل میکند. REA فرآیند تحلیل را خودکار میکند و از اهداف بیشتری پشتیبانی میکند.
پروژه REA نشاندهنده یک جهش مهم در نحوه تعامل عاملهای هوش مصنوعی با دنیای نرمافزار است. این ابزار با تبدیل فرآیند پیچیده مهندسی معکوس به یک گردش کار قابل مدیریت و مبتنی بر شواهد، درهای جدیدی را به روی توسعهدهندگان، محققان امنیت و علاقهمندان به فناوری باز کرده است. با درک قابلیتها و محدودیتهای آن، میتوانید از این قدرت جدید برای یادگیری عمیقتر نحوه کار نرمافزارها استفاده کنید.
لینک رسمی ریپازیتوری: https://github.com/morluto/rea
REA (Reverse Engineer Anything): نام پروژه و مخفف عبارت "مهندسی معکوس هر چیز".
MCP (Model Context Protocol): پروتکلی استاندارد که به مدلهای زبانی بزرگ (LLM) اجازه میدهد تا با ابزارها و سرویسهای خارجی ارتباط برقرار کنند.
Agent (عامل هوش مصنوعی): نرمافزاری مبتنی بر هوش مصنوعی که میتواند وظایف را بهصورت خودکار انجام دهد، تصمیم بگیرد و با محیط تعامل کند (مانند Claude Code، Cursor یا Codex).
CLI (Command-Line Interface): رابط خط فرمان؛ محیطی متنی برای تعامل با برنامه از طریق تایپ دستورات.
Binary (فایل باینری): فایل اجرایی کامپایلشده که شامل دستورات ماشین (0 و 1) است و کد منبع آن در دسترس نیست.
Pseudocode (شبهکد): نمایشی سطح بالا از کد که توسط یک دیکامپایلر تولید میشود و شبیه به زبانهای برنامهنویسی است اما لزوماً قابل اجرا نیست.
Disassembler (دیاسمبلر): ابزاری که کد ماشین (باینری) را به زبان اسمبلی (یک زبان سطح پایین) ترجمه میکند.
Decompiler (دیکامپایلر): ابزاری که کد ماشین را به یک زبان سطح بالاتر (شبهکد) ترجمه میکند تا درک آن آسانتر شود.
Hopper / Ghidra / IDA: نام ابزارهای تخصصی و قدرتمند برای تحلیل و مهندسی معکوس فایلهای باینری.
Electron: چارچوبی برای ساخت اپلیکیشنهای دسکتاپ با استفاده از فناوریهای وب (HTML، CSS، JavaScript).
IPC (Inter-Process Communication): مکانیزمی که به فرآیندهای مختلف یک برنامه (مانند Renderer و Main در Electron) اجازه میدهد با هم ارتباط برقرار کنند.
.NET Assembly: واحدهای کامپایلشده در چارچوب داتنت مایکروسافت.
APK (Android Package Kit): فرمت فایل نصبی برنامههای اندروید.
HAR (HTTP Archive): فرمتی برای ضبط و ذخیره تعاملات شبکه (درخواستها و پاسخهای HTTP) در مرورگرها و ابزارهای شبکه.
mitmproxy: یک ابزار متنباز برای رهگیری، بازرسی و تغییر ترافیک HTTP/HTTPS.
Firmware (فریمور): نرمافزار سطح پایینی که روی سختافزار اجرا میشود و کنترل اولیه دستگاه را بر عهده دارد.
WASM (WebAssembly): فرمت باینری قابل اجرا در مرورگرها و محیطهای دیگر که امکان اجرای کد با کارایی بالا را فراهم میکند.
EVM (Ethereum Virtual Machine): ماشین مجازی اتریوم که قراردادهای هوشمند را اجرا میکند.
Sandbox (جعبه شنی): محیط ایزولهای که اجرای کدهای غیرقابلاعتماد را بدون آسیب به سیستم اصلی ممکن میسازد.
DRM (Digital Rights Management): مدیریت حقوق دیجیتال؛ فناوریهایی که برای کنترل دسترسی به محتوای دیجیتال و جلوگیری از کپی غیرمجاز استفاده میشوند.