Как я могу определить, находится ли я в виртуальной машине или нет?

Снова и снова я видел программы безопасности, в описании которых говорилось: "Пожалуйста, не пытайтесь запустить это внутри виртуальной машины, так как программа не сможет быть запущена" или "Программа безопасности скажет, что она не находится в допустимая среда, если запускается с виртуальной машины ".

Что мне интересно здесь: как программы могут определить, находятся ли они внутри виртуальной машины или нет? Есть ли где-нибудь установленный флаг или это конкретные драйверы?

2 ответа

Решение

Как я могу определить, находится ли я в виртуальной машине или нет?

Быстрый способ, которым я занимался в прошлом, - это использование команд WMIC из командной строки для запроса объектов пространства имен WMI для компьютера, марки, модели и серийных номеров.

Вы можете запрограммировать некоторую логику для использования результатов WMIC как части процесса установки, и если она обнаружит что-то известное, вы можете сделать это, чтобы проверить это как часть логики, указывающей, что это ВМ, или, возможно, вы запрограммируете ее, чтобы найти другие значения, говорящие, что это не так. ВМ или оба.


Получить серийный номер оборудования:

WMIC BIOS GET SERIALNUMBER

Получить аппаратную модель:

WMIC COMPUTERSYSTEM GET MODEL

Получить Производитель оборудования:

WMIC COMPUTERSYSTEM GET MANUFACTURER

Результаты от ВМ против ВМ

Non VM WMIC Результаты:

Результаты VM WMIC:


Дополнительные ресурсы:

Тема была освещена пару раз. Вот некоторые советы, зависящие от ОС:

Другие вопросы по тегам