news 2026/8/24 1:52:41

VMware 虚拟机反检测完整指南:3 步部署 VmwareHardenedLoader,让 VMProtect 3.2 查不出虚拟机

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
VMware 虚拟机反检测完整指南:3 步部署 VmwareHardenedLoader,让 VMProtect 3.2 查不出虚拟机

VMware 虚拟机反检测完整指南:3 步部署 VmwareHardenedLoader,让 VMProtect 3.2 查不出虚拟机

【免费下载链接】VmwareHardenedLoaderVmware Hardened VM detection mitigation loader (anti anti-vm)项目地址: https://gitcode.com/gh_mirrors/vm/VmwareHardenedLoader

VmwareHardenedLoader 是一个运行在 VMware Windows x64 客户机中的内核驱动:它实时修补系统固件表,抹掉 "VMware"、"Virtual"、"VMWARE" 这类可被识别的特征串,让 VMProtect 3.2、Safengine、Themida 的反虚拟机(anti-VM)校验直接失效。适合做逆向分析、软件测试、隔离实验,又不想被"虚拟机身份"出卖的开发者。

🗺️ 能力全景:一张表看清它挡掉哪些检测

检测面对方常见手段本项目对策
固件表RtlGetSystemFirmwareTable读 SMBIOS/ACPI 表,搜 "VMware" 字符串内核态挂钩固件查询处理器,查询返回前实时改写缓冲
CPUID读 hypervisor 位 / hypervisor 品牌串.vmxhypervisor.cpuid.v0 = "FALSE"隐藏
硬件指纹主板、机型、序列号、SMBIOS OEM 串全是 VMware 默认值.vmx*.reflectHost参数组反射宿主机真实信息
网络 MACMAC 前缀00:05:69/00:0C:29/00:1C:14/00:50:56属 VMware换 MAC,或.vmxethernet0.address
后门接口VMware backdoor、tools 版本/指针查询.vmxmonitor_control.*isolation.tools.*参数组
磁盘型号SCSI 系统盘 vendorID/productID 是默认值scsi0:0.productID/scsi0:0.vendorID覆盖

一个前提要说在前面:目前仅支持 Windows Vista ~ Win10 的 x64 客户机,没有 x86 构建,macOS/ARM 客户机不适用。

🚀 三步上手:编译、配 vmx、装驱动

第 1 步:宿主机编译驱动

环境要求 Visual Studio 2015/2017 + WDK 10:

git clone https://gitcode.com/gh_mirrors/vm/VmwareHardenedLoader

用 VS 打开根目录VmLoader.sln,选x64/Release生成。如果客户机没开测试签名,记得先给bin\vmloader.sys做 test-sign。驱动本体代码在VmLoader/main.cpp,反汇编相关的内核适配在VmLoader/cs_driver_mm.cVmLoader/kernel_stl.cpp

第 2 步:改 .vmx 配置与 MAC

把下面这些键值写进.vmx(关键项摘录,完整 19 行参数在项目根README.md里):

hypervisor.cpuid.v0 = "FALSE" board-id.reflectHost = "TRUE" hw.model.reflectHost = "TRUE" serialNumber.reflectHost = "TRUE" smbios.reflectHost = "TRUE" SMBIOS.noOEMStrings = "TRUE" ; isolation.tools.* 四项(getPtrLocation/setPtrLocation/setVersion/getVersion)全部 "TRUE" ; monitor_control.* 十项(disable_directexec ... restrict_backdoor)全部 "TRUE" ethernet0.address = "00:11:56:20:D2:E8"

如果系统盘是 scsi0 槽的 SCSI 虚拟磁盘,再补两行:

scsi0:0.productID = "Tencent SSD" scsi0:0.vendorID = "Tencent"

MAC 也可以在 VMware 图形界面里改:虚拟机设置 → 网络适配器 → NAT 高级 → MAC 地址,如图(img/4.png):

新 MAC 的前三个字节不能落在上表那四个 VMware OUI 前缀里,否则等于白改。

