На GitHub опублікований початковий код компактного гіпервізора

Відомий гуру внутрішнього пристрою Windows архітектури ARM Алекс Іонеску опублікував на ресурсі GitHub вихідний текст базової частини гіпервізора (інструмент віртуалізації). Гіпервізор містить у собі безліч чудових властивостей, включаючи, компактний розмір, підтримку сучасних архітектур мікропроцесорів, мінімальне використання асемблера у вихідних текстах, а також коментарі щодо його використання. При його розробці упор робився на максимальну компактність.



Опублікований проект є справжньою знахідкою для системних програмістів, а також дослідників з безпеки, які цікавляться низькорівневими функціями ОС. Гіпервізор отримав назву SimpleVisor, підтримує тільки сучасні 64-бітні системи і був успішно протестований на сумісність з такими система Windows 8.1 на мікропроцесорі архітектури Intel Haswell, а також Windows 10 на архітектурі Intel Sandy Bridge.

Not counting the exhaustive comments which explain every single line of code, and specific Windows-related or Intel-related idiosyncrasies, SimpleVisor clocks in at about 500 lines of code C, and 10 lines of x64 assembly code, all while containing the ability to run on every recent version of 64-bit Windows, and supporting dynamic load/unload at runtime.
Як видно з анотації, вихідний код SimpleVisor зайняв всього 500 рядків коду на мові C і 10 рядків 64-бітного асемблера. Сам проект був зібраний з використанням Visual Studio 2015 і ця середовище також може бути використана для його складання.

Тестування SimpleVisor здійснювалося на наступних платформах.

  • Windows 8.1 на мікропроцесорі Haswell (настільний ПК)
  • Windows 10 Redstone 1 на мікропроцесорі Sandy Bridge (ноутбук Samsung 930)
  • Windows 10 Threshold 2 на мікропроцесорі Skylake (планшет Surface Pro 4 Tablet)
  • Windows 10 Threshold 2 на мікропроцесорі Skylape (ноутбук Dell Inspiron 11-3153 SGX)

Рис. Структура вихідних текстів SimpleVisor.


Рис. Частину коду asm64 з файлу shvx64.asm, який відповідає за тонкощі роботи з мікропроцесором AMD64.

SimpleVisor представляє з себе 64-бітний драйвер, призначений для запуску в 64-бітових версіях Windows 8.1 і Windows 10. Для успішного запуску у системі, драйвер повинен бути підписаний цифровим підписом, наприклад, з використанням т. н. тестового сертифіката. Далі, в Windows слід включити відповідний режим завантаження драйвера з таким підписом з допомогою відомої команди bcdedit.

bcdedit /set testsigning on
Далі слід створити сервіс драйвера для диспетчера управління сервісами, це можна зробити, скориставшись наступною командою.

sc create simplevisor type= kernel binPath= "<PATH_TO_SIMPLEVISOR.SYS>"
Драйвер SimpleVisor підтримує як завантаження, так і вивантаження «на льоту». Для цього можна використовувати наступні команди.

net start simplevisor
net stop simplevisor


Джерело: Хабрахабр
  • avatar
  • 0

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.