Виртуальные машины изнутри

Виртуальная машина это не только Vbox или Vmware, это общее название технологии виртуализации. Я расскажу как они устроены и где применяются!

Буквально год назад, мы публиковали crackme, основанный на виртуальной машине. Опыт был довольно интересным, поэтому Я решил осветить это отдельной публикацией.

Виртуальная машина

Сабж – это алгоритм, который умеет выполнять байткод некоего виртуального процессора.

byte

схема работы виртуальной машины

Силой данной мне inkscape’ом – встречайте картинку.

Область применения

Виртуальные машины полезны в антиотладочных целях, вы не сможете понять как работает алгоритм (написанный на байткоде вирт-машины), пока не отреверсите саму виртуальную машину.

Эмуляторы реальных процессоров позволяют нам поиграть в старые 8-битные игры, а если интерпретатор написан на платформо-независимом языке, мы получаем возможность запускать старые программы где угодно.

Кроме того, эмуляторы выполняют историческую задачу, “консервируя”  старые процессоры на потеху будущим поколениям.

Эмуляторы активно используются антивирусами для снятия пакеров и смежных задач.

Детали работы

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

Вся работа виртуальной машины это конвеер, считывающий опкоды и отправляющий их  в ад   “на исполнение”, посредством вызова нужной заглушки, которая будем менять значение виртуальных регистров или памяти.

Таким образом, от нас зависит:

  • количество регистров
  • модель адресации памяти
  • формат опкодов
  • набор команд
  • реализация стека
  • и тому подобное

Исходный код

Я решил выложить исходники моей старой виртуальной машины as-is и отдать их на растерзание вам, думаю после этого все вопросы о работе таких вещей отпадут.

https://github.com/coruws/vm1

 

Заключение

Эмуляторы – очень интересная тема, возможно я вернуть к ней позднее.

One thought on “Виртуальные машины изнутри

Добавить комментарий