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

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

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

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

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



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

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

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

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

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

Заключение

Эмуляторы - очень интересная тема, возможно я вернуть к ней позднее.
Подписывайтесь на наш Twitter !
Alt text

Большой брат следит за вами, но мы знаем, как остановить его

Подпишитесь на наш канал!

VxLab

Blog о вирусных технологиях