Аннотация:Описанный в данной статье метод позволяет автоматически обнаруживать
использование неинициализированных значений в рамках полносистемной эмуляции.
Это актуально для такого низкоуровневого программного обеспечения, как, например,
BIOS или начальный загрузчик, выполняющие функции инициализации оборудования
и загрузки операционной системы. Ошибки в данных программных системах наиболее
опасны и приводят к неработоспособности всей системы целиком. Программное
обеспечение подобного рода затруднительно тестировать на реальной аппаратуре,
поэтому для этих целей используются эмуляторы различных архитектур. В рамках
работы был разработан метод использования теневой памяти (памяти, содержащей
информацию об исходной памяти) для хранения и отслеживания состояния регистров и
ячеек гостевой памяти. Также были сформулированы критерии обнаружения
использования неинициализированных значений и уведомления об ошибках.
Разработанный метод был реализован и протестирован на гостевой системе
архитектуры x86 в полносистемном эмуляторе QEMU.