
سطر أوامر بايثون Ghidra MCP
pyghidra-mcp هو خادم بروتوكول سياق النموذج (MCP) يعمل من سطر الأوامر، يجلب القوة التحليلية الكاملة لـ Ghidra، وهي مجموعة قوية لهندسة البرمجيات العكسية (SRE)، إلى عالم الوكلاء الأذكياء والأدوات القائمة على نماذج اللغة الكبيرة (LLM).
يعمل كجسر بين ProgramAPI و FlatProgramAPI الخاصين بـ Ghidra إلى بايثون باستخدام pyghidra و jpype، ثم يعرض هذه الوظائف عبر بروتوكول سياق النموذج.
MCP هو واجهة موحدة تسمح لنماذج اللغة وأدوات التطوير (مثل VS Code) والوكلاء المستقلين بالوصول إلى سياق منظم، واستدعاء الأدوات، والتعاون بذكاء. فكر في MCP على أنه الجسر بين أدوات التحليل القوية ونظام LLM البيئي.
مع pyghidra-mcp، يصبح Ghidra خلفية ذكية - جاهزة للاستجابة لاستعلامات غنية بالسياق، وأتمتة مهام هندسة عكسية عميقة، والتكامل مع سير العمل المعزز بالذكاء الاصطناعي.
يدعم pyghidra-mcp الآن وضعين للتشغيل:
headless للتحليل والأتمتة عبر CLI--gui، الذي يطلق Ghidra عبر pyghidra-mcp ويشارك حالة البرنامج الحية مع واجهة المستخدم الرسومية قيد التشغيل[!ملاحظة] هذا المشروع التجريبي قيد التطوير النشط. نحن نرحب بتعليقاتك، وتقارير الأخطاء، وطلبات الميزات، والمساهمات البرمجية.
نعم، ghidra-mcp الأصلي رائع. لكن pyghidra-mcp يتبع نهجًا مختلفًا:
--gui عندما تحتاج إلى تنقل وتحرير حي في الواجهة.هذا المشروع يوفر تجربة قائمة على بايثون أولاً مُحسّنة للتطوير المحلي والبيئات بدون واجهة رسومية وسير عمل قابل للاختبار.
flowchart LR subgraph Clients["Clients"] Agent["MCP host / agent"] Cli["pyghidra-mcp-cli"] User["Ghidra user"] end
subgraph Process["pyghidra-mcp process"]
Transport["stdio or streamable-http"]
Tools["MCP tools"]
Context["PyGhidra context"]
end
Project["Ghidra project<br/>.gpr / .rep"]
Artifacts["MCP artifacts<br/>ChromaDB + GZF cache"]
Gui["Ghidra GUI / CodeBrowser<br/>only with --gui"]
Agent -->|"stdio or HTTP"| Transport
Cli -->|"HTTP only"| Transport
Transport --> Tools
Tools --> Context
Context --> Project
Context --> Artifacts
Context -.-> Gui
User -.-> Gui
Gui -.-> Project
### اختيار الوضع```mermaid
flowchart TD
Start["What do you need?"]
Start --> Headless["Agent or automation only"]
Start --> GuiNeed["Live Ghidra GUI control"]
Start --> Terminal["Interactive terminal client"]
Headless --> Stdio["pyghidra-mcp -t stdio<br/>or -t streamable-http"]
GuiNeed --> GuiMode["pyghidra-mcp --gui<br/>--transport streamable-http<br/>--project-path project.gpr"]
Terminal --> HttpServer["Start pyghidra-mcp<br/>--transport streamable-http"]
HttpServer --> CliMode["Run pyghidra-mcp-cli commands"]
stdio لمضيفي MCP المحليين، أو streamable-http عندما يحتاج عدة عملاء إلى نفس مشروع Ghidra طويل الأمد.pyghidra-mcp بتشغيل Ghidra، وفتح المشروع، وكشف أدوات إضافية لتوجيه CodeBrowser في نفس JVM.pyghidra-mcp-cli هو عميل HTTP. ابدأ خادم streamable-http أولاً، ثم أصدر أوامر طرفية ضد ذلك الخادم الجاري.subgraph Transports
Stdio["stdio"]
Http["streamable-http"]
Sse["sse legacy"]
end
subgraph Server["pyghidra-mcp server"]
FastMcp["FastMCP tool server"]
Context["PyGhidra context"]
Indexing["background analysis and Chroma indexing"]
subgraph Tools["MCP tools"]
Analysis["decompile, xrefs, bytes, callgraph"]
Search["symbols, strings, code"]
ProjectOps["import, delete, metadata, list binaries"]
Edits["rename function, rename variable, set type, set prototype, set comment"]
GuiOnly["GUI only: open program, goto, list open programs, set current program"]
end
end
subgraph GhidraRuntime["Ghidra runtime"]
PyGhidra["pyghidra"]
Jpype["JPype shared JVM"]
Project["Ghidra project"]
Programs["program databases"]
CodeBrowser["Ghidra GUI / CodeBrowser"]
end
Agent --> Stdio
Agent --> Http
Automation --> Stdio
Automation --> Http
Automation --> Sse
Cli --> Http
Stdio --> FastMcp
Http --> FastMcp
Sse --> FastMcp
FastMcp --> Context
Context --> PyGhidra
PyGhidra --> Jpype
Jpype --> Project
Project --> Programs
Context --> Indexing
Indexing --> Search
FastMcp --> Tools
Tools --> Context
GuiOnly -.-> CodeBrowser
Context -.-> CodeBrowser
</details>
## المحتويات