Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
vmp-devirt — Trace 기반 VMProtect 디바이추얼라이제이션 연구 플랫폼: 버전 프런트엔드가 공유 Remill/LLVM 백엔드에 입력을 전달하여 핸들러를 리프팅하고, 데이터 흐름을 복원하며, 네이티브 오브젝트를 생성합니다. | Kitploit
도구/GitHubGitHub/rasetsuu/vmp-devirt
Static AnalysisDynamic Analysis (Sandboxing)Code AnalysisReverse EngineeringDebuggersMalware AnalysisUtilities & FrameworksBinary AnalysisPapers & ResearchAI-Assisted ReversingBinary Exploitation
71일 전아직 검토되지 않음
GitHub
rasetsuu/vmp-devirt

vmp-devirt

Trace 기반 VMProtect 디바이추얼라이제이션 연구 플랫폼: 버전 프런트엔드가 공유 Remill/LLVM 백엔드에 입력을 전달하여 핸들러를 리프팅하고, 데이터 흐름을 복원하며, 네이티브 오브젝트를 생성합니다.

저장소 보기

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

vmp-devirt

Trace 기반 VMProtect 디버추얼라이제이션 연구: 버전별 프런트엔드 (1.x gate / 2.x table / 3.x FDJ)가 하나의 공유 백엔드 (Remill lift → LLVM opt → 시맨틱 카드 → 데이터플로우 → 네이티브 오브젝트)를 구동합니다.

여러 보호 모드에 걸쳐 자체 빌드한 VMP 3.9.4 바이너리로 검증되었습니다. VMP 3.8.x/3.10.x 호환성은 실험적이며 샘플에 따라 달라집니다.

범위와 한계 (먼저 읽어보세요)

이것은 소유하거나 리버스 엔지니어링 라이선스가 있는 VMProtect 보호 바이너리를 분석하기 위한 연구 플랫폼이며, 범용적인 원클릭 디버추얼라이저가 아닙니다:

  • VMP 3.7+는 실행이 필요합니다: fetch 스트림, 키, 핸들러 타깃은 정적 분석이 아니라 계측된 Unicorn 스냅샷에서 나옵니다.
  • 커버리지는 트레이스에 종속됩니다: 실행된 경로만 복구됩니다. 다중 상태 실행 + 분기 병합으로 확장할 수 있지만, 복잡한 타깃의 전체 프로그램 CFG 복구는 여전히 수동입니다.
  • 안티 에뮬레이션(타이밍 게이트, I/O 트랩, 환경 검사)에는 타깃별 스텁이 필요합니다 — 하네스는 메커니즘을 제공하고, 값은 사용자가 제공합니다.
  • VMP 1.x/2.x 프런트엔드는 휴리스틱 스캐너입니다. 기존 정적 워커는 교차 검증 오라클로 유지되며, 주 경로가 아닙니다.

레이아웃

src/
  lib.rs               crate 루트, data_dir()
  pe_loader.rs         PE 파싱 / VA 읽기
  opcode_map.rs        표준 3.5.1 opcode -> 핸들러 맵
  frontend/
    mod.rs             VmFrontend 트레이트 (detect/fetch_stream/handler_addrs)
    fetch_finder.rs    movzx-byte FDJ 스캔 + watchset/snapshot 헬퍼
    cryptor_miner.rs   사이트별 ValueCryptor 마이닝 (분기 추적)
    site_emulator.rs   샘플별 오라클 디코더 (레거시)
    handler_classifier.rs  레거시 패턴을 통한 핸들러 분류
    classifier_legacy.rs   첫 바이트 패턴 (약함; 폴백 전용)
    v1_gate.rs         VMP 1.x gate-scan 프런트엔드
    v2_walker.rs       VMP 2.x 디스패치 테이블 프런트엔드
    v3_fdj.rs          VMP 3.x FDJ 프런트엔드
  backend/
    value_cryptor.rs   ADD/SUB/XOR/ROL/ROR/NOT/NEG/... 체인
    lifter.rs          iced-x86 텍스트 리프트 + Remill 서브프로세스 백엔드
    llvm_pipeline.rs   Remill IR에 대한 opt -O3 (실제 패스)
  harness/
    snapshot.rs        Unicorn 스냅샷: 섹션+스크래치 매핑,
                       IN 훅, 임포트 스텁, watch 히트, memlog,
                       zero-slide 패스트 포워드
