Anti VM Methods
In order to understand how to bypass anti-vm measures. We must first understand how they work. Here's a few popular methods and their implementations.
TODO: Add more examples and methods
CPUID Based Attacks
CPUID is an x86 instruction that returns details about the processor. This however becomes an issue as it allows an application to query things such as the "hypervisor flag" and "hypervisor brand."
This method is commonly seen in anti cheats and software packers/obfuscators such as VMProtect and Enigma.
Example
SMBIOS String Matching
The SMBIOS table is populated with information passed from the BIOS of the computer. It can be used to identify things such as the manufacturer and model of the computer. Under a virtual machine this could include information such as the hypervisor.
This method is commonly seen in anti cheats and software packers/obfuscators such as VMProtect.
Example
MAC Addresses
Applications can query network adapters using GetAdaptersAddresses
and check the vendor
of the mac address of the adaptor. The vendor in most virtual machines will identify the hypervisor.
Process Enumeration
Probably the simplest way of identifying a virtual machine. Applications can query the list of running processes on a computer and compare them against a list of hardcoded names. For example VMWares SVGA helper.