2013-10-25 2 views
0

Я пытаюсь найти способ программно определить, что моя программа работает на виртуальной машине, насколько я знаю, для параллелей это не является обычным способом.опция виртуализации диспетчера задач Windows 8

На вкладке производительности диспетчера задач Windows 8 отображается опция «Virtaulization», что это значит? Когда я запускаю Windows 8 на виртуальной машине, он меняется на виртуальные процессоры и виртуальную машину: да, так некоторые из них, как Windows 8 обнаруживает, что он запущен на виртуальной машине, как Windows 8 обнаруживает, что он работает на виртуальной машине? Возможно ли получить эту информацию программно? Я пробовал как на параллелях, так и на vm ware, и оба отлично работают.

+0

В моей реальной Windows 8 диспетчер задач также показывает «Виртуализация: включен». Я считаю, что это означает, что процессор поддерживает виртуализацию, а не то, что ОС работает в виртуальной машине. – Paul

ответ

1

Вы должны взглянуть на эту интересную статью Red Pill... or how to detect VMM using (almost) one CPU instruction по Joanna Rutkowska, который имел обыкновение быть here, но теперь мертв и может рассматриваться только с waybackmachine here и Virtualization: Red Pill or Blue? по Steven McElwee который также имел обыкновение быть here, но теперь можно просматривать только here.

Heres код:

int swallow_redpill() 
{ 
    unsigned char m[2+4], rpill[] = "\x0f\x01\x0d\x00\x00\x00\x00\xc3"; 
    *((unsigned*)&rpill[3]) = (unsigned)m; 
    ((void(*)())&rpill)(); 
    return (m[5]>0xd0) ? 1 : 0; 
} 

Она должна возвращать 1, если работает в виртуальной машине, и 0, если нет.


Edit: Это может вернуть ложные срабатывания на современных процессорах и его apparently better to combine пару tests вместе, чтобы убедиться, что результат является реальным.

1

На VMware, которую вы можете проверить для производителя компакт-дисков, должны быть «VMware» или «VMware, Inc.» или что-то вроде этого.

Я не знаю о рабочей станции VMware, но на ESXi ваш MAC-адрес обычно начинается с «00:50:56». Вы тоже можете это использовать.

Посмотрите на virt-what. Возможно, вы можете перенести его в Windows.

И, возможно, How to detect install is running on a VM? может вам помочь.

Смежные вопросы