ویرگول
ورودثبت نام
هادی بهزادی Hadi Behzadi
هادی بهزادی Hadi Behzadiعلاقه مند به نوآوری و استارتاپ، فعال در زمینه پرداخت الکترونیک، لندتک، تجارت الکترونیک، بازارسرمایه، دیجیتال مارکتینگ و همچنین بلاکچین‌ و هوش مصنوعی
هادی بهزادی Hadi Behzadi
هادی بهزادی Hadi Behzadi
خواندن ۱۱ دقیقه·۱۰ روز پیش

REA: وقتی هوش مصنوعی به سراغ مهندسی معکوس می‌آید

Reverse Engineer Anything
Reverse Engineer Anything

🧠 REA (Reverse Engineer Anything): انقلابی در مهندسی معکوس با عاملهای هوش مصنوعی

در دنیای توسعه نرم‌افزار و امنیت، ابزارهای جدیدی ظهور کرده‌اند که مرزهای سنتی را جابه‌جا می‌کنند. یکی از این ابزارهای پیشرو و تحول‌آفرین، پروژه REA یا Reverse Engineer Anything است که در اکتبر ۲۰۲۶ به‌سرعت در GitHub Trending صدرنشین شد و در کمتر از یک هفته از مرز ۱۱۵,۰۰۰ ستاره گذشت. این ابزار که به‌صورت متن‌باز (MIT License) منتشر شده، به عامل‌های هوش مصنوعی (AI Agents) این قدرت را می‌دهد تا نرم‌افزارها را بدون نیاز به کد منبع اصلی، تحلیل و مهندسی معکوس کنند.

🧐 REA دقیقاً چیست و چگونه کار می‌کند؟

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 به دست آید.

🚀 موارد استفاده و مطالعات موردی (Case Studies)

مطالعات موردی رسمی پروژه، بهترین معیار برای درک توانایی‌های واقعی REA هستند:

  • بازسازی محاسبه صدا در بازی DX-Ball: در این مطالعه موردی، عامل هوش مصنوعی یک فراخوانی صدا را تا تابع کمکی موقعیت به پن تعقیب کرد، شبه‌کد ناقص را به زبان C تبدیل کرد و بازسازی نهایی در ۳,۲۰۵ تست اصلی x86 موفق شد و تمام ۶۳ بایت تابع کامپایل‌شده را بازتولید کرد.

  • ردیابی مکانیزم کلیپ‌بورد در Notion: REA مسیر API کلیپبورد را از فرآیند Renderer، از طریق Preload و IPC، تا فرآیند اصلی Electron ردیابی کرد. این نشان میدهد که REA می‌تواند روابط پیچیده بین اجزای یک برنامه دسکتاپ را آشکار کند.

  • بازیافت محاسبات از یک بازی کلاسیک PC-98: یک مطالعه موردی دیگر، محاسبه زاویه حلقه گلوله را از دستورات ۱۶ بیتی یک بازی PC-98 دهه ۱۹۹۰ بازیابی کرد.

نکته کلیدی: این مطالعات موردی نشان می‌دهند که REA در سوالات دقیق و محدود درباره یک تابع یا یک مسیر داده، با قابلیت تأیید پاسخ، بهترین عملکرد را دارد. دموهای "بازسازی کل برنامه" ممکن است در ویدیو خوب به نظر برسند، اما ارزش واقعی زمانی ظاهر میشود که سوال مشخص و هدف پیچیده باشد.

⚖️ مقایسه 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

(نکته: نتایج کامل ممکن است بسیار بزرگ باشند. توصیه می‌شود ابتدا یک نمای خلاصه ایجاد کنید و سپس جزئیات را بررسی کنید.)

❓ سوالات متداول (FAQ)

آیا 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): مدیریت حقوق دیجیتال؛ فناوری‌هایی که برای کنترل دسترسی به محتوای دیجیتال و جلوگیری از کپی غیرمجاز استفاده می‌شوند.


هوش مصنوعیaiتحول دیجیتال
۱
۰
هادی بهزادی Hadi Behzadi
هادی بهزادی Hadi Behzadi
علاقه مند به نوآوری و استارتاپ، فعال در زمینه پرداخت الکترونیک، لندتک، تجارت الکترونیک، بازارسرمایه، دیجیتال مارکتینگ و همچنین بلاکچین‌ و هوش مصنوعی
هوش مصنوعی AI
هوش مصنوعی AI
بعنوان یک علاقه مند سعی دارم در این بلاگ با مفاهیم و موضوعات مرتبط به هوش مصنوعی اشاره کنم
شاید از این پست‌ها خوشتان بیاید