Abstract

Developed method, which is described in this paper, is capable of automated detection of uninitialized values within the scope of full-system emulation. This method is of immediate interest for low-level software, such as BIOS or initial loader, which initializes hardware and loads the operating system. Errors in this kind of software are the most dangerous and lead to system shutdown. This sort of software is difficult to test on real hardware, consequently emulators of different architectures are used for these tasks. In the context of this work a new method of using shadow memory for storing and tracking register states and guest system memory cells. Criteria for detection of uninitialized variables usage and error reporting were defined. For example, these situations fall under the criteria: uninitialized value is the address for loading and unloading values from and to the memory, conditional jump is performed based on uninitialized value or to an uninitialized memory chunk. Developed method was implemented and tested in the guest system of x86 architecture in full-system emulator QEMU. System consists of few instructions, which initialize a processor and transfers control to a user application. Testing was performed on three simple examples for each of the criteria for unitialized values detection. Developed method demonstrated correct results on all examples.

Highlights

  • Описание реализации метода В данном разделе будет изложен способ реализации каждого этапа, описанного в предыдущем разделе, в эмуляторе QEMU

  • Developed method, which is described in this paper, is capable of automated detection of uninitialized values within the scope of full-system emulation

  • This method is of immediate interest for low-level software, such as BIOS or initial loader, which initializes hardware and loads the operating system

Read more

Summary

Введение

В современном мире происходит постоянное усложнение компьютерных систем, будь то персональные компьютеры, мобильные телефоны, некоторые модели электронных наручных часов, различное сетевое оборудование или. Automatic uninitialized value usage detection during full-system emulation. ISP RAS, vol 28, issue 5, 2016, pp. Поскольку каждая такая система использует множество своего различного низкоуровневого программного обеспечения, такого как BIOS, UEFI, начальные загрузчики и прошивки, выполняющие, к примеру, функции инициализации и тестирования оборудования и дальнейшей загрузки операционной системы, то ошибки в данных программных системах наиболее опасны и приводят к неработоспособности всей системы целиком. Программное обеспечение подобного рода затруднительно тестировать на реальной аппаратуре, так как нет доступа ко всему контексту выполнения (регистрам и памяти), а использовать аппаратный отладчик дорого и неудобно, поэтому для этих целей используются специальные программы – эмуляторы [1]

Обзор и метод решения задачи
Обзор существующих методов
Инструментирование внутреннего представления
Теневая память
Обнаружение неинициализированных значений
Обновление значений теневой памяти
Описание реализации метода
Внедрение кода
Теневая память в эмуляторе QEMU
Обнаружение перехода на неинициализированную область памяти
Инструментирование операций загрузки и сохранения
Инструментирование инструкции условного перехода
Инструментирование остальных операций
Тестирование
Заключение
Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call