Uninformed: Informative Information for the Uninformed

Vol 7» 2007.May

Next: Design Up: Strategies Previous: Considerations

Null Segment Interception

Segmentation is an extremely old feature of the x86 architecture. Its purpose has been to provide software with the ability to partition the address space into distinct segments that can be referenced through a 16-bit segment selector. Segment selectors are used to index either the Global Descriptor Table (GDT) or the Local Descriptor Table (LDT). Segment descriptors convey information about all or a portion of the address space. On modern 32-bit operating systems, segmentation is used to set up a flat memory model (primarily only used because there is no way to disable it). This is further illustrated by the fact that the x64 architecture has effectively done away with the ES, DS, and SS segment registers in 64-bit mode[1]. While segment selectors are primarily intended to make it possible to access memory, they can also be used to prevent access to it.