返回:网络安全知识库 · 上一节:控制流逆向 · 下一节:PE 文件结构入门

🎨 颜色标记说明

  • 粉色:特别重要、主线必掌握、优先复盘的内容。
  • 蓝色:核心概念、术语、分类名。
  • 橙色:需要关注的边界、易错点、注意事项。
  • 绿色:解释类内容、帮助理解知识点。

段寄存器

CPU 在保护模式下,主要通过分段机制分页机制管理内存。

段寄存器:CS、SS、DS、ES、FS、GS。

段寄存器 英文 作用
CS Code Segment 代码段寄存器
SS Stack Segment 栈段寄存器
DS Data Segment 数据段寄存器
ES Extra Segment 附加数据段寄存器
FS FS Segment 附加段寄存器
GS GS Segment 附加段寄存器

Windows x86 环境中:用户模式(R3)下,FS → _TEB;内核模式(R0)下,FS → _KPCR

R3:FS 常用于定位线程环境块(_TEB);R0:FS 常用于定位处理器控制区(_KPCR)。

在 Windows x64 环境中通常改用 GS:R3 下 GS → _TEB,R0 下 GS → _KPCR。

Visual Studio

bd137e67ecbae3324f6a337faf66dcbd

X86DBG

bd137e67ecbae3324f6a337faf66dcbd

段寄存器中可见的部分是一个 16 Bit 段选择子(Segment Selector)

段选择子(Segment Selector)是一个 16 位数,由 INDEX、TI、RPL 三部分组成。

字段 作用
Bit 0~1 RPL 请求特权级,取值范围为 0~3
Bit 2 TI 0 表示 GDT,1 表示 LDT
Bit 3~15 INDEX 段描述符在描述符表中的索引

注意:Bit 0~1 存储的是 RPL,不是 CPL;CPL 通常由 CS 段选择子的低两位体现。

0x002B = 0000 0000 0010 1011

INDEX:0000 0000 0010 1 TI:0 RPL:11