
버전 1.x~3.x를 지원하는 일반화된 VMProtect 탈가상화 도구입니다. 보호된 바이너리에서 자동 바이트코드 디코딩, 핸들러 분류, x86-64 명령어 재구성을 위한 독립형 CLI 도구 및 Ghidra 플러그인입니다.
VMProtect 1.x, 2.x, 3.x 버전을 지원하는 범용 디버추얼라이저. 독립형 CLI 도구 + Ghidra 플러그인.
상태: ✅ 프로덕션 준비 | 검증: 22/22 샘플 (100%) | 범위: VMP ≤3.6 (3.7+는 리버스 엔지니어링 필요)
cd /home/ciupix/vmp_devirt_prod
cargo build --release
바이너리: target/release/vmp_devirt
# Analyze binary
./target/release/vmp_devirt <binary_path>
# Export handlers
./target/release/vmp_devirt <binary_path> --export-handlers handlers.json
# Export bytecode
./target/release/vmp_devirt <binary_path> --export-bytecode bytecode.json
| 버전 |
|---|
테스트된 샘플:
자세한 결과는 VALIDATION_REPORT.md를 참조하세요.
입력 바이너리
↓
PE/ELF 로더 (src/pe_loader.rs)
↓
버전 탐지기 (src/version.rs)
↓
디스패치 테이블 추출기 (src/dispatch_table.rs)
├─ Unicorn XOR 키 캡처 (src/unicorn_emulator.rs)
└─ 패턴 매칭 폴백
↓
핸들러 분류기 (src/handler_classifier.rs)
↓
바이트코드 디코더 (src/bytecode.rs)
├─ 피연산자 복호화 (src/decrypt.rs)
└─ ALU 재구성 (src/alu.rs)
↓
출력 (JSON/의사 어셈블리)
총계: 약 2,800줄의 프로덕션 Rust 코드
기반 휴리스틱:
VMP 1.x/2.x: .text 섹션의 패턴 매칭을 통한 XOR 키 추출
VMP 3.x: 핸들러 체인 디스패치
패턴 매칭 대상:
FUTURE_WORK.md를 참조하세요.VALIDATION_REPORT.md - 포괄적인 테스트 결과IMPLEMENTATION_COMPLETE.md - 구현 상태UNICORN_IMPLEMENTATION_REPORT.md - XOR 키 캡처 세부 사항VMP 3.5.1 소스 누출 분석에 기반한 아키텍처:
연구/교육용
문제나 질문이 있으면 검증 보고서나 구현 문서를 참조하세요.
최종 업데이트: 2026-06-01 상태: 프로덕션 준비
| 샘플 |
|---|
| 성공 |
|---|
| 평균 시간 |
|---|
| VMP 1.x | 4 | 4/4 | 38ms |
| VMP 2.x | 6 | 6/6 | 734ms |
| VMP 3.x | 12 | 12/12 | 39ms |
| 모듈 | 목적 | 라인 수 |
|---|
src/lib.rs | 주 라이브러리 인터페이스 | 150 |
src/version.rs | VMP 버전 탐지 | 200 |
src/pe_loader.rs | PE/ELF 바이너리 로딩 | 350 |
src/dispatch_table.rs | 디스패치 테이블 추출 | 400 |
src/unicorn_emulator.rs | XOR 키 캡처 | 308 |
src/handler_classifier.rs | 핸들러 유형 식별 | 280 |
src/bytecode.rs | 바이트코드 읽기/디코딩 | 320 |
src/decrypt.rs | ValueCryptor 체인 | 250 |
src/alu.rs | ALU 연산 재구성 | 200 |
src/opcode_table.rs | 연산코드 관리 | 180 |
src/bin/cli.rs | CLI 도구 | 400 |