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

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

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

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

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

byte

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

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

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

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

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

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

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

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

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

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

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

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

Исходный код

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

https://github.com/coruws/vm1

Заключение

Эмуляторы — очень интересная тема, возможно мы к ней ещё вернёмся.

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

  1. мало истины в словах этих, только ссылки для последователей, нужно привлекать и зажигать огонь истины воссоздавая новых последователей

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