【2021.03.23】中断门

要点回顾

Windows系统没有使用调用门,但是使用了中断门。

  1. 系统调用:当在开发应用层程序的时候,使用的API在执行过程中通过3环进入0环,这个过程就是系统调用。而从3环是如何进入0环的过程,就使用到了中断门。需要注意的是,老的CPU是通过中断门进入的0环,而现在的CPU都是通过快速调用。
  2. 调试:例如OD使用F2下断点,下断点其实就是把某个字节修改为了0xCC,0xCC硬编码对应的汇编指令就是INT3,INT3就是用来执行中断门的。

IDT

IDT即中断描述符表,其中存储的是系统段描述符。同GDT一样,IDT也是由一系列描述符组成的,每个描述符占8个字节。但需要注意的是,IDT表中的第一个元素不是NULL。

在Windbg中查看IDT表的基址和长度:

kd> r idtr

idtr = 8003f400

kd> r idtl

idtl = 000007ff

IDT表的构成

IDT表可以包含3种门描述符:

  1. 任务门描述符。
  2. 中断门描述符。
  3. 陷阱门描述符。

中断门描述符

  • 高4字节第16-31位和低4字节第0-15位组合成一个代码段的段内偏移地址。
  • 哪个代码段取决于低4字节第16-31位填写的是哪个代码段的段选择子。
  • 高4字节0-7位不允许传递参数,所以都是0。
  • P位一定是1。
  • DPL是11。

猜你喜欢

转载自blog.csdn.net/qq_18120361/article/details/115135707