
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中的用法以防止未经授权的分发或测试。
已经有许多具有相同目标的项目,例如Invizzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzle,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所剩下的,这是一个挑战。之所以出现问题,是因为库可能会错误地得出您的主机系统在Hyper-V中运行,这是假阳性。这是Hyper-X机制的发挥作用,以区分这两种。这是由安魂曲设计的

是的。有些技术在欺骗性上是可疑的,无论是故意的假阳性还是伪造的负面,图书馆对此无能为力。这是每个VM检测项目都面临的问题,无论是封闭还是开源,这就是为什么图书馆试图测试可能基于其运行的环境获得最佳结果的每种技术的原因。请记住,一切在技术上都是可欺骗的。
出于明显的原因,该项目没有征求恶意软件的开发。即使您打算将其用于隐藏目的,无论如何,它很可能会被防病毒标记,一开始没有任何混淆。好的运气混淆10k+ C ++代码lmao行。
我本来会严格地将其付诸实践,因此专有软件可以利用图书馆,但是使用的一些技术来自GPL 3.0项目,出于法律原因,我别无选择,只能使用相同的许可证。这给了我一个想法,可以在没有所有GPL代码的情况下制作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