
Vmaware (VM+ Aware)는 가상 머신 감지를위한 크로스 플랫폼 C ++ 라이브러리입니다.
도서관은 다음과 같습니다.
# include " vmaware.hpp "
# include < iostream >
int main () {
if ( VM::detect ()) {
std::cout << " Virtual machine detected! " << " n " ;
} else {
std::cout << " Running on baremetal " << " n " ;
}
std::cout << " VM name: " << VM::brand () << " n " ;
std::cout << " VM type: " << VM::type () << " n " ;
std::cout << " VM certainty: " << ( int ) VM::percentage () << " % " << " n " ;
}가능한 출력 :
Virtual machine detected!
VM name: VirtualBox
VM type: Hypervisor (type 2)
VM certainty: 100%

이 프로젝트는 또한 라이브러리가 할 수있는 일의 잠재력을 최대한 활용하는 작지만 편리한 CLI 도구를 제공합니다. 실행중인 환경에 대한 모든 종류의 세부 사항을 제공합니다.

라이브러리를 설치하려면 최신 릴리스 섹션에서 vmaware.hpp 파일을 프로젝트에 다운로드하십시오. 바이너리도 거기에 있습니다. cmake 또는 공유 객체 연결이 필요하지 않으며 말 그대로 간단합니다.
그러나 전체 프로젝트 (<vmaware.hpp> 및 CLI 도구가 포함 된 전 세계적으로 액세스 가능한 헤더)를 원한다면 다음을 따르십시오.
git clone https://github.com/kernelwernel/VMAware
cd VMAwaresudo dnf/apt/yum update -y # change this to whatever your distro is
mkdir build
cd build
cmake ..
sudo make installcmake -S . -B build/ -G " Visual Studio 16 2019 " # edit this
set ( DIRECTORY "/path/to/your/directory/" )
# if you want the MIT version, toggle this to ON
option (MIT "MIT version" OFF )
if (MIT)
set (EXTENSION "_MIT" )
else ()
set (EXTENSION "" )
endif ()
set ( DESTINATION " ${DIRECTORY} vmaware ${EXTENSION} .hpp" )
if ( NOT EXISTS ${DESTINATION} )
message ( STATUS "Downloading VMAware" )
set (URL "https://github.com/kernelwernel/VMAware/releases/latest/download/vmaware ${EXTENSION} .hpp" )
file (DOWNLOAD ${URL} ${DESTINATION} SHOW_PROGRESS )
else ()
message ( STATUS "VMAware already downloaded, skipping" )
endif ()여기에서 전체 문서를 볼 수 있습니다. 함수, 기술, 설정 및 예제와 같은 모든 세부 사항이 제공됩니다. 날 믿어, 너무 위협적이지 않아;)
저수는 저수준 (CPU, GPU, HDD 및 펌웨어) 및 스코어링 시스템에서 설명되는 고급 VM 기술의 포괄적 인 목록을 사용합니다. 각 기술에 대한 점수 (0-100)는 임의로 제공되며 VM을 감지 한 모든 기술은 점수가 단일 축적 지점에 추가되며, 여기서 임계 값 포인트 번호는 실제로 VM에서 실행되는지 여부를 결정합니다.
보안 연구원, VM 엔지니어, 게이머 개발자 및 프로젝트에서 실용적이고 강력한 VM 탐지 메커니즘이 필요한 사람을 위해 설계되었습니다. 예를 들어, VM을 만들고 자신을 숨기는 효과를 테스트하는 경우 라이브러리가 적합합니다. 게임 개발자/독점 소프트웨어 개발자 인 경우 라이브러리는 리버스 엔지니어에 대해 방해하는 데 유용합니다. 맬웨어 분석가이고 VM의 은폐 기능을 확인하려면 VM이 악성 코일에 대해 얼마나 잘 정중한지 벤치마킹하는 완벽한 도구가 될 것입니다. 또한 소프트웨어는 감지 된 환경에 따라 성능 또는 리소스 사용량을 최적화 할 수 있으며 일부 응용 프로그램은 VM의 사용을 제한하여 무단 배포 또는 테스트를 방지 할 수 있습니다.
Invizzzable, Pafish 및 Al-Khaser와 같이 동일한 목표를 가진 많은 프로젝트가 이미 있습니다. 그러나 위에서 언급 한 프로젝트의 차이점은 비 창화 시스템을 거의 또는 전혀 지원하지 않고 탐지 메커니즘과 상호 작용할 수있는 프로그래밍 가능한 인터페이스를 제공하지 않는다는 것입니다. 나는 CLI 도구를 제공하기보다는 모든 사람이 유용한 것을 얻을 수 있도록 핵심 탐지 기술이 교차 플랫폼 방식으로 프로그래밍 방식으로 액세스 할 수 있기를 원했습니다. 또한 대량의 기술이 포함되어 있으므로 기본적으로 VM 탐지 라이브러리 및 최대의 유연성을 가진 스테로이드의 도구 일뿐입니다.
Thales의 Sentinel RMS 및 VMProtect와 같은 리버스 엔지니어 또는 소프트웨어 크래킹에 대해 다른 소프트웨어의 라이센스를 보호하기위한 몇 가지 유료 소프트웨어가 있습니다. 이들은 VM 탐지 라이브러리만을 의미하지는 않지만 다양한 방식으로 기능이 제한되어 있습니다. Sentinel RMS의 VM 탐지는 많은 VM 브랜드를 가지고 있지 않습니다 (가격은 개인이 아닌 기업을위한 단지 기업을위한 것입니다). VMProtect는 매우 제한된 수의 탐지 기술을 가지고 있으며, 일부는 VM에 대한 몇 가지 구성만으로 우회하기 위해 많은 노력을 기울이지 않아도됩니다 (지금은 누출이 있었기 때문에 현재 근원을 폐쇄 할 수있는 이점이 없습니다). 말하자면, Vmaware의 유일한 단점은 완전히 오픈 소스라는 것입니다. 그러나, 나는 그것이 라이브러리를보다 효과적이고 정확하게 만들기 위해 귀중한 커뮤니티 피드백을 제공하는 것을 포함하여 개방적이고 대화식 방식으로 많은 VM 탐지 기술을 개방적이고 대화식 방식으로 제공함으로써 가치있는 트레이드 오프라고 주장합니다.
Hyper-V는 호스트 시스템에서 활성화 된 경우 CPU 하드웨어 값이 전체 시스템이 Hyper-V 내부에서 실행되는 것처럼 보이는 모호한 기능을 가지고 있습니다. 이로 인해 라이브러리가 수집하는 하드웨어 값이 실제 Hyper-V VM인지 또는 호스트 시스템에서 활성화 한 결과로 Hyper-V가 남긴 것의 아티팩트 일지 여부를 결정하는 데 어려움이 있습니다. 이것이 문제 인 이유는 라이브러리가 호스트 시스템이 Hyper-V에서 실행되고 있다고 거짓으로 결론을 내릴 수 있기 때문입니다. 이곳은 하이퍼 -X 메커니즘 이이 두 가지를 구별하기 위해 작용하는 곳입니다. 이것은 Requiem에 의해 설계되었습니다

