SEH学习心得【2】- 关于FS段寄存器

本文深入探讨了Windows系统中FS段寄存器在RING3和RING0下的不同作用,特别是在异常处理中的角色。在用户级别(RING3),FS段寄存器指向线程环境块(TEB),包含SEH异常控制块链表;在系统级别(RING0),它指向KPCR,用于保存线程切换信息。通过分析FS寄存器、TEB结构和KPCR,揭示了异常处理和线程状态管理的细节。
摘要由CSDN通过智能技术生成

——————

关于PEB结构在http://blog.csdn.net/betabin/article/details/7481949中列出。

——————

看SEH少不了FS段寄存器,关于其大概认识如下。

在不同的地址空间,FS段寄存器指向不同的内存段。线程运行在RING0(既系统级别)下,FS段值是0x3B(XP下的值,在2000下是0x38)。运行在RING3(用户级别)下,FS段值是0x30。而且FS段寄存器的值只能在RING0下被赋值。

一、RING3下的FS

指向的段为GDT中的0x30段。大小为4k,基地址为当前线程的TEB。(由于Windows中线程的不断切换,该段基地址是会改变的。而每个线程都有个ETHREAD结构,其KTHREAD成员有TEB成员。有点绕。)

关于TEB,结构如下:

typedef struct _TEB {
    NT_TIB NtTib;
    PVOID  EnvironmentPointer;
    CLIENT_ID ClientId;
    PVOID ActiveRpcHandle;
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值