Hypervisor 101 in Rust
Введение в гипервизоры на Rust
1. Введение
- Предварительные требования
- Цели курса
- Мотивация
- Как достигаются цели
- Что вы изучите
- Дизайн фаззера
- Дизайн гипервизора
- Что этот курс НЕ охватывает
- Демо: фаззер на основе гипервизора
- Зачем использовать гипервизор для фаззинга
- Приложения UEFI
- Язык Rust
- Классификация гипервизоров
- Гипервизор vs хост, ВМ vs гость
- Типы гипервизоров
2. Настройка и цикл работы гипервизора
- Включение: активация аппаратной виртуализации
- Настройка: создание структуры контекста гостя
- Переключение: запуск в гостевом режиме
- Возврат: переход обратно в режим хоста
- Обработка: эмуляция событий
- Цели и упражнения главы
- Тестирование с Bochs
- Подготовка к упражнениям
- E#1: Включение VMX/SVM
- E#2: Настройка VMCS/VMCB
- E#3: Конфигурация гостевого состояния
- Причины VM-выходов
- Альтернативный дизайн гипервизора
3. Виртуализация памяти
- Терминология
- Традиционная страничная организация x64
- Вложенная страничная организация
- Связь с гипервизором
- Ошибки страниц во вложенной организации
- Структурные элементы вложенной организации
- Сравнение традиционного и вложенного подходов
- Цели и упражнения главы
- E#4: Включение вложенной организации
- E#5: Построение структур и трансляция адресов
- E#6: Реализация copy-on-write и быстрого восстановления памяти
- Продвинутые темы
4. Интроспекция ВМ для фаззинга
- Проблема 1: Ненужное выполнение кода