2014-10-02

waqur: (Евро)
Когда-то в интернетах циркулировал код за авторством Joanna Rutkowska из Invisible Things Lab для определения виртуальных машин и гипервизоров, таких как VmWare и Virtual Box, с помощью выполнения некоторых инструкций супервайзора, случайно оказавшихся непривилегированными ещё со времён Intel i80286, таких как SIDT или SGDT. Он назывался Blue Pill, это аллюзия к фильму "Матрица" братьев Вачовски.

Всевозможные гипервизоры и виртуальные машины быстренько подстроили адреса своих дескрипторов под таковые для гостевых ОС или внесли соответствующие инструкции в перечень программно-эмулируемых, и Blue Pill перестал работать.

В этом смысле интересна инструкция RDTSC. Гипервизор может её перехватывать или не перехватывать. Для этого существует соответствующий бит в CR4, который превращает эту инструкцию в привилегированную. Если инструкция не перехватывается, тогда гипервизор можно засечь по большой дисперсии выборки Δt (процессорные "часики" идут рывками). Если инструкция перехватывается, тогда на генерацию соответствующего прерывания, выполнение эмулирующего кода и выход обратно будут уходить тысячи машинных циклов против типично десятков в нормальном режиме. Обычно они её перехватывают, для поддержки того, что по-английски называется virtual machine live migration.

March 2024

S M T W T F S
     12
3456789
10111213141516
17181920212223
24252627282930
31      

Автор стиля

Развернуть

No cut tags
Page generated 2025-09-03 01:36 am
Powered by Dreamwidth Studios