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

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

f8931a0bf4e4487caba33c78c46f4ddd.png

Опубликованный проект является настоящей находкой для системных программистов, а также исследователей по безопасности, которые интересуются низкоуровневыми функциями ОС. Гипервизор получил название 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 C code, 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)


c1c57fc82b6b4a85a1f3d65426fc36c8.png
Рис. Структура исходных текстов SimpleVisor.

5608e9f857904d098fe48ca681a73ce9.png
Рис. Часть кода asm64 из файла shvx64.asm, который отвечает за тонкости работы с микропроцессором AMD64.

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

bcdedit /set testsigning on


Далее следует создать сервис драйвера для диспетчера управления сервисами, это можно сделать, воспользовавшись следующей командой.

sc create simplevisor type= kernel binPath= »»


Драйвер SimpleVisor поддерживает как загрузку так и выгрузку «на лету». Для этого можно использовать следующие команды.

net start simplevisor
net stop simplevisor

© Habrahabr.ru