PyGhidra-MCP: مهندسی معکوس با هوش مصنوعی
خلاصهٔ کاملتر
PyGhidra-MCP یه سرور خطفرمانیه که ابزار قدرتمند مهندسی معکوس Ghidra رو از طریق Model Context Protocol (MCP) در دسترس LLMها، ایجنتهای هوش مصنوعی، و ابزارهای توسعه مثل VS Code قرار میده. MCP یه رابط یکپارچهست که به مدلهای زبانی اجازه میده با ابزارهای تخصصی تعامل داشته باشن و این پروژه از اون برای هوشمندسازی فرآیند تحلیل باینری استفاده میکنه.
این ابزار از pyghidra و jpype برای اتصال Python به APIهای داخلی Ghidra (یعنی ProgramAPI و FlatProgramAPI) استفاده میکنه. نتیجهاش یه بکاند هوشمنده که میتونه به کوئریهای پیچیده پاسخ بده، وظایف مهندسی معکوس رو اتوماتیک کنه، و در pipelineهای مبتنی بر هوش مصنوعی ادغام بشه.
PyGhidra-MCP دو مد اصلی داره: Headless برای اتوماسیون و محیطهای CLI، و GUI mode که Ghidra رو با --gui اجرا میکنه و state زنده برنامه رو با محیط گرافیکی به اشتراک میذاره. برای مثال، مد GUI رو میشه اینطوری راه انداخت:
pyghidra-mcp --gui --transport streamable-http --project-path project.gprیکی از ویژگیهای برجستهاش جستجوی معنایی (Semantic Search) با کمک ChromaDB هست که امکان جستجوی fuzzy روی توابع دیکامپایلشده، کامنتها و سیمبولها رو فراهم میکنه. این قابلیت برای ایجنتهایی که میخوان کد شبه-C رو بررسی و dredge کنن خیلی به درد میخوره.
از دیگر مزیتهای این پروژه نسبت به ghidra-mcp اصلی میشه به موارد زیر اشاره کرد: استارتاپ async که سرور رو قبل از پایان آنالیز باینری آماده میکنه، پشتیبانی از تحلیل همزمان چندین باینری در یه پروژه Ghidra، و تستهای unit و integration برای هر دو طرف client و server که اون رو CI/CD-friendly میکنه.
ابزارهای MCP که این سرور ارائه میده شامل موارد متنوعیه: از تحلیل (decompile، xrefs، callgraph) و جستجو (symbols، strings، code) گرفته تا عملیات ویرایشی مثل rename کردن توابع و متغیرها، تنظیم نوع داده و پروتوتایپ، و حتی در مد GUI، کنترل مستقیم CodeBrowser با ابزارهایی مثل goto و open program.
نکات کلیدی:
- PyGhidra-MCP ابزار Ghidra رو از طریق پروتکل MCP در اختیار LLMها و ایجنتهای AI قرار میده
- دو مد headless (برای اتوماسیون و CI) و GUI (برای کار تعاملی) داره
- جستجوی معنایی با ChromaDB روی کد دیکامپایلشده از ویژگیهای منحصربهفردشه
- استارتاپ async باعث میشه بدون صبر برای تموم شدن آنالیز، بتونی کار کنی
- تحلیل همزمان چند باینری در یه پروژه Ghidra رو پشتیبانی میکنه
- ابزارهایی برای rename، تنظیم نوع داده، تنظیم پروتوتایپ، و کنترل GUI داره




