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
Summary
В современном мире происходит постоянное усложнение компьютерных систем, будь то персональные компьютеры, мобильные телефоны, некоторые модели электронных наручных часов, различное сетевое оборудование или. Automatic uninitialized value usage detection during full-system emulation. ISP RAS, vol 28, issue 5, 2016, pp. Поскольку каждая такая система использует множество своего различного низкоуровневого программного обеспечения, такого как BIOS, UEFI, начальные загрузчики и прошивки, выполняющие, к примеру, функции инициализации и тестирования оборудования и дальнейшей загрузки операционной системы, то ошибки в данных программных системах наиболее опасны и приводят к неработоспособности всей системы целиком. Программное обеспечение подобного рода затруднительно тестировать на реальной аппаратуре, так как нет доступа ко всему контексту выполнения (регистрам и памяти), а использовать аппаратный отладчик дорого и неудобно, поэтому для этих целей используются специальные программы – эмуляторы [1]
Talk to us
Join us for a 30 min session where you can share your feedback and ask us any queries you have