hzqst/VmwareHardenedLoader
GitHub: hzqst/VmwareHardenedLoader
一款运行于 Windows x64 客户机内的内核驱动,通过修补固件表和隐藏多种虚拟化特征,帮助 VMware 虚拟机绕过 VMProtect、Themida 等软件的反虚拟机检测。
Stars: 2280 | Forks: 534
# VMwareHardenedLoader
VMware 虚拟机强化反检测加载器
目前仅支持 Windows (vista~win10) x64 客户机。
它可以使 VMware 客户机免受 VMProtect 3.2、Safengine 和 Themida(反虚拟机功能)的检测。
## 它的功能
VmLoader 驱动程序在运行时修补 SystemFirmwareTable,移除所有可检测到的签名,如 "VMware"、"Virtual" 和 "VMWARE"。
## 构建
需要 Visual Studio 2015 / 2017 和 [Windows Driver Kit 10](https://docs.microsoft.com/zh-cn/windows-hardware/drivers/download-the-wdk)。
使用 Visual Studio 2015 / 2017 打开 VmLoader.sln
将 VmLoader 构建为 x64/Release。(目前不支持 x86)
如果要在测试签名模式下加载,请记住对 "bin/vmloader.sys" 进行测试签名。
# 安装说明
## 警告
不要安装 vmtools,它会破坏一切!
请改用 TeamViewer / AnyDesk / mstsc / VNC viewer!
## 第一步:在 .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"
```
如果你在 scsi0 插槽(第一个插槽)有一个 SCSI 虚拟磁盘作为系统盘,请记住添加
```
scsi0:0.productID = "Whatever you want"
scsi0:0.vendorID = "Whatever you want"
```
我使用的是
```
scsi0:0.productID = "Tencent SSD"
scsi0:0.vendorID = "Tencent"
```
## 第二步:修改 MAC 地址
将客户机的 MAC 地址修改为除以下之外的任何地址:
```
TCHAR *szMac[][2] = {
{ _T("\x00\x05\x69"), _T("00:05:69") }, // VMWare, Inc.
{ _T("\x00\x0C\x29"), _T("00:0c:29") }, // VMWare, Inc.
{ _T("\x00\x1C\x14"), _T("00:1C:14") }, // VMWare, Inc.
{ _T("\x00\x50\x56"), _T("00:50:56") }, // VMWare, Inc.
};
```

你可以将
```
ethernet0.address = "Some random mac address"
```
添加到 vmx 文件中,而不是在 VMware GUI 中修改 MAC 地址
我使用的是
```
ethernet0.address = "00:11:56:20:D2:E8"
```
## 第三步:以管理员权限在虚拟机客户机中运行 install.bat
如果在启动服务时发生错误,请使用 DbgView 捕获内核调试输出。你可以发布一个 issue,附带 DbgView 的输出信息以及你的 ntoskrnl.exe。
如果没有发生错误,那么说明一切运行正常。
## 展示
带有 VMProtect 3.2 加壳程序(启用了反虚拟机选项)的 VMware 客户机 win8.1 x64



## 许可证
本软件在 MIT 许可证下发布,详见 LICENSE。
部分实用程序源自 https://github.com/tandasat/HyperPlatform
使用 https://github.com/aquynh/capstone 对 ntoskrnl 代码进行反汇编。
## 待办事项
通过查询 DXGI 接口可以检测到 VMware 虚拟显卡信息,这可以通过编辑显卡驱动文件来进行修改。
标签:Anti-VM, DAST, Safengine, SystemFirmwareTable, Themida, UML, Visual Studio, VMProtect, VMware, VMX配置, WDK, Windows x64, 云资产清单, 内核补丁, 反检测, 反虚拟机检测, 安全分析环境, 安全对抗, 客户端加密, 恶意软件分析, 游戏反作弊, 网络安全监控, 脱壳/加壳, 虚拟化安全, 虚拟机隐藏, 逆向工程, 驱动开发