
멀티 엔진 프레임워크로서, VM 보호 바이너리를 언패킹 및 분석합니다. Dynamic taint tracking, symbolic execution, pattern classification 및 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 모델은 연구 및 교육 목적으로 설계된 기본 개념 증명 구현입니다.
# This now works perfectly:
from dragonslayer.core.orchestrator import Orchestrator, AnalysisType
orchestrator = Orchestrator()
result = orchestrator.analyze_binary("your_binary.exe", analysis_type=AnalysisType.VM_DISCOVERY)
# Results are properly structured:
vmd = result.get("vm_discovery", {})
print(f"VM detected: {vmd.get('vm_detected', False)}")
print(f"Handlers found: {len(vmd.get('handlers_found', []))}")
# 1. Install with all dependencies
pip install -r requirements.txt
pip install -e .
# Clone repository
git clone https://github.com/poppopjmp/VMDragonSlayer.git
cd VMDragonSlayer
# UPDATED INSTALLATION
# Install all required dependencies including z3-solver
pip install -r requirements.txt
# Install framework in development mode
pip install -e .
# CPU-only installation (basic functionality)
pip install -r requirements.txt
pip install -e .
# NVIDIA GPU with CUDA 12.x (RTX 30xx/40xx series)
pip install -r requirements.txt
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
pip install -e .
# NVIDIA GPU with CUDA 11.8 (older 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
# Initialize orchestrator (loads default configuration automatically)
orchestrator = Orchestrator()
# Analyze a binary
result = orchestrator.analyze_binary("path/to/protected_binary.exe", analysis_type=AnalysisType.VM_DISCOVERY)
# Extract VM discovery results
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}
}
리버스 엔지니어링 커뮤니티와 이 프레임워크를 가능하게 한 기반 분석 도구 및 라이브러리 개발자분들께 특별한 감사를 드립니다.
| 도구 | 상태 | 예상 완료일 | 참고 |
|---|
| 직접 API | 안정적 | 현재 사용 가능 | 권장 접근 방식 |
| Ghidra 플러그인 | 진행 중 | 2025년 10월 | 기본 기능 사용 가능 |
| IDA Pro 플러그인 | 개발 중 | 2025년 11월 | 작업 진행 중 - 작동하지 않음 |
| Binary Ninja 플러그인 | 개발 중 | 2025년 11월 | 작업 진행 중 - 작동하지 않음 |