- PVSM.RU - https://www.pvsm.ru -
Давным-давно, когда компьютеры были большими, а программы маленькими, использовалось такое важное понятие, как Environment. Этот хороший термин уже утратил зарезервированный смысл, но не потерял своей актуальности. В связи с широким использованием виртуализации, информация об операционном окружении стала предметом обсуждения и в чем-то даже спортивного интереса среди программистов. Поучаствовать в этом мы решили с «железным» аргументом — инструкцией CPUID.
Почему так? Дело в том, что кроме стандартных и расширенных функций в CPUID реализованы виртуальные функции, за выполнение которых отвечает гипервизор хост-системы. В этом случае результатом запроса get hypervisor information может быть одна из сигнатур, однозначно определяющих операционную среду. В зависимости от реализации нам могут быть доступны следующие сигнатуры (список неполный):

Для того чтобы идентифицировать особенности виртуальной среды, реализованной Oracle VirtualBox, решено было на базе ранее написанного примера UEFIInfo [1] (в англоязычной интерпретации — Brief Sysinfo Utility), предназначенного для работы в режиме EFI Byte Code [2] с 32-битными и 64-битными реализациями UEFI BIOS, написать рабочий софт идентифицирующий этот самый environment. (Кое-что о наших экспериментах с EBC опубликовано здесь, на Хабре. См., например, заметку «EFI Byte Code и операции с памятью [3]»)
Почему UEFI? Потому что эксперименты с firmware — это своего рода «чистая комната», свободная от культурных наслоений программного обеспечения. Имея на руках отлаженный алгоритм несложно выйти на реализацию подобного программного обеспечения для Linux или Windows.
Автор: icbook
Источник [4]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/nenormal-noe-programmirovanie/106804
Ссылки в тексте:
[1] UEFIInfo: http://jelezo.com.ua/programmy/utilita_uefiinfo.html
[2] EFI Byte Code: http://jelezo.com.ua/stati/ob_ispolzovanii_ebc-drajvera.html
[3] EFI Byte Code и операции с памятью: http://habrahabr.ru/post/214119/
[4] Источник: http://habrahabr.ru/post/273555/
Нажмите здесь для печати.