tests/
  smoke.rs             합성 PE64 + 수작업 fetch 체인 (픽스처 없음)
tools/                 (분석 드라이버; 각각 입력을 문서화함)
scripts/               Triton/angr/Ghidra 헬퍼 (외부 의존성)

빌드

# Debian/Ubuntu (선택적 llvm 기능을 위한 LLVM 22)
sudo apt install llvm-22-dev libclang-22-dev clang-22
cargo build --release          # 순수 Rust (LLVM 링크 없음)
cargo build --release --features llvm   # llvm-sys 링크 검사
pip install triton-library capstone pefile   # python 헬퍼
# Remill (선택적 리프터 백엔드): 업스트림 빌드, export REMILL_LIFT=<path>/remill-lift
# Souper (선택적 MBA 슈퍼옵티마이저): 외부 전용, 원한다면 `souper` CLI를
#   scripts/triton_handlers.py 출력에 연결; 벤더링되지 않음.

Dockerfile은 전체 환경을 재현합니다. CI는 cargo build/test --release를 실행합니다 (기본 기능, LLVM 링크 없음, 상용 픽스처 없음; 샘플 게이트 테스트는 건너뛰고, tests/smoke.rs는 항상 실행됨). 선택적 --features llvm 링크 검사는 비차단 CI 작업으로 실행됩니다 (LLVM 22 필요).

환경

VarDefaultMeaning
DATA_DIR./data모든 도구 아티팩트
WATCH_FILE$DATA_DIR/watch.txt감시할 fetch VA
CARDSopen_cards3.jsonRemill 카드 캐시 파일
BIN_PATH타깃 바이너리 경로 (도구 기본값: ./target.exe 플레이스홀더)타깃 바이너리
IAT_JSON—{api_name: iat_va} 임포트 스텁 맵
VMP_TEST_BIN / VMP_ORACLEtests/fixtures/…라이선스 샘플 테스트
REMILL_LIFTPATH의 remill-lift-22Remill lift 바이너리
DEVIRT / FORCE_EDGE / REPO_ROOT./target/… / .스크립트 호출 바이너리 + 리포 루트
VMP_WORK_DIR시스템 임시lift 스크래치
EFLAGS / IN_RET / DLL_MAIN—스냅샷 상태 변형

방법 (3.x, 검증된 경로)

  1. Unicorn의 진입점에서 바이너리를 스냅샷합니다 (섹션 + 스크래치, zero-page ret, 임포트 스텁, IN 훅).
  2. fetch 사이트를 탐지합니다 (실행된 movzx byte [reg]가 정적 패턴을 앞섭니다 — 정적 전용 히트는 강화된 타깃에서 실행률 0%로 측정됨).
  3. 코드에서 사이트별 크립터를 마이닝합니다 (분기 추적 워크리스트).
  4. 아키텍처 키 레지스터로 raw^key를 디코딩합니다 (자유 스윕은 과적합됨 — 마이닝된 키로 제약).
  5. Remill을 통해 도달한 핸들러를 리프트하고, opt -O3를 실행하고, 카드/데이터플로우를 생성하고, llc로 재컴파일합니다 (ld -r이 합성 가능성을 증명).

라이선스

MIT (LICENSE 참조) 및 의존성 고지 (특히 Unicorn GPL-2.0). 연구/교육 목적 전용, 소유하거나 분석이 허용된 바이너리에 한함.

도구 다운로드