第 3 步:客户机里加载驱动

以管理员身份运行install.bat,服务正常拉起即成功。先别急着装 VMware Tools——它自带的工具栈会把你前面做的伪装全部漏掉,远程桌面请走 mstsc / TeamViewer / AnyDesk / VNC。

🔍 原理透视:驱动到底改了什么

特征码 + 内核态反汇编,定位固件表管理器

Windows 查固件表统一走ExpFirmwareTable,但相关全局变量没有导出符号。DriverEntry的处理路径是:

  1. ZwQuerySystemInformation(SystemModuleInformation)枚举模块表,定位ntoskrnl基址;
  2. .PAGE段里搜固定特征41 B8 41 52 46 54mov r8d, 'TFRA'指令);
  3. 从该指令起逐条反汇编、沿分支最多跟踪 16 层,认出ExpFirmwareTableResourceExpFirmwareTableProviderListHead两个地址。

第 3 步用的就是项目自带的 capstone 反汇编引擎(capstone/目录,含完整的 x86 表与 MC 测试套件 的移植内核版),kernel_stl.cpp则提供内核环境下的部分 STL 容器支持。

在 ACPI / RSMB / FIRM 三条查询路径上挂钩

定位到FirmwareTableProviderList后,驱动遍历这张链表,按 Provider 签名找到三个节点,把各自的FirmwareTableHandler换成包装函数:

  • ACPI节点:查询成功后抹掉VMwareVirtual
  • RSMB/FIRM节点:抹掉VMwareVMWARE

包装函数先调原处理器拿到真实表缓冲,再做一次内存搜索,把命中字节整段覆盖成'7'。未处理时的固件表长这样(img/2.png),高亮的 "VMware SVGA II" 就是重写目标:

卸载即还原

DriverUnload会再次持有ExpFirmwareTableResource锁,遍历链表把三个处理器逐一换回原函数(main.cppDriverUnload),所以这套修改是运行时、可逆的——卸载驱动、重启客户机即可恢复原状,不碰任何磁盘文件。

✅ 效果验证:怎么确认它生效了

看检测方。跑一个开启 anti-vm 选项的 VMProtect 3.2 保护程序。没部署驱动时它会弹窗拒绝运行(img/1.png即部署前状态):

部署成功后同样的程序直接跑通,不再弹 "cannot run under a Virtual Machine"。

看驱动方。用 DbgView 抓内核调试输出,正常序列是:SystemFirmwareTableInformation calledrequesting FIRM, act 1, table 786432, ret=00000023(查询前的无权限占位)→ret=00000000(查询成功,拿到的是已清洗的表)。img/3.png展示的就是生效后的输出:

看特征方。用十六进制工具转储 SMBIOS/ACPI 表缓冲,原先的 "VMware" 字符串应全部变为77777777占位。

⚠️ 避坑清单:5 个最容易翻车的地方

  • 装完 VMware Tools 后又被告密→ 现象:全套配置做完仍被识别 → 原因:tools 自带 backdoor 与版本查询通道 → 处理:彻底不装 tools,远程一律走 mstsc / TeamViewer / AnyDesk / VNC。
  • install.bat 一执行服务就起不来→ 现象:启动服务报错 → 原因:vmloader.sys没 test-sign,或特征与该版本ntoskrnl不匹配 → 处理:先补签名;仍失败用 DbgView 抓内核输出,连同ntoskrnl.exe一起提 issue。
  • 换了 MAC 依然被识破→ 现象:网络侧检测照旧 → 原因:新 MAC 前缀仍落在四个 VMware OUI 段内 → 处理:重新生成随机 MAC,或直接在.vmx里写ethernet0.address
  • 32 位系统/虚拟机想复用→ 现象:找不到对应产物、编译无 x86 配置 → 原因:项目仅支持 Vista~Win10 x64 客户机 → 处理:换 x64 客户机,别无捷径。
  • 显卡信息仍能被查出来→ 现象:经 DXGI 接口问到虚拟显卡型号 → 原因:显卡驱动文件本身携带 VMware 信息,属已知 TODO → 处理:按 README 提示修改显卡驱动文件,或接受此残留。