예. 사소하게 스푸핑 할 수있는 몇 가지 기술이 있으며, 도서관이 고의적으로 거짓 긍정적이든 잘못된 부정인지 여부에 대해 도서관이 할 수있는 일은 없습니다. 이것은 모든 VM 탐지 프로젝트가 폐쇄 또는 오픈 소스에 직면하는 문제이므로 라이브러리가 실행중인 환경을 기반으로 최상의 결과를 얻기 위해 가능한 모든 기술을 테스트하려고합니다. 모든 것이 기술적으로 스푸핑 가능하다는 것을 기억하십시오.
이 프로젝트는 명백한 이유로 맬웨어 개발을 요청하지 않습니다. 은폐 목적으로 그것을 사용하려고하더라도, 어쨌든 바이러스 백신으로 표시 될 가능성이 높으며 처음에는 난독 화 된 것이 없습니다. C ++ 코드 LMAO의 10K+ 라인을 난독 화하는 좋은 빌어 먹을 행운.
독점 소프트웨어가 라이브러리를 활용할 수 있도록 엄격하게 MIT를 만들었을 것입니다. 그러나 사용 된 기술 중 일부는 GPL 3.0 프로젝트에서 나온 것이며, 법적 이유로 동일한 라이센스를 사용하는 것 외에는 선택의 여지가 없습니다. 이것은 모든 GPL 코드없이 MIT 버전을 만들 겠다는 아이디어를 제공하므로 코드를 오픈 소스로 강요하지 않고도 사용할 수 있습니다. MIT 버전은 116 개 중 12 개 기술 (1.9 버전)과 기술 수가 적을수록 전체 결과가 정확하지 않을 수 있습니다.
GCC 또는 Clang으로 컴파일하는 경우
-lm및-lstdc++플래그를 추가하거나 대신 g ++/clang ++ 컴파일러를 사용하십시오. Linux의 새로운 VM 환경에서 링커 오류를받는 경우sudo apt/dnf/yum update -y로 시스템을 업데이트하여 필요한 C ++ 구성 요소를 설치하십시오.
제안, 아이디어 또는 종류의 기여가 있으면 언제든지 물어보십시오! 이 문제 섹션에서 논의 할 수있는 기꺼이 더 기뻐할 것입니다. 개인적으로 개인적으로 무언가를 요청하고 싶다면 내 불화는 kr.nl 입니다.
그리고이 프로젝트가 유용하다는 것을 알게되면, 별은 감사 할 것입니다 :)
이 프로젝트의 악의적 인 사용을 통해 귀하가 발생하는 손해에 대해 책임을지지 않거나 책임을지지 않습니다.
라이센스 : GPL-3.0/MIT