
에뮬레이션 기반 VM 탐색기, 핸들러 프로파일러, 역가상화를 위한 실험적 LLVM 재컴파일러를 사용하여 VMProtect 2로 보호된 바이너리를 언패킹하고 난독화를 해제합니다.
이 저장소는 VMProtect 2로 보호된 바이너리를 다루기 위한 레거시 도구 모음입니다.
이 도구들은 VMProtect 2로 보호된 소프트웨어의 언패킹, 분석 및 실험적 탈가상화를 가능하게 합니다. 이 도구 모음의 핵심은 다른 모든 도구가 사용하는 기반 로직을 제공하는 유틸리티 라이브러리인 **vmprofiler**입니다. 이 라이브러리는 VM 핸들러, 핸들러 테이블, 트랜스폼 등 주요 VMProtect 2 구성 요소를 식별하는 역할을 담당합니다.
4년 이상 된 이 프로젝트에서 얻은 교훈은 탈가상화에 관심이 있는 사람들에게 전달되어야 합니다.
이 프로젝트는 개별 VM 핸들러를 식별하려고 시도합니다. 이 접근 방식은 취약하고 확장성이 없으며, 가상 머신 아키텍처의 변경(다중 핸들러 상호 연결, 복잡한 핸들러 등)으로 무력화될 수 있습니다. 대신 저는 최소한의 VM 특정 난독화 해제 로직을 사용하는 점진적 리프팅 및 제어 흐름 복구 전략을 지지합니다. Saturn, Colton의 Dna, Triton, Mergen과 같은 도구들은 VM 특정 핸들러 식별을 거의 또는 전혀 사용하지 않고 VMProtect 난독화 해제에 성공했습니다. 이 저장소는 VMProtect 2의 아키텍처를 문서화하고 경고의 역할을 합니다: 가상 머신 특정 핸들러 식별에 크게 의존하는 탈가상화 도구 구축을 피하십시오.
VMProtect 탈가상화를 위한 반-일반적 접근 방식은 로드/스토어 전파, 섹션 상수 전파, DCE 및 기타 몇 가지 간단한 최적화를 지원하는 강력한 프레임워크를 요구합니다. 많은 사람들이 LLVM을 사용하여 네이티브로 다시 컴파일하려고 시도합니다. 그러나 저는 이 접근 방식이 항상 만족스럽지 못한 결과를 낳을 것이라고 생각합니다. 우리는 자체 프레임워크인 blare2를 보유하고 있으며, 이는 난독화 해제 목적에 활용하는 깔끔한 1:1 리프트 및 로워링 기능을 제공합니다. 난독화 해제 컨설팅 서비스에 관심이 있다면, 일정이 허락하는 한 이 서비스를 제공할 수 있습니다.
vmemu
Unicorn Engine 기반 가상 머신 탐색 도구.
지정된 vmenter 내에서 보호된 프로그램을 언패킹하고 제어 흐름을 분석할 수 있습니다.
이 도구는 주어진 VM 진입점의 제어 흐름 그래프를 포함하는 .vmp2 파일을 생성합니다.
그런 다음 생성된 .vmp2 파일을 **vmdevirt**에 전달하여 함수를 네이티브 x86으로 다시 컴파일하고 원본 바이너리에 재통합할 수 있습니다. 이 도구는 단순히 함수를 통과하는 단일 경로만 발견하는 단순 트레이서가 아님에 유의하십시오. 실제로 가상 jcc를 식별하고 모든 가상화된 제어 흐름을 탐색합니다.
vmdevirt
.vmp2 파일을 위한 실험적 LLVM 기반 재컴파일러.
기능적으로 작동하지만 매우 실험적이고 불안정한 것으로 간주되며, 이 접근 방식은 일반적으로 권장되지 않습니다.
vmassembler
사용자 정의 가상 머신 연산을 인코딩하기 위한 실험적 어셈블러.
이 프로젝트는 VMProtect 2 가상 머신 아키텍처에 대한 깊은 기술적 이해를 보여줍니다.
vmhook
런타임에 VMProtect 2 가상 머신에 후킹하여 개별 VM 핸들러를 상세히 분석할 수 있게 해주는 도구.
vmprofiler
다른 모든 도구를 구동하는 핵심 유틸리티 라이브러리.
VM 핸들러 패턴 매칭, 핸들러 테이블 추출, 죽은 코드 제거(DCE) 및 기타 필수 분석 루틴을 포함합니다.
vmprofiler-cli
vmprofiler를 위한 명령줄 인터페이스로, 사용자가 추출된 정보를 텍스트 형식으로 표시하고 검사할 수 있게 해줍니다.
vmprofiler-qt
VMProtect 2 바이트코드를 위한 Qt 기반 그래픽 디스어셈블러로, 가상화된 코드의 대화형 시각적 탐색을 제공합니다.
이 페이지의 지침을 따르십시오.
vmhook용 Visual Studios 2022vmassembler, vmemu, vmprofiler 및 vmprofiler-cli 구성:
cmake -B build
cmake --build build
vmdevirt 사용 시 (LLVM을 다운로드하고 빌드합니다!):
cmake -B build -DBUILD_VMDEVIRT=ON -DLLVM_BUILD_TYPE=Release
cmake --build build
vmprofiler-qt 사용 시:
cmake -B build -DBUILD_VMPROFILER_QT=ON
cmake --build build
두 선택 모듈 모두 사용 시:
cmake -B build -DBUILD_VMDEVIRT=ON -DBUILD_VMPROFILER_QT=ON -DLLVM_BUILD_TYPE=Release
cmake --build build
이 도구들은 교육 및 연구 목적으로만 제공됩니다. 불법 활동, 무단 접근, DMCA 또는 기타 법률 위반에 사용되어서는 안 됩니다. 도구 자체는 어떠한 DMCA 규정도 위반하지 않습니다. 모든 작업은 저의 원작이며, 이 도구 사용자가 취하는 모든 행동은 전적으로 해당 사용자의 책임이며 저자의 행동이나 의도를 반영하지 않습니다.