I know that from a design point of view, the idea of a virtual machine is that the entire system environment is replicated so that the virtual machine is in outward appearance a full machine, but my question is about practical implementations. Do the virtual machines we use today have the ability to realise they are virtual machines?
closed as not a real question by Keltari, Xavierjazz, Kyle Jones, Luke, Tanner Jan 26 at 16:28
It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, see the FAQ.
In theory, no.
Virtual machines are meant to be totally sandboxed and separated from the computer it runs within.
However, it is sometimes possible to abuse discontinuities in the virtual machine software itself to determine if a machine is running in a sandbox, as illustrated here (this is more programming related, but shows what I mean).
I know this question will get closed, but Ill throw my 2 cents in.
Many virtual machine hosts present different BIOSs and provide drivers for different OS types. You could check for the existence of the BIOS and drivers and if they are in use.
However, you could fake their existence to give a false positive...