🧩 进阶玩法

  • 扩特征清单RemoveSigs是纯内存搜索替换,往MyFIRMHandler/MyACPIHandler里追加自己的字符串即可覆盖更多变体;同理也可以再挂新的 Provider 签名节点。
  • 伪造"物理机指纹"*.reflectHost参数会让客户机反射宿主机真实的主板/序列号/SMBIOS,配合一台品牌机做宿主,得到的指纹与真机几乎无法区分。
  • 内核工程参考cs_driver_mm.c(内核态内存分配适配)+kernel_stl.cpp(STL 子集)是"在 Windows 内核里跑 C++ 反汇编器"的少见完整样例,值得细读。

结语

VmwareHardenedLoader 的体量不大,但把 VMware 反虚拟机检测里最硬的一层——固件表查询——用"定位、挂钩、清洗、可逆"四步完整拿下,且与 .vmx 侧参数形成内外配合。边界同样明确:只针对 VMware、只覆盖 Windows x64 客户机,显卡 DXGI 泄漏尚待处理。对逆向分析、隔离测试、兼容性验证这类场景,它是环境准备清单里值得加的一项。

【免费下载链接】VmwareHardenedLoaderVmware Hardened VM detection mitigation loader (anti anti-vm)项目地址: https://gitcode.com/gh_mirrors/vm/VmwareHardenedLoader

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/24 1:50:48

PAIR:前缀感知内部奖励模型如何优化多轮对话Agent学习效率

1. 从“奖励模型”到“内部奖励模型”:为什么我们需要PAIR?如果你最近在关注大语言模型(LLM)驱动的智能体(Agent)优化,尤其是那些需要多轮对话才能完成复杂任务(比如写代码、数据分析…

作者头像 李华
网站建设 2026/8/24 1:50:38

AI智能体长程记忆管理:基于轻量评分器的选择性遗忘机制

1. 项目概述:当AI智能体需要“选择性遗忘” 最近在折腾AI智能体(Agent)项目时,我遇到了一个几乎所有开发者都会头疼的经典问题:内存不够用。不是物理内存,而是模型上下文窗口(Context Window&am…

作者头像 李华
网站建设 2026/8/24 1:50:36

CMWTAT_Digital_Edition 使用教程:3 步完成 Windows 数字权利激活

CMWTAT_Digital_Edition 使用教程:3 步完成 Windows 数字权利激活 【免费下载链接】CMWTAT_Digital_Edition CloudMoe Windows 10/11 Activation Toolkit get digital license, the best open source Win 10/11 activator in GitHub. GitHub 上最棒的开源 Win10/Win…

作者头像 李华
网站建设 2026/8/24 1:50:25

MiroFish 完整部署指南:从一条命令到第一次预测

MiroFish 完整部署指南:从一条命令到第一次预测 【免费下载链接】MiroFish A Simple and Universal Swarm Intelligence Engine, Predicting Anything. 简洁通用的群体智能引擎,预测万物 项目地址: https://gitcode.com/GitHub_Trending/mi/MiroFish …

作者头像 李华
网站建设 2026/8/24 1:50:10

无人机反制核心技术解析:雷达探测与信号干扰的协同防御

1. 项目概述:当天空不再“自由” 最近几年,无人机这东西真是越来越常见了。从最开始影视航拍里的“高级玩具”,到现在物流配送、农业植保、电力巡检甚至活动现场的“常客”,它飞进了各行各业。但随之而来的,是一些让人…

作者头像 李华
网站建设 2026/8/24 1:48:46

FactorioLab:免费开源的工厂游戏资源计算器完整上手指南

FactorioLab:免费开源的工厂游戏资源计算器完整上手指南 【免费下载链接】factoriolab Angular-based calculator for factory games like Factorio and Dyson Sphere Program 项目地址: https://gitcode.com/gh_mirrors/fa/factoriolab FactorioLab 是一款免…

作者头像 李华