大多数软件/加壳程序(VMProtect、Themida、Safengine 等)检测 VMware 主要靠 CPUID 指令、VMware Backdoor I/O 端口、SMBIOS 中的 "VMware" 字符串、VMware Tools 特征、特定 MAC 地址。要"反检测"就是把这些特征隐藏掉。
⚠️ 注意:此操作会使 VMware Tools 部分功能失效(剪贴板、文件共享等),且无法绕过内核级反作弊(BattlEye/EAC/Vanguard 会检测 Hypervisor 位和更多痕迹)。仅适用于绕过加壳软件/普通程序的虚拟机检测。
一、修改 .vmx 配置文件(核心步骤)
完全关闭虚拟机(必须关机,不能挂起)。
找到虚拟机目录下的
你的虚拟机名.vmx文件,用记事本打开。在文件末尾追加以下内容(注意不要与已有 key 重复):
# 隐藏 CPUID 中的 hypervisor 标志,绕过 CPUID 检测
hypervisor.cpuid.v0 = "FALSE"
# 关闭 VMware Backdoor(IN 指令检测),绕过 VMProtect/Themida 常用检测
monitor_control.restrict_backdoor = "TRUE"
# 禁用 Tools 版本探测和指针操作,减少特征暴露
isolation.tools.getVersion.disable = "TRUE"
isolation.tools.setVersion.disable = "TRUE"
isolation.tools.getPtrLocation.disable = "TRUE"
isolation.tools.setPtrLocation.disable = "TRUE"
# 伪造/反射宿主机 SMBIOS,去掉 BIOS 里的 "VMware" 字样
smbios.reflectHost = "TRUE"
board-id.reflectHost = "TRUE"
hw.model.reflectHost = "TRUE"
serialNumber.reflectHost = "TRUE"
smbios.noOEMStrings = "TRUE"
# 可选:禁用部分直接执行以干扰指令级检测
monitor_control.disable_directexec = "TRUE"
monitor_control.disable_chksimd = "TRUE"
monitor_control.disable_selfmod = "TRUE"
monitor_control.disable_reloc = "TRUE"保存后启动虚拟机。
二、修改虚拟硬件特征
改 MAC 地址:VMware 默认 MAC 前缀 00:05:69、00:0C:29、00:50:56易被识别。在 .vmx加:
ethernet0.address = "00:11:22:33:44:55"
ethernet0.AddressType = "static"或用 VMware 设置界面→网络适配器→高级→手动指定。
伪装磁盘/网卡显示名(注册表,虚拟机内操作):
运行
regedit→HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum,找到含VMware、Virtual字样的磁盘控制器/网卡/SVGA 设备,把FriendlyName改成物理硬件名(如Samsung SSD 860 EVO、NVIDIA GeForce GTX 1060),重启生效。
三、进阶——强检测场景
如果上面还不够(如 VMP 3.0+、Safengine 深度检测 SMBIOS 残余字符串),可以:
使用 VmwareHardenedLoader(开源内核驱动,Hook
SystemFirmwareTable过滤 VMware 关键词)配合上述 .vmx 配置。自行 Patch VMware BIOS ROM(Phoenix BIOS Editor 修改 DMI 字符串),在 .vmx 中指定
bios440.filename = "patched_bios.rom"。