kernelwernel/VMAware
GitHub: kernelwernel/VMAware
跨平台 C++ 虚拟机检测框架,提供约 90 种检测技术识别 70 多种虚拟化环境并支持加固检测。
Stars: 1103 | Forks: 117
该库具有以下特点:
- 非常易于使用
- 跨平台(Windows + MacOS + Linux)
- 包含约 90 种独特的 VM 检测技术 [[列表](https://github.com/kernelwernel/VMAware/blob/main/docs/documentation.md#flag-table)]
- 采用最前沿的技术
- 能够检测约 70 种 VM 品牌,包括 VMware、VirtualBox、QEMU、Hyper-V 等 [[列表](https://github.com/kernelwernel/VMAware/blob/main/docs/documentation.md#brand-table)]
- 能够对抗 VM 加固工具
- 兼容 x86 和 ARM,并向下兼容 32 位系统
- 非常灵活,可以精细控制执行哪些技术
- 能够检测各种 VM 和半 VM 技术,如 hypervisor、emulator、container、sandbox 等
- 支持 C++11 及以上版本
- Header-only(仅需头文件)
- 无任何外部依赖
- 支持记忆化(Memoization),即缓存过往结果并在再次运行时调用以提升性能
- 完全采用 MIT 许可证,允许无限制使用和分发
## 示例 🧪 ``` #include "vmaware.hpp" #include
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";
std::cout << "VM hardening: " << (VM::is_hardened() ? "likely" : "not found") << "\n";
}
```
可能的输出:
```
Virtual machine detected!
VM name: VirtualBox
VM type: Hypervisor (type 2)
VM certainty: 100%
VM hardening: not found
```
## 结构 ⚙️
## 命令行工具 🔧 本项目还提供了一个便捷的命令行(CLI)工具,充分利用了该库的潜力。它同样支持跨平台。 以下是在 Linux 上未经加固修改的基本 QEMU 系统的示例。
## 安装 📥 要安装该库,请将最新 [发布版块](https://github.com/kernelwernel/VMAware/releases/latest) 中的 `vmaware.hpp` 文件下载到您的项目中。二进制文件也位于该处。无需 CMake 或共享对象链接,真的就这么简单。 但是,如果您想要完整的项目(包括可通过 `` 全局访问的头文件和 CLI 工具),请执行以下命令:
```
git clone https://github.com/kernelwernel/VMAware
cd VMAware
```
### 适用于 LINUX:
```
sudo dnf/apt/yum update -y # change this to whatever your distro is
mkdir build
cd build
cmake ..
sudo make install
```
### 适用于 MACOS:
```
mkdir build
cd build
cmake ..
sudo make install
```
### 适用于 WINDOWS:
```
cmake -S . -B build/ -G "Visual Studio 16 2019"
```
或者,您可以在 cmake 参数中追加 `-DCMAKE_BUILD_TYPE=Debug` 来创建调试版本。
### CMake 安装 ``` # 编辑此项 set(DIRECTORY "/path/to/your/directory/") set(DESTINATION "${DIRECTORY}vmaware.hpp") if (NOT EXISTS ${DESTINATION}) message(STATUS "Downloading VMAware") set(URL "https://github.com/kernelwernel/VMAware/releases/latest/download/vmaware.hpp") file(DOWNLOAD ${URL} ${DESTINATION} SHOW_PROGRESS) else() message(STATUS "VMAware already downloaded, skipping") endif() ``` 模块文件和函数版本位于[此处](auxiliary/vmaware_download.cmake)
## 文档与代码概览 📒 您可以在[此处](docs/documentation.md)查看完整文档。其中提供了函数、技术、设置和示例等所有细节。相信我,它没那么难 ;) 如果您想了解该库的架构和设计,请访问 https://deepwiki.com/kernelwernel/VMAware
## 常见问题解答 ❓
## 示例 🧪 ``` #include "vmaware.hpp" #include
## 结构 ⚙️
## 命令行工具 🔧 本项目还提供了一个便捷的命令行(CLI)工具,充分利用了该库的潜力。它同样支持跨平台。 以下是在 Linux 上未经加固修改的基本 QEMU 系统的示例。
## 安装 📥 要安装该库,请将最新 [发布版块](https://github.com/kernelwernel/VMAware/releases/latest) 中的 `vmaware.hpp` 文件下载到您的项目中。二进制文件也位于该处。无需 CMake 或共享对象链接,真的就这么简单。 但是,如果您想要完整的项目(包括可通过 `
### CMake 安装 ``` # 编辑此项 set(DIRECTORY "/path/to/your/directory/") set(DESTINATION "${DIRECTORY}vmaware.hpp") if (NOT EXISTS ${DESTINATION}) message(STATUS "Downloading VMAware") set(URL "https://github.com/kernelwernel/VMAware/releases/latest/download/vmaware.hpp") file(DOWNLOAD ${URL} ${DESTINATION} SHOW_PROGRESS) else() message(STATUS "VMAware already downloaded, skipping") endif() ``` 模块文件和函数版本位于[此处](auxiliary/vmaware_download.cmake)
## 文档与代码概览 📒 您可以在[此处](docs/documentation.md)查看完整文档。其中提供了函数、技术、设置和示例等所有细节。相信我,它没那么难 ;) 如果您想了解该库的架构和设计,请访问 https://deepwiki.com/kernelwernel/VMAware
## 常见问题解答 ❓