tmpa-2015: multi-platform approach to reverse debugging of virtual machines
TRANSCRIPT
![Page 1: TMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual Machines](https://reader031.vdocuments.mx/reader031/viewer/2022022200/58a6d9871a28abef698b53cb/html5/thumbnails/1.jpg)
Мультиплатформенный метод обратной отладки виртуальных
машин
П. М. Довгалюк, М. А. Климушенкова,
Д. С. Дмитриев В. А. Макаров
Новгородский государственный университет
![Page 2: TMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual Machines](https://reader031.vdocuments.mx/reader031/viewer/2022022200/58a6d9871a28abef698b53cb/html5/thumbnails/2.jpg)
Отладка операционных систем
2
Падение системы
Замедление работы
Изменение поведения из-за отладочных методов
![Page 3: TMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual Machines](https://reader031.vdocuments.mx/reader031/viewer/2022022200/58a6d9871a28abef698b53cb/html5/thumbnails/3.jpg)
Отладка ОС с помощью кода внутри машины
3
Система должна функционировать
Нельзя отладить любой выполняемый код
Загрузочный код
BIOS
Нужно настраивать заранее
Влияет на работу отлаживаемого кода
![Page 4: TMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual Machines](https://reader031.vdocuments.mx/reader031/viewer/2022022200/58a6d9871a28abef698b53cb/html5/thumbnails/4.jpg)
Отладка ОС через gdbserver в симуляторе
4
Не нужно сохранять дампы, чтобы их анализировать
Можно подключиться в любой момент
Даже при критическом сбое
Даже до загрузки ОС
Отладка без реального оборудования
Отладка прошивки
Отладка моделей оборудования
Работает медленнее из-за виртуализации
Ход работы может измениться из-за остановок
![Page 5: TMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual Machines](https://reader031.vdocuments.mx/reader031/viewer/2022022200/58a6d9871a28abef698b53cb/html5/thumbnails/5.jpg)
Идея воспроизведения работы системы
5
QEMU
QEMU
Результаты анализа
Фаза записи Фаза воспроизведения ВМ
Реальный мир
![Page 6: TMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual Machines](https://reader031.vdocuments.mx/reader031/viewer/2022022200/58a6d9871a28abef698b53cb/html5/thumbnails/6.jpg)
Применение детерминированного воспроизведения
6
Нет воздействия на гостевую систему при анализе
Профилирование
Анализ помеченных данных
Отладка
Трассировка
![Page 7: TMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual Machines](https://reader031.vdocuments.mx/reader031/viewer/2022022200/58a6d9871a28abef698b53cb/html5/thumbnails/7.jpg)
Запись/воспроизведение работы
7
Не нужно перенастраивать окружение
Отладка редко проявляющихся ошибок
Разделение записи и анализа
Можно анализировать сетевые приложения, критичные к временным параметрам
Обратная отладка через gdb
Отладчик не влияет на ход работы гостевого кода
Файл журнала можно переносить между машинами
Воспроизведение ошибочных сценариев
Распараллеливание анализа
Отладка моделей устройств
![Page 8: TMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual Machines](https://reader031.vdocuments.mx/reader031/viewer/2022022200/58a6d9871a28abef698b53cb/html5/thumbnails/8.jpg)
Детерминированное воспроизведение и обратная отладка
8
Должна работать на всех платформах QEMU
Протестирована для x86, x64, ARM, MIPS
Отладка и анализ всей системы
Ядро и BIOS
Виртуальные устройства
Во время воспроизведения можно переключиться на обычную работу
![Page 9: TMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual Machines](https://reader031.vdocuments.mx/reader031/viewer/2022022200/58a6d9871a28abef698b53cb/html5/thumbnails/9.jpg)
Воспроизведение в симуляторе
9
ЦП ОЗУ
Диски Таймеры
Виртуальные устройства
Детерминированная часть
TAP
Socket
libusb
Журнал
Winaudio
Видео вывод
Воспроизведение
Запись
Часы
Slirp
Мышь
Клавиатура
Реальный мир
![Page 10: TMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual Machines](https://reader031.vdocuments.mx/reader031/viewer/2022022200/58a6d9871a28abef698b53cb/html5/thumbnails/10.jpg)
Виртуальный таймер
10
Базовая реализация есть в QEMU
Считает число выполненных инструкций
Интерфейс не зависит от ЦП
Увеличивается в начале каждого блока
Корректно работало не на всех платформах
Виртуальное время гостевой системы привязано к этому таймеру
Замедление виртуальной машины замедляет и ход гостевого времени
![Page 11: TMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual Machines](https://reader031.vdocuments.mx/reader031/viewer/2022022200/58a6d9871a28abef698b53cb/html5/thumbnails/11.jpg)
Обратная отладка
11
Нужна для изучения того, что уже было
Делаются снимки системы для возврата назад
Ход воспроизведения
“Перемотка” к раннему снимку
![Page 12: TMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual Machines](https://reader031.vdocuments.mx/reader031/viewer/2022022200/58a6d9871a28abef698b53cb/html5/thumbnails/12.jpg)
Обратная отладка
12
Команды GDB
reverse-continue
reverse-step
reverse-stepi
reverse-next
reverse-nexti
reverse-finish
![Page 13: TMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual Machines](https://reader031.vdocuments.mx/reader031/viewer/2022022200/58a6d9871a28abef698b53cb/html5/thumbnails/13.jpg)
Обратная отладка
13
int *p = malloc(sizeof(int));
………….
p = NULL;
………….
int a = *p;
![Page 14: TMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual Machines](https://reader031.vdocuments.mx/reader031/viewer/2022022200/58a6d9871a28abef698b53cb/html5/thumbnails/14.jpg)
Обратная отладка
14
int *p = malloc(sizeof(int));
………….
p = NULL;
………….
int a = *p;
gdb> watch p
gdb> reverse-continue
![Page 15: TMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual Machines](https://reader031.vdocuments.mx/reader031/viewer/2022022200/58a6d9871a28abef698b53cb/html5/thumbnails/15.jpg)
Обратная отладка
15
int *p = malloc(sizeof(int));
………….
p = NULL;
………….
int a = *p;
gdb> watch p
gdb> reverse-continue
1 2 3 4
![Page 16: TMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual Machines](https://reader031.vdocuments.mx/reader031/viewer/2022022200/58a6d9871a28abef698b53cb/html5/thumbnails/16.jpg)
Показатели работы записи/воспроизведения
16
Замедление при записи
Замедление при воспроизведении
Размер журнала, байт на 1000 инструкций
i386 (Win) 31% 156%
i386 (Debian) 41% 136% 21.9
ARM (Debian) 32% 191% 17.9
MIPS (Debian) 14% 139% 75.4
![Page 17: TMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual Machines](https://reader031.vdocuments.mx/reader031/viewer/2022022200/58a6d9871a28abef698b53cb/html5/thumbnails/17.jpg)
Результаты
17
Исправлены ошибки в реализации счетчика инструкций
Найдено несколько ошибок реализации виртуальных процессоров с помощью воспроизведения
Опубликованы патчи
около 6000 LOC
В QEMU 2.5 включено ядро воспроизведения
Без блочных устройств, gdb, сети, USB
![Page 18: TMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual Machines](https://reader031.vdocuments.mx/reader031/viewer/2022022200/58a6d9871a28abef698b53cb/html5/thumbnails/18.jpg)
Зачем это нужно?
18
Детерминированная отладка виртуальных устройств
ROR r8/r16
Некорректная обработка MMU faults
Моделирование «железа»
![Page 19: TMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual Machines](https://reader031.vdocuments.mx/reader031/viewer/2022022200/58a6d9871a28abef698b53cb/html5/thumbnails/19.jpg)
Зачем это нужно?
19
Обратная отладка через GDB
пользовательские приложения
драйверы
ядро ОС
BIOS
![Page 20: TMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual Machines](https://reader031.vdocuments.mx/reader031/viewer/2022022200/58a6d9871a28abef698b53cb/html5/thumbnails/20.jpg)
Зачем это нужно?
20
Сбор данных
трассировка инструкций
обращения к памяти
сетевой трафик
Динамический анализ
помеченные данные
символьное выполнение