Windows NT内核分析

1、几个虚拟地址区间:

0x00000000 - 0x0000FFFF 不可访问,NULL指针检测

0x7FFDE000 - 0x7FFDEFFF TEB

0x7FFDF000 - 0x7FFDFFFF PEB

0x7FFE0000 - 0x7FFE0FFF 共享数据区

0x80000000 - 0x9FFFFFFF 系统代码,HAL和ntoskrnl.exe,驱动(boot和ntosldr)。GDT、IDT和TSS

0xC0000000 - 0xC0FFFFFF 系统表。进程页表,页目录等和进程相关的数据结构。

0xE1000000 - 0xE57FFFFF 分页池

0xFB000000 - 0xFFDFEFFF 非分页池

0xFFDFF000 - 0xFFFFFFFFF PCR用于每个进程。保存PCR结构体,包含了IRQL,当前线程,IDT等。

 

2、保护

Intel提供段机制,描述符中的DPL保护每个被描述的逻辑段。但Windows NT实现的是FLAT模型。这样选种子的使用降到了最低限度。下面是GDT中的表项:

Sel            Type                Base                   Limit               DPL                    Attributes

0008         Code32          00000000           FFFFFFFF        0                       P RE

0010         Data32           00000000           FFFFFFFF       0                        P RW

001B         Code32          00000000           FFFFFFFFF      3                       P RE

0023         Data32           00000000           FFFFFFFFF      3                       P RW

0028         TSS32             8024D000           FFFFFFFFF     0                       P B

0030         Data32           FFDFF000            00001FFF     0                       P RW

003B         Data32           7FFD9000           00000FFF    3                       P RW

。。。

在FLAT模型下,APP并不关心段寄存器的内容。在ring3时候,CS、DS、SS寄存器总是分别为8、10、10。

代码运行在ring0时,FS寄存器为30,用于寻址PCR结构体如果在ring3,FS为3b。

 

待续。。。。。。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值