How do I hide the fact to Windows that it runs in a VM?

speedbird

Well-Known Member
Nov 3, 2017
73
8
48
Hey guys!
Right now, you're my very last resort so far... I'm actually in need for a solution to my problem.

The constellation:
AMD Ryzen 5 3600X CPU
32GB RAM
2x SSD Blades
2x GPUs with PCIe passthrough
2x Windows 10 Virtual Machines

What I do is, that I use one rig with two GPUs passed through to two virtual machines so me and my daughter can game on the very same hardware. That setup worked flawlessly for almost two years now.

However, just recently, one of the games I play (RUST) actually started to cause problems, because every time I try to open it, EAC (Easy Anti Cheat) complains about the fact, that it's running in a virtual machine and therefor refuses to run the game. So I'm pretty much stuck now not being able to play one of my most favorite games.

I've tried contacting EAC about that -> no help, no response, nothing. I've tried contacting the game developer about that -> no help, no response.

So you guys are my only hope right now, because if EAC doesn't like the game being run in a VM, I need the VM to not tell anyone it actually is a VM or to put it in other words: Windows shouldn't be knowing it's a VM but rather just a normal PC setup on bare metal.

Is there any way I can actually achieve this with some kind of parameters in the VM settings or is there any other method to not expose the virtual nature of that very machine. I already tried setting CPU settings to host so it doesn't see an emulated CPU but that also doesn't make any difference. It still knows that it's not the real deal.

Please let me know if there's any way to achieve this tricking.

Thank you so much!
 
For Everyone in the Future with Anticheat Problem: args: -cpu host,-hypervisor,kvm=off + SCSI Controller = LSI + MAC Address to Real Intel Vendor ID. Also Delete whole Registry with all EasyAntiCheat Entrys. Delete C:/User/USERNAME/Roaming/EasyAntiCheat. Reinstall EasyAntiCheat Service Via Steamapp Folder. Change Bios Vendor String in VM Options.
 
After all my changes i disabled args: -cpu host,-hypervisor,kvm=off again. used LSI Controller, changed Bios String, added a real intel MAC to NIC. Resetet EAC again and all works now fine :)
 
Change Bios Vendor String in VM Options.

Could you elaborate where to do that and what to put in there please? I tried the things you suggested and even got myself a real MAC Adress but what happens now is that I'm thrown into UEFI shell only. Thanks!

// EDIT //

I just found out it was the switch to LSI Controller that stopped the machine from booting. I used virtio-scsi before and now, when I change the controller to LSI it doesn't boot anymore.

How do I get this running with LSI ?
Thanks!
 
Last edited:
Could you elaborate where to do that and what to put in there please? I tried the things you suggested and even got myself a real MAC Adress but what happens now is that I'm thrown into UEFI shell only. Thanks!

// EDIT //

I just found out it was the switch to LSI Controller that stopped the machine from booting. I used virtio-scsi before and now, when I change the controller to LSI it doesn't boot anymore.

How do I get this running with LSI ?
Thanks!
You have to correct the Boot Order after changning to the LSI Controler an reselt SATA Devices under the options.
 
After all my changes i disabled args: -cpu host,-hypervisor,kvm=off again. used LSI Controller, changed Bios String, added a real intel MAC to NIC. Resetet EAC again and all works now fine :)

What does add a real Intel MAC address mean? Where are people getting these MAC addresses from?
 
What does add a real Intel MAC address mean? Where are people getting these MAC addresses from?
MACs should be unique. Correct way would be to buy a (broken) NIC, reads it's MAC and then never use it. Incorrect way would be to just generate one and hope no one else it using it too (you can google for MAC address generators and use one of Intels OUI IDs).
 
MACs should be unique. Correct way would be to buy a (broken) NIC, reads it's MAC and then never use it. Incorrect way would be to just generate one and hope no one else it using it too (you can google for MAC address generators and use one of Intels OUI IDs).
MAC addresses are meant to be locally unique, not globally unique. They don't make it past layer 2 anyway. Manufacturers reuse MAC addresses, so it is entirely possible if not likely that someone else somewhere else in the world has a MAC identical to yours. I doubt EAC cares that much, so long as the first 3 bytes are a valid OUI.
 
  • Like
Reactions: ZaxLofful
So I can't set it to "host" and turn KVM off, does anyone have a fix for this?


Task viewer: VM 102 - Start

OutputStatus

Stop
WARN: iothread is only valid with virtio disk or virtio-scsi-single controller, ignoring
WARN: iothread is only valid with virtio disk or virtio-scsi-single controller, ignoring
swtpm_setup: Not overwriting existing state file.
kvm: CPU model 'host' requires KVM or HVF
stopping swtpm instance (pid 9447) due to QEMU startup error
TASK ERROR: start failed: QEMU exited with code 1
 
Hi,
So I can't set it to "host" and turn KVM off, does anyone have a fix for this?


Task viewer: VM 102 - Start

OutputStatus

Stop
WARN: iothread is only valid with virtio disk or virtio-scsi-single controller, ignoring
WARN: iothread is only valid with virtio disk or virtio-scsi-single controller, ignoring
swtpm_setup: Not overwriting existing state file.
kvm: CPU model 'host' requires KVM or HVF
stopping swtpm instance (pid 9447) due to QEMU startup error
TASK ERROR: start failed: QEMU exited with code 1
please share the VM config qm config 102 and output of pveversion -v. Where did you turn KVM off?

Most likely unrelated, but you might want to change your VM's SCSI controller to VirtIO SCSI single, otherwise the iothread setting is not used.
 
Heyho did a completly new mashine, but it seems it wont work for me
easyAntiCheat still detecting the vm

args: -cpu host,-hypervisor,kvm=off
bios: ovmf
boot: order=sata0;ide2;net0;ide0
cores: 24
cpu: host
efidisk0: local-lvm:vm-100-disk-0,efitype=4m,pre-enrolled-keys=1,size=4M
hostpci0: 0000:04:00,pcie=1
hostpci1: 0000:06:00
hostpci2: 0000:09:00,pcie=1,x-vga=1
ide0: local:iso/virtio-win.iso,media=cdrom,size=522284K
ide2: local:iso/Win11_22H2_German_x64v1.iso,media=cdrom,size=5426116K
machine: pc-q35-7.2
memory: 28672
meta: creation-qemu=7.2.0,ctime=1679145613
name: gaming
net0: e1000=CC:2F:71:A6:84:AF,bridge=vmbr0,firewall=1
numa: 0
ostype: win11
sata0: local-lvm:vm-100-disk-1,cache=unsafe,size=820G,ssd=1
scsihw: lsi
smbios1: uuid=dd856feb-a032-460a-a902-f3d6f29b00e3
sockets: 1
tpmstate0: local-lvm:vm-100-disk-2,size=4M,version=v2.0
usb0: host=0b05:18f3
usb1: host=0cf2:7750
usb2: host=8087:0029
vmgenid: 39682e28-968e-466c-b193-66d74241db70


thats my config
went with sata drive becaus i couldnt get the virtio driver working with scsi (dunno why)
 
Last edited:
For the KVM concerns, there's two config attributes for kvm. the one proxmox uses that if turned off emulates and slows to a crawl the VM, then there's the kvm=off in the args cpu configuration that is used simply to not report that it's a vm in the ways that some anti cheat systems would look for.

the "kvm: 1" parameter appears to be hidden generally on proxmox configs. While the args cpu parameter kvm=off is not related to that switch.
 

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!