别再被 VMProtect 盯上:3 步搞定 VMware 反虚拟机检测绕过
【免费下载链接】VmwareHardenedLoaderVmware Hardened VM detection mitigation loader (anti anti-vm)项目地址: https://gitcode.com/gh_mirrors/vm/VmwareHardenedLoader
VMProtect、Safengine、Themida 会读 CPUID、SMBIOS、MAC 前缀和 VMware 后门指令认出虚拟机,命中就弹窗、拒绝运行甚至崩溃。VmwareHardenedLoader 的内核驱动在运行时给 SystemFirmwareTable 打补丁,抹掉 "VMware""Virtual" 等特征串,让虚拟机骗过反虚拟机检测。
动手前自查:4 个硬前提
| 项目 | 要求 | 不满足的后果 |
|---|---|---|
| 客户机系统 | Windows Vista~Win10,仅 x64 | x86 不支持,驱动无法加载 |
| 编译器 | Visual Studio 2015 或 2017 | 工程打不开、编译报错 |
| 驱动组件 | Windows Driver Kit 10 | 缺内核头文件,编译中断 |
| 编译配置 | 只选 x64/Release | 其他配置无可用产出 |
| 远程方式 | TeamViewer / mstsc,别装 VMware Tools | 后门痕迹全部重来 |
一条龙落地:编译 → 签名 → 调优 → 验证
编译 vmloader.sys 并做测试签名
git clone https://gitcode.com/gh_mirrors/vm/VmwareHardenedLoader,用 VS 打开VmLoader.sln,选 x64/Release 生成,产出在bin/vmloader.sys。
这里最容易翻车:驱动要过系统签名校验,必须做测试签名(测试签名是 Windows 允许加载非微软签名驱动的特殊模式)。用测试证书signtool sign签一下,再执行bcdedit /set testsigning on并重启。预期:签名无报错,桌面右下角出现"测试模式"水印。
VMware 反检测 .vmx 参数配置
.vmx 是虚拟机的纯文本配置文件,改完必须重启虚拟机才生效。先关机,用文本编辑器打开 .vmx,追加:
hypervisor.cpuid.v0 = "FALSE" board-id.reflectHost = "TRUE" hw.model.reflectHost = "TRUE" serialNumber.reflectHost = "TRUE" smbios.reflectHost = "TRUE" SMBIOS.noOEMStrings = "TRUE" isolation.tools.getPtrLocation.disable = "TRUE" isolation.tools.setPtrLocation.disable = "TRUE" isolation.tools.setVersion.disable = "TRUE" isolation.tools.getVersion.disable = "TRUE" monitor_control.disable_directexec = "TRUE" monitor_control.disable_chksimd = "TRUE" monitor_control.disable_ntreloc = "TRUE" monitor_control.disable_selfmod = "TRUE" monitor_control.disable_reloc = "TRUE" monitor_control.disable_btinout = "TRUE" monitor_control.disable_btmemspace = "TRUE" monitor_control.disable_btpriv = "TRUE" monitor_control.disable_btseg = "TRUE" monitor_control.restrict_backdoor = "TRUE"reflectHost 系列参数是把宿主机的真实主板、型号、序列号、SMBIOS 反映给客户机,查询结果就不再露出虚拟字样。系统盘挂在 scsi0 槽位的话,顺手改掉 SCSI 盘的产品/厂商 ID:
scsi0:0.productID = "Tencent SSD" scsi0:0.vendorID = "Tencent"预期:开机后在客户机里查主板、序列号,显示宿主机真值,查不到 VMware 字样。
虚拟机 MAC 地址改法 + 加载驱动验证
MAC 是第三个泄露点。VMware 默认分给虚拟网卡的 MAC 前缀(00:05:69、00:0C:29、00:1C:14、00:50:56)都是 VMware 的 OUI,一眼被反虚拟机检测识破。直接在 .vmx 里覆盖最稳:
ethernet0.address = "00:11:56:20:D2:E8"改完这一步再跑一次:开机,以客户机管理员身份执行 install.bat 加载驱动。预期 ✅:服务启动无报错;再跑一个 VMProtect 3.2 的 anti-vm 测试程序,能正常打开、不再弹窗。驱动核心逻辑可看 VmLoader/ 下的 main.cpp。
仍被检测时的排查表:症状 → 可能原因 → 处理动作
| 症状 | 可能原因 | 处理动作 |
|---|---|---|
| CPUID 探测仍命中,判为虚拟机 | hypervisor.cpuid.v0 没加,或 .vmx 改完没重启 | 补上参数,冷启动虚拟机 |
| 磁盘信息显示 VMware 虚拟盘 | scsi0 槽位没改 productID/vendorID | 补两行 SCSI 参数 |
| MAC 仍是 00:05:69 等默认前缀 | GUI 设置被 .vmx 覆盖或未生效 | 用 ethernet0.address 写死随机 MAC |
| 驱动服务启动失败 | vmloader.sys 没测试签名,或 testsigning 没开 | 重新 signtool 签名,开 testsigning |
| 装完仍被 Themida 识别 | VMware Tools 把后门又打开了 | 卸载 Tools,远程改用 mstsc |
参数速查表与 3 个高频坑
| 参数 | 作用 | 建议值 |
|---|---|---|
| hypervisor.cpuid.v0 | 隐藏 CPUID 里的 VMware 特性位 | "FALSE" |
| board-id / hw.model / serialNumber / smbios 的 .reflectHost | 反映宿主机真实硬件信息 | "TRUE" |
| SMBIOS.noOEMStrings | 去掉 SMBIOS 里的 OEM 特征串 | "TRUE" |
| isolation.tools.*.disable | 切断 Tools 后门通信 | "TRUE" |
| monitor_control.disable_* / restrict_backdoor | 切断 monitor 后门指令 | "TRUE" |
| scsi0:0.productID / vendorID | 换 SCSI 盘型号与厂商 | 任一真实产品型号 |
| ethernet0.address | 覆盖默认 MAC | 无 VMware 前缀的随机 MAC |
3 个最容易踩的坑,各一句话:
- ⚠️ 别装 VMware Tools,它会把你刚封的后门全部重新打开。
- ⚠️ 测试签名别省,签名和 testsigning 缺一不可,否则驱动根本起不来。
- ⚠️ 只认 x64/Release 配置,x86 这条项目明确不支持。
【免费下载链接】VmwareHardenedLoaderVmware Hardened VM detection mitigation loader (anti anti-vm)项目地址: https://gitcode.com/gh_mirrors/vm/VmwareHardenedLoader
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考