IDT即中断描述符表,同GDT一样,每个描述符占8个字节。要注意的是idt表中的第一个元素不是NULL,GDT第一个元素就是空。
中断门查的是IDT表,这个IDT表里面存储的都是系统段描述符。
IDT表可以包含3种门描述符,任务门描述符,中断门描述符,陷阱门描述符。
使用windbg查看
r idtr
查看长度
r idtl
构造一个中断门,没有参数
0000 0000 0000 0000 1110 1110 0000 0000
0000EE00
选择子
0000 0000 0000 1000 0000 0000 0000 0000
00080000
'00401030这个是我们要通过中断门执行的代码位置
0040EE00`00081030
kd>dq idtr L40
找到下标为0x20的那一项,也就是8003f500这个未被使用的位置。修改IDT表
eq 8003f500 0040EE00`00081030
注:演示代码中要断点调试不然会跑飞
__asm int 0x20;