Обнаружьте виртуализировал ОС из приложения?

Используйте его всякий раз, когда выполняемый код может вызвать исключение. Помните, что вы можете throw делать свои собственные ошибки - большинство из try…catch вещей, которые я использую, предназначены для ловли моих собственных исключений.

65
задан DGentry 30 September 2008 в 17:42
поделиться

3 ответа

Я хотел бы порекомендовать статью, опубликованную на Usenix HotOS '07, Совместимость - это не прозрачность: мифы и реальность обнаружения VMM , в которой приводятся несколько методов определения того, приложение работает в виртуализированной среде.

Например, используйте инструкцию sidt, как это делает redpill (но эту инструкцию также можно сделать прозрачной с помощью динамической трансляции), или сравните время выполнения cpuid с другими невиртуализированными инструкциями.

7
ответ дан 24 November 2019 в 15:16
поделиться

При установке новичков Ubuntu я обнаружил пакет под названием Imvirt. Посмотрите на него в http://micky.ibh.net/~liske/imvirt.html

5
ответ дан 24 November 2019 в 15:16
поделиться

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

У Microsoft также есть страница «Определение наличия гипервизора» . MS разъясняет это требование гипервизора в разделе «Тест IsVM» своего «Проверка виртуализации сервера» документ

В документах VMware и MS упоминается использование инструкции CPUID для проверки наличия бита гипервизора. (бит 31 регистра ECX)

У багтрекера RHEL есть один для «должен установить бит ISVM (ECX: 31) для листа CPUID 0x00000001» , чтобы установить бит 31 регистра ECX под ядром Xen.

Итак, не вдаваясь в подробности поставщика, похоже, вы можете использовать проверку CPUID, чтобы узнать, работаете вы виртуально или нет.

12
ответ дан 24 November 2019 в 15:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: