
يُدمج OGhidra نماذج اللغة الكبيرة (LLMs) عبر Ollama مع منصة Ghidra لهندسة عكسية، مما يتيح تحليل الثنائيات بمساعدة الذكاء الاصطناعي عبر اللغة الطبيعية. تفاعل مع Ghidra باستخدام استفسارات محادثة وأتمتة مهام سير العمل المعقدة في الهندسة العكسية.
للإصدار الذي يستخدم Orchestrator مستوحى من Claude، راجع https://github.com/llnl/OGhidra/tree/orchestrator
OGhidra يربط نماذج اللغة الكبيرة بمنصة الهندسة العكسية Ghidra، مما يتيح تحليلًا ثنائيًا مدفوعًا بالذكاء الاصطناعي من خلال اللغة الطبيعية. حلل الملفات الثنائية بطريقة تفاعلية، وأتمتة سير العمل المعقدة، وحافظ على الخصوصية الكاملة مع نماذج الذكاء الاصطناعي المحلية.
برنامج تعليمي للإعداد على YouTube
OGhidra يعزز Ghidra بقدرات الذكاء الاصطناعي، مما يسمح لك بـ:
graph TD
A[استعلام المستخدم] --> B[مرحلة التخطيط]
B --> C{مرحلة التنفيذ}
C -- استدعاءات الأدوات --> D[Ghidra/LLM]
D --> C
C --> E[مرحلة المراجعة]
E -- حلقة وكيلية --> B
E --> F[الرد النهائي]
style E fill:#f9f,stroke:#333,stroke-width:2px
style B fill:#bbf,stroke:#333,stroke-width:2pxالحلقة الوكيلية: يستخدم OGhidra نظام تخطيط تكيفي. بعد كل دورة تنفيذ، يتم مراجعة النتائج ويمكن للذكاء الاصطناعي اختيار جمع المزيد من المعلومات أو تحسين تحليله قبل تقديم الرد النهائي.
python --versionjava -version# استنساخ المستودع
git clone https://github.com/LLNL/OGhidra.git
cd OGhidra
# تثبيت التبعيات (اختر أحد الخيارين)
uv sync # باستخدام UV (مُوصى به)
pip install -r requirements.txt # باستخدام pip
# تكوين البيئة
cp .env.example .env
# عدّل .env بإعداداتك
خطوات بناء إضافة OGhidraMCP أدناه تستهدف Ghidra 12.0.3 (مُوصى به). يوجد أيضًا فيديو تعليمي على YouTube: https://www.youtube.com/watch?v=hBD92FUgR0Y
كمطور، ستحتاج إلى بناء إضافة GhidraMCP قبل تثبيتها في Ghidra:
المتطلبات الأساسية:
الخيار 1: استخدام نصوص البناء الآلية:
ويندوز:
# تعيين مسار تثبيت Ghidra (سيحاول العثور على آخر نسخة مشغلة من Ghidra إذا لم يتم تعيينه)
set GHIDRA_INSTALL_DIR=C:\path\to\ghidra_12.0.3_PUBLIC
# تشغيل نص البناء
build_ghidra_plugin.bat
Unix/Linux/Mac:
# تعيين مسار تثبيت Ghidra (سيحاول العثور على آخر نسخة مشغلة من Ghidra إذا لم يتم تعيينه)
export GHIDRA_INSTALL_DIR=/path/to/ghidra_12.0.3_PUBLIC
# تشغيل نص البناء (اجعله قابلاً للتنفيذ أولاً إذا لزم الأمر)
chmod +x build_ghidra_plugin.sh
./build_ghidra_plugin.sh
الخيار 2: عملية البناء اليدوية:
أنشئ/حدّث OGhidraMCP/gradle.properties بمسار تثبيت Ghidra الخاص بك:
GHIDRA_INSTALL_DIR=/absolute/path/to/ghidra_12.0.3_PUBLIC
على Unix/Linux/macOS:
cd OGhidraMCP
$GHIDRA_INSTALL_DIR/support/gradle/gradlew buildExtension --info
على ويندوز:
cd OGhidraMCP
"%GHIDRA_INSTALL_DIR%\support\gradle\gradlew.bat" buildExtension --info
تحديد موقع الإضافة المبنية:
OGhidraMCP/dist/ghidra_12.0.3_PUBLIC_YYYYMMDD_OGhidraMCP.zipبمجرد بناء الإضافة بنجاح:
تثبيت في Ghidra:
OGhidraMCP/dist/ghidra_12.0.3_PUBLIC_YYYYMMDD_OGhidraMCP.zip)تفعيل الإضافة:
OGhidraMCPhttp://localhost:8080/methodsيجب أن يكون CODE BROWSER مفتوحًا لديك
# لـ Ollama (نماذج محلية)
ollama pull gemma3:27b # توازن جيد (20GB ذاكرة وصول عشوائي)
ollama pull nomic-embed-text # نموذج التضمين لـ RAG
# نماذج بديلة
ollama pull gpt-oss:120b # جودة عالية (80GB ذاكرة وصول عشوائي)
ollama pull devstral-2:123b # جودة عالية (80GB ذاكرة وصول عشوائي)
ollama pull devstral-2:123b-cloud # نموذج سحابي
# وضع الواجهة الرسومية (مُوصى به)
uv run main.py --ui
# واجهة سطر الأوامر التفاعلية
uv run main.py --interactive
# في واجهة سطر الأوامر التفاعلية، اختبر الاتصال
health
إذا قمت بتشغيل وضع الواجهة الرسومية، استخدم:
curl http://localhost:8080/methods
عدّل .env لتكوين مزود الذكاء الاصطناعي الخاص بك:
LLM_PROVIDER=ollama
OLLAMA_BASE_URL=http://localhost:11434/
OLLAMA_MODEL=gemma3:27b
OLLAMA_EMBEDDING_MODEL=nomic-embed-text
LLM_PROVIDER=external
EXTERNAL_PROVIDER=google
EXTERNAL_API_KEY=your-api-key-here
EXTERNAL_MODEL=gemini-3.1-flash-lite-preview
EXTERNAL_EMBEDDING_MODEL=gemini-embedding-001
LLM_PROVIDER=custom_api
CUSTOM_API_URL=https://api.example.com/v1/chat/completions
CUSTOM_API_KEY=your-api-key-here
CUSTOM_API_MODEL=your-model-name
CUSTOM_API_EMBEDDING_MODEL=your-embedding-model
اضبط وفقًا لنافذة سياق النموذج الخاص بك:
# ميزانية السياق بالرموز (اضبط حسب حد النموذج الخاص بك)
CONTEXT_BUDGET=100000 # 100 ألف رمز للنماذج متوسطة الحجم
# 200 ألف+ للنماذج الرائدة
# إعدادات التنفيذ
MAX_EXECUTION_STEPS=5 # خطوات لكل دورة تخطيط
MAX_AGENTIC_CYCLES=3 # عدد حلقات التخطيط-التنفيذ-المراجعة
AGENTIC_LOOP_ENABLED=true # تفعيل إعادة التخطيط التكيفي
وصول بنقرة واحدة إلى مهام الهندسة العكسية الشائعة:
| الأداة | الوصف |
|---|---|
| تحليل الدالة الحالية | غوص عميق في سلوك الدالة المحددة |
| إعادة تسمية الدالة الحالية | الذكاء الاصطناعي يقترح أسماء ذات معنى بناءً على التحليل |
| إعادة تسمية جميع الدوال | إعادة تسمية جماعية مع خيارات ذكية/كاملة/إعادة تسمية فقط |
| تحليل الاستيرادات | تحديد المكتبات والتبعيات الخارجية |
| تحليل السلاسل النصية | العثور على عناوين URL، بيانات الاعتماد، بيانات التكوين |
| إنشاء تقرير | تقييم أمني شامل |
حدد أهداف تحليل متخصصة:
# في الواجهة الرسومية: استخدم القائمة المنسدلة "Task Mode"
# في سطر الأوامر: set task_mode <mode>
task_mode malware # تحليل البرامج الضارة مع اكتشاف الأنماط
task_mode vuln # تركيز أبحاث الثغرات
task_mode general # هندسة عكسية عامة
اكتشاف تلقائي لأكثر من 12 نمطًا من أنماط البرامج الضارة:
تؤدي الأنماط إلى تنبيهات تلقائية في سياق الذكاء الاصطناعي مع تعيينات MITRE ATT&CK.
بناء معرفة غنية وقابلة للاستعلام من تحليل الملفات الثنائية:
# تعداد جميع الدوال مع ملخصات الذكاء الاصطناعي
# اختر من:
- Rename Only: معالجة أسماء الدوال العامة فقط
- Smart Enumeration: التركيز على الدوال ذات الصلة بالأمن
- Full Enumeration: تحليل كل دالة في الملف الثنائي
الميزات:
حفظ واستعادة جلسات التحليل:
# حفظ التقدم
File → Save Session
# تحميل العمل السابق
File → Load Session
# حفظ تلقائي بعد العمليات الجماعية
# تشمل الجلسات:
- الدوال التي تم تحليلها مع الملخصات
- متجهات RAG للبحث الدلالي
- إحصائيات الأداء
- حالة واجهة المستخدم
يدعم OGhidra نوعين من الخلفيات:
استخدم خيار سطر الأوامر التالي لاختيار خلفية:
--ghidra-backend={http,pyghidra}
| خيار الخلفية | الوصف |
|---|---|
http | يستخدم خلفية GhidraMCP |
pyghidra | يستخدم خلفية PyGhidra |
حدد ملف مشروع Ghidra (.gpr) عند تشغيل OGhidra:
--pyghidra-project=/path/to/project.gpr
يتطلب PyGhidra مشروع Ghidra صالحًا لتشغيل OGhidra.
حدد الملف الثنائي داخل مشروع Ghidra الذي يجب تحليله:
--pyghidra-program=<program_name>
مثال على استدعاء لاختيار برنامج في مشروع Ghidra:
uv run main.py --ui --ghidra-backend=pyghidra --pyghidra-project=/path/to/project.gpr --pyghidra-program=<program_name>
المتطلبات:
يمكنك أيضًا تقديم مسار ملف ثنائي مباشرة:
--pyghidra-binary=/path/to/binary
عند استخدام هذا الخيار، يقوم PyGhidra تلقائيًا بـ:
.gpr)مثال على استدعاء لتشغيل ملف ثنائي مباشرة:
uv run main.py --ui --ghidra-backend=pyghidra --pyghidra-binary=/path/to/binary
uv run main.py --ui# في الواجهة الرسومية: انقر زر "Generate Report"
# يتضمن التقرير:
- ملخص تنفيذي
- جرد الدوال (الدوال المعاد تسميتها مع السلوك)
- تحليل أمني (دوال عالية المخاطر، أنماط)
- تحليل الاستيرادات
- تحليل السلاسل النصية
- التوصيات
يستخدم OGhidra تضمينات متجهة للبحث الدلالي عبر الدوال التي تم تحليلها:
# فعّل في .env
RESULT_CACHE_ENABLED=true
TIERED_CONTEXT_ENABLED=true
الفوائد:
ضغط السياق المتدرج يحافظ على المعلومات ذات الصلة:
CURRENT_LOOP_MAX_CHARS=2000 # الأحدث: تفاصيل كاملة
PREV_LOOP_MAX_CHARS=400 # السابقة: ملخصات
OLDER_LOOP_MAX_CHARS=100 # الأقدم: مراجع فقط
تتبع جميع تفاعلات الذكاء الاصطناعي لتصحيح الأخطاء:
LLM_LOGGING_ENABLED=true
LLM_LOG_FILE=logs/llm_interactions.log
LLM_LOG_FORMAT=json
# تحقق من تحميل الإضافة
# افتح codebrowser!
# تحقق من تشغيل الخادم
curl http://localhost:8080/methods
# تحقق من تشغيل Ollama
ollama list
# تحقق من الاتصال
curl http://localhost:11434/api/tags
# أعد تشغيل خدمة Ollama
ollama serve
# قلل ميزانية السياق
CONTEXT_BUDGET=50000
# فعّل الضغط
COMPACTION_ENABLED=true
COMPACTION_THRESHOLD=0.75
gemma3:9bmax_workers=2 في العمليات الجماعيةRESULT_CACHE_ENABLED=falseCUSTOM_API_REQUEST_DELAY=2.0┌─────────────────────────────────────────────────────────────┐
│ واجهة مستخدم OGhidra │
│ (GUI / Interactive CLI) │
└────────────────────────┬────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ Bridge (src/bridge.py) │
│ ┌────────────────────────────────────────────────────────┐ │
│ │ • الحلقة الوكيلية: خطط → نفذ → راجع ← أعد التخطيط │ │
│ │ • موجه الأدوات: عميل Ghidra، عميل LLM، مدير CAG │ │
│ │ • مدير السياق: تخصيص الميزانية، الضغط │ │
│ └────────────────────────────────────────────────────────┘ │
└───────────┬────────────────────────┬────────────────────────┘
│ │
▼ ▼
┌───────────────────────┐ ┌─────────────────────────┐
│ عميل Ghidra │ │ عملاء LLM │
│ • إضافة GhidraMCP │ │ • Ollama (محلي) │
│ • عمليات الملفات الثنائية│ │ • واجهات برمجة تطبيقات خارجية│
│ • فك الترجمة │ │ • نقاط نهاية مخصصة │
└───────────────────────┘ └─────────────────────────┘
│ │
└────────────┬───────────┘
▼
┌─────────────────────────────────────────────────────────────┐
│ مدير CAG (نظام المعرفة) │
│ ┌────────────────────────────────────────────────────────┐ │
│ │ • مخزن المتجهات: بحث دلالي عبر الدوال │ │
│ │ • كاشف الأنماط: أكثر من 12 تقنية برامج ضارة │ │
│ │ • مستخرج البيانات الوصفية: تحليل منظم للدوال │ │
│ │ • مخزن الجلسات: حالة تحليل مستمرة │ │
│ └────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
نرحب بالمساهمات! مجالات الاهتمام:
انظر CODE_OF_CONDUCT.md لإرشادات المجتمع.
إذا كنت تستخدم OGhidra في بحثك، يرجى الاقتباس:
@software{oghidra2025,
title = {OGhidra: AI-Powered Reverse Engineering with Ghidra},
author = {Enoch Wang},
year = {2025},
url = {https://github.com/LLNL/OGhidra}
}
OGhidra يبني على مشاريع مفتوحة المصدر ممتازة:
يتم توزيع OGhidra بموجب شروط ترخيص BSD 3-Clause مع بديل ترخيص تجاري.
LLNL-CODE-2013290