
VM保護されたバイナリのアンパックと解析のためのマルチエンジンフレームワーク。動的タイントラッキング、シンボリック実行、パターン分類、およびML駆動の優先順位付けを活用し、商用およびカスタムプロテクターのリバースエンジニアリングを自動化します。
プロジェクトは10月中旬に公開予定(リファクタリング中)
高度な仮想マシン検出・解析フレームワーク
VMDragonSlayerは、VMProtect 2.x/3.x、Themida、カスタムマルウェアVMなどの仮想マシン(VM)ベースのプロテクタで保護されたバイナリを解析するための包括的なフレームワークです。このフレームワークは、動的タイントラッキング(DTT)、シンボリック実行(SE)、パターン分類、機械学習を含む複数の解析エンジンを組み合わせ、リバースエンジニアリングプロセスを自動化します。
目標: 複雑な保護バイナリ解析を数週間/数か月の手作業から、構造化された説明可能な結果を持つ自動解析へと変革すること。
| ドメイン | エンジン/モジュール | ハイライト |
|---|---|---|
| VM発見 | analysis.vm_discovery | ディスパッチャ・ハンドラテーブル特定、ネストされたVMヒューリスティック |
| パターン解析 | analysis.pattern_analysis | ルールベース+類似度+ML(ハイブリッド自動選択) |
| タイントラッキング | analysis.taint_tracking | Intel Pin駆動のバイトレベルタイント、ハンドラ発見、フロー信頼度 |
| シンボリック実行 | analysis.symbolic_execution.executor | PathPrioritizer ML重み付き探索、制約・状態追跡 |
| ハイブリッドオーケストレーション | (Pythonコア) | 順次/並列/適応ワークフロー(Ghidraレポートは実装済みと示唆) |
| 合成データ | data/training/synthetic_sample_generator.py | 難読化ミューテーション、マルチアーキテクチャサンプル生成 |
| パターンDB | data/patterns/ | JSON + 拡張DB + SQLiteバックアップのランタイムパターン |
| Ghidraプラグイン | plugins/ghidra/ | 進行中のUI統合(いくつかのテンプレート未完成) |
| スキーマ/検証 | data/schemas/ | JSONスキーマ検証済み解析出力・パターンフォーマット |
VMDragonSlayerは、複数の解析エンジンが連携するモジュラーアーキテクチャを採用しています:
graph TD
A[VM Discovery Engine] --> B[Pattern/ML Classifier]
B --> C[Symbolic Execution Engine]
B --> D[Dynamic Taint Tracker]
D --> C
subgraph DataSources ["Data Sources"]
E[Pattern Database]
F[ML Models - PoC]
end
subgraph Coordination
G[Orchestrator - Workflow Management & Coordination]
end
E --> B
F --> B
A --> G
B --> G
C --> G
D --> G
E --> G
F --> G
G --> H[REST API Server]
G --> I[Plugins - RE Tools]
dragonslayer.analysis.vm_discovery)dragonslayer.analysis.taint_tracking)dragonslayer.analysis.pattern_analysis)dragonslayer.analysis.symbolic_execution)dragonslayer.ml)VMDragonSlayer/
├── dragonslayer/ # メインPythonパッケージ
│ ├── 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 .
# NVIDIA GPU + 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 .
# NVIDIA GPU + CUDA 11.8(古いGPU)
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)}")
VMDragonSlayerは複数の解析エンジンを備えたモジュラーアーキテクチャを採用しています:
フレームワークにはいくつかの概念実証モデルが含まれています:
# Core configuration
export VMDS_CONFIG_PATH="/path/to/config"
export VMDS_MODEL_PATH="/path/to/models"
export VMDS_LOG_LEVEL="INFO"
# Database configuration
export VMDS_DB_URL="sqlite:///vmds.db"
# API configuration
export VMDS_API_HOST="localhost"
export VMDS_API_PORT="8000"
data/database_config.json: データベース設定data/taint_config.properties: タイント解析パラメータdata/models/model_registry_config.toml: MLモデル設定from dragonslayer.core.config import Config
from dragonslayer.analysis.vm_discovery import VMDiscoveryEngine
from dragonslayer.analysis.taint_tracking import TaintTracker
# Custom configuration
config = Config({
'vm_discovery': {
'min_handler_count': 10,
'dispatcher_threshold': 0.8
},
'taint_tracking': {
'precision': 'byte_level',
'max_depth': 1000
}
})
# Initialize specific engines
vm_engine = VMDiscoveryEngine(config)
taint_tracker = TaintTracker(config)
# Run targeted analysis
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
# Process multiple binaries
manager = WorkflowManager()
results = manager.process_batch([
"sample1.exe",
"sample2.exe",
"sample3.exe"
])
# Generate summary report
manager.generate_report(results, "analysis_report.json")
コントリビューションを歓迎します!以下をご覧ください:
このプロジェクトはGNU General Public License v3.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}
}
このフレームワークを可能にしたリバースエンジニアリングコミュニティと、基盤となる解析ツール・ライブラリの開発者の皆様に特別な感謝を捧げます。
| ツール | ステータス | 完了予定 | 備考 |
|---|
| Direct API | 安定版 | 現在利用可能 | 推奨されるアプローチ |
| Ghidraプラグイン | 進行中 | 2025年10月 | 基本機能利用可能 |
| IDA Proプラグイン | 開発中 | 2025年11月 | 作業中 - 未完成 |
| Binary Ninjaプラグイン | 開発中 | 2025年11月 | 作業中 - 未完成 |