
إطار عمل متعدد المحركات لفك تغليف وتحليل البرامج الثنائية المحمية بواسطة الآلة الافتراضية باستخدام تتبع التلوث الديناميكي، التنفيذ الرمزي، تصنيف الأنماط، وتحديد الأولويات بواسطة التعلم الآلي لأتمتة الهندسة العكسية للحمايات التجارية والمخصصة.
سيتم إتاحة المشروع للعامة بحلول منتصف أكتوبر - إعادة الهيكلة قيد التقدم
إطار متقدم لاكتشاف وتحليل الآلات الافتراضية
VMDragonSlayer هو إطار شامل لتحليل البرامج الثنائية المحمية باستخدام حمايات قائمة على الآلة الافتراضية (VM) مثل VMProtect 2.x/3.x وThemida وحمايات البرمجيات الخبيثة المخصصة. يجمع الإطار بين عدة محركات تحليلية تشمل التتبع الديناميكي للبصمات (DTT) والتنفيذ الرمزي (SE) وتصنيف الأنماط والتعلم الآلي لأتمتة عملية الهندسة العكسية.
الهدف: تحويل تحليل البرامج الثنائية المحمية المعقدة من أسابيع/أشهر من العمل اليدوي إلى تحليل هيكلي آلي بنتائج قابلة للتفسير.
| المجال | المحرك / الوحدة | الإبرازات |
|---|---|---|
| اكتشاف VM | analysis.vm_discovery | تعريف جدول الموزع والمعالج، استنتاج VM المتداخل |
| تحليل الأنماط | analysis.pattern_analysis | قائم على قواعد + تشابه + تعلم آلي (اختيار هجين تلقائي) |
| تتبع البصمات | analysis.taint_tracking | تتبع على مستوى البايت بواسطة Intel Pin، اكتشاف المعالجات، ثقة التدفق |
| التنفيذ الرمزي | analysis.symbolic_execution.executor | استكشاف مرجح بواسطة ML باستخدام PathPrioritizer، تتبع القيود والحالات |
| التنسيق الهجين | (نواة بايثون) | سير عمل تسلسلي / متوازي / تكيفي (يشير تقرير Ghidra إلى تنفيذه) |
| البيانات الاصطناعية | data/training/synthetic_sample_generator.py | تحوير الإخفاء، توليد عينات متعددة البنى |
| قاعدة الأنماط | data/patterns/ | JSON + قاعدة محسّنة + أنماط تشغيلية مدعومة بـ SQLite |
| إضافة Ghidra | plugins/ghidra/ | تكامل واجهة مستخدم قيد التطوير (عدة قوالب مفقودة) |
| المخططات / التحقق | data/schemas/ | مخططات JSON مخرجات تحليل وصيغ أنماط محققة |
يستخدم VMDragonSlayer بنية معيارية حيث تعمل عدة محركات تحليلية معًا:
graph TD
A[محرك اكتشاف VM] --> B[مصنف الأنماط/ML]
B --> C[محرك التنفيذ الرمزي]
B --> D[متتبع البصمات الديناميكي]
D --> C
subgraph مصادر البيانات ["مصادر البيانات"]
E[قاعدة الأنماط]
F[نماذج ML - إثبات المفهوم]
end
subgraph التنسيق
G[المنسق - إدارة سير العمل والتنسيق]
end
E --> B
F --> B
A --> G
B --> G
C --> G
D --> G
E --> G
F --> G
G --> H[خادم REST API]
G --> I[إضافات - أدوات الهندسة العكسية]
dragonslayer.analysis.vm_discovery)dragonslayer.analysis.taint_tracking)dragonslayer.analysis.pattern_analysis)dragonslayer.analysis.symbolic_execution)dragonslayer.ml)VMDragonSlayer/
├── dragonslayer/ # الحزمة الرئيسية للبايثون
│ ├── analysis/ # محركات التحليل
│ │ ├── vm_discovery/ # كشف وتصنيف VM
│ │ ├── pattern_analysis/ # مطابقة الأنماط وتصنيف ML
│ │ ├── symbolic_execution/ # محرك التنفيذ الرمزي
│ │ ├── taint_tracking/ # تحليل البصمات الديناميكي
│ │ └── anti_evasion/ # إجراءات مضادة للتهرب
│ ├── api/ # خادم وعميل REST API
│ ├── core/ # مكونات الإطار الأساسية
│ ├── ml/ # خط أنابيب التعلم الآلي
│ ├── analytics/ # تقارير التحليل والمقاييس
│ ├── gpu/ # دعم تسريع GPU
│ ├── utils/ # دوال مساعدة
├── data/ # ملفات التكوين والبيانات
│ ├── patterns/ # قاعدة الأنماط
│ ├── models/ # نماذج ML والبيانات الوصفية
│ │ ├── pretrained/ # نماذج مدربة مسبقًا (PoC)
│ │ └── metadata/ # البيانات الوصفية والمخططات للنماذج
│ ├── samples/ # ملفات العينات والسجلات
│ ├── schemas/ # مخططات JSON للتحقق
│ └── training/ # تكوينات التدريب
├── plugins/ # إضافات أدوات الهندسة العكسية
│ ├── ghidra/ # إضافة Ghidra (Java/Gradle)
│ ├── idapro/ # إضافة IDA Pro (Python)
│ └── binaryninja/ # إضافة Binary Ninja (Python)
├── tests/ # مجموعة الاختبارات
├── documentation/ # الوثائق
└── LICENSE # رخصة GPL v3
يتكامل VMDragonSlayer مع أدوات الهندسة العكسية الرئيسية:
ملاحظة: نماذج ML المضمنة هي تطبيقات إثبات مفهوم أساسية مصممة لأغراض البحث والتعليم.
# هذا يعمل الآن بشكل مثالي:
from dragonslayer.core.orchestrator import Orchestrator, AnalysisType
orchestrator = Orchestrator()
result = orchestrator.analyze_binary("your_binary.exe", analysis_type=AnalysisType.VM_DISCOVERY)
# النتائج منظمة بشكل صحيح:
vmd = result.get("vm_discovery", {})
print(f"VM detected: {vmd.get('vm_detected', False)}")
print(f"Handlers found: {len(vmd.get('handlers_found', []))}")
# 1. التثبيت مع جميع التبعيات
pip install -r requirements.txt
pip install -e .
# استنساخ المستودع
git clone https://github.com/poppopjmp/VMDragonSlayer.git
cd VMDragonSlayer
# التثبيت المُحدّث
# تثبيت جميع التبعيات المطلوبة بما في ذلك z3-solver
pip install -r requirements.txt
# تثبيت الإطار في وضع التطوير
pip install -e .
# التثبيت باستخدام CPU فقط (الوظائف الأساسية)
pip install -r requirements.txt
pip install -e .
# GPU من NVIDIA مع CUDA 12.x (سلسلة RTX 30xx/40xx)
pip install -r requirements.txt
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
pip install -e .
# GPU من NVIDIA مع CUDA 11.8 (GPUs أقدم)
pip install -r requirements.txt
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
pip install -e .
python -m venv venv source venv/bin/activate # Linux/macOS
venv\Scripts\activate # Windows
pip install -r requirements.txt
cd dragonslayer pip install -e .
اختر المفكك المفضل لديك:
cd plugins/ghidra
./build.bat # Windows
# أو
./build.sh # Linux/macOS
# التثبيت إلى Ghidra
cp dist/VMDragonSlayer.zip $GHIDRA_INSTALL_DIR/Extensions/
from dragonslayer.core.orchestrator import Orchestrator, AnalysisType
# تهيئة المنسق (يتم تحميل التكوين الافتراضي تلقائيًا)
orchestrator = Orchestrator()
# تحليل برنامج ثنائي
result = orchestrator.analyze_binary("path/to/protected_binary.exe", analysis_type=AnalysisType.VM_DISCOVERY)
# استخراج نتائج اكتشاف VM
vmd = result.get("vm_discovery", {})
print(f"VM Protection Detected: {vmd.get('vm_detected', False)}")
print(f"Handler Count: {len(vmd.get('handlers_found', []))}")
print(f"Analysis Success: {result.get('success', False)}")
| الأداة | الحالة | الموعد المتوقع | ملاحظات |
|---|---|---|---|
| API المباشر | مستقرة | متاح الآن | النهج الموصى به |
| إضافة Ghidra | قيد التقدم | أكتوبر 2025 | الوظائف الأساسية متاحة |
| إضافة IDA Pro | قيد التطوير | نوفمبر 2025 | قيد العمل - غير وظيفية |
| إضافة Binary Ninja | قيد التطوير | نوفمبر 2025 | قيد العمل - غير وظيفية |
يستخدم VMDragonSlayer بنية معيارية مع محركات تحليلية متعددة:
يتضمن الإطار عدة نماذج إثبات مفهوم:
# التكوين الأساسي
export VMDS_CONFIG_PATH="/path/to/config"
export VMDS_MODEL_PATH="/path/to/models"
export VMDS_LOG_LEVEL="INFO"
# تكوين قاعدة البيانات
export VMDS_DB_URL="sqlite:///vmds.db"
# تكوين API
export VMDS_API_HOST="localhost"
export VMDS_API_PORT="8000"
data/database_config.json: إعدادات قاعدة البياناتdata/taint_config.properties: معلمات تحليل البصماتdata/models/model_registry_config.toml: تكوين نماذج MLfrom dragonslayer.core.config import Config
from dragonslayer.analysis.vm_discovery import VMDiscoveryEngine
from dragonslayer.analysis.taint_tracking import TaintTracker
# تكوين مخصص
config = Config({
'vm_discovery': {
'min_handler_count': 10,
'dispatcher_threshold': 0.8
},
'taint_tracking': {
'precision': 'byte_level',
'max_depth': 1000
}
})
# تهيئة المحركات المحددة
vm_engine = VMDiscoveryEngine(config)
taint_tracker = TaintTracker(config)
# تشغيل تحليل مستهدف
vm_result = vm_engine.analyze("binary.exe")
if vm_result.vm_detected:
taint_result = taint_tracker.analyze(vm_result.handlers)
from dragonslayer.workflows.manager import WorkflowManager
# معالجة برامج ثنائية متعددة
manager = WorkflowManager()
results = manager.process_batch([
"sample1.exe",
"sample2.exe",
"sample3.exe"
])
# إنشاء تقرير ملخص
manager.generate_report(results, "analysis_report.json")
نرحب بالمساهمات! يرجى الاطلاع على:
هذا المشروع مرخص بموجب رخصة GNU العامة العامة الإصدار 3.0. انظر LICENSE للتفاصيل.
إذا كنت تستخدم VMDragonSlayer في بحثك، يرجى الاقتباس:
@software{vmdragonslayer_2025,
title = {VMDragonSlayer: Automated VM-based Binary Protection Analysis},
author = {Panico, Agostino},
year = {2025},
url = {https://github.com/poppopjmp/VMDragonSlayer}
}
شكر خاص لمجتمع الهندسة العكسية ولمطوري أدوات ومكتبات التحليل الأساسية التي تجعل هذا الإطار ممكنًا.