kernelwernel/VMAware

GitHub: kernelwernel/VMAware

跨平台 C++ 虚拟机检测框架,提供约 90 种检测技术识别 70 多种虚拟化环境并支持加固检测。

Stars: 1103 | Forks: 117


Ask DeepWiki CodeQL Analysis

VMAware (VM + Aware) 是一个跨平台的 C++ 虚拟机检测框架。

中文 🇨🇳 | Français 🇫🇷 | 한국어 🇰🇷

该库具有以下特点: - 非常易于使用 - 跨平台(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
## 常见问题解答 ❓
它是如何工作的?
这个库是为谁准备的,有哪些用例?
为什么还要再做一个 VM 检测项目?