Да. Как и любая машина, виртуальная машина - это просто другой компьютер (реализованный программно, а не аппаратно).
Например, множество коммерческих приложений взорвется, когда вы запустите их на виртуальной машине из-за:
- защита от копирования при обнаружении виртуальной машины
- защита от копирования, так как ваше оборудование использует недокументированные функции BIOS / ядра / оборудования
Во-вторых, виртуальная машина - это просто еще один компьютер, состоящий из аппаратного обеспечения, реализованного в сборке, а не схем / dye / microcode / magic. Это означает, что виртуальная машина должна предоставлять эмулируемое оборудование через сквозную передачу или эмуляцию. Тот факт, что аппаратное обеспечение очень разнообразно, может вызвать различное поведение. Также обратите внимание на возможное отсутствие драйверов или ускорение эмулируемого оборудования.
Но, конечно, типичное бизнес-приложение, например, вряд ли будет полагаться на какие-либо аппаратные детали, поскольку все, что оно делает, это вызывает некоторый GUI API.
Интерпретируемые языки защищены от этого только в той степени, в которой они «интерпретируются», если интерпретируемый язык вызывает некоторый нативный код, все это снова возможно.
В качестве примера чего-то, обнаруживающего, что он работает под виртуальной машиной, отметьте this , это всего лишь один из тысяч способов обнаружения виртуальной машины.