Chapter 3
01010010, 01101111, 01101111, 01110100, 01101001, 01110100, 01110011, 00100000, 01000011, 01000000
Hardware Briefing
As mentioned in tiie concluding remarks of the previous ciiapter, to engineer
a rootkit we must first decide:
■ What part of the system we want the rootkit to interface with.
■ Where the code that manages this interface will reside.
Addressing these issues will involve choosing the Windows execution
mode(s) that our code will use, which in turn will require us to have some
degree of insight into how hardware-level components facilitate these
system-level execution modes. In the landscape of a computer, all roads lead
to the processor. Thus, in this chaptcr we'll dive into aspects of Intel's 32-bit
processor architecture (i.e., IA-32). This will prepare us for the next chapter
by describing the structural foundation that the IA-32 provides to support the
Windows OS.
Note: As mentioned in this book's preface, I'm focusing on the desktop as a target.
This limits the discussion primarily to 32-bit hardware. Although 64-bit processors are
definitely making inroads as far as client machines are concerned, especially among
the IT savvy contingent out there, 32-bit desktop models still represent the bulk of this
market segment.
3.1 Physical Memory
The IA-32 processor family accesses each 8-bit byte of physical memory
(e.g., the storage that resides on the motherboard) using a unique physical ad¬
dress. This address is an integer value that the processor places on its address
lines. The range of possible physical addresses that a processor can specify
on its address line is known as the physical address space.
A physical address is just an integer value. Physical addresses start at zero
and are incremented by one. The region of memory near address zero is
55