保护模式(三):中断门与陷阱门

中断门与陷阱门在IDT表中,查看IDT表

kd> dq idtr L40h
8003f400  80538e00`0008f19c 80538e00`0008f314
8003f410  00008500`0058113e 8053ee00`0008f6e4
8003f420  8053ee00`0008f864 80538e00`0008f9c0
8003f430  80538e00`0008fb34 80548e00`0008019c
8003f440  00008500`00501198 80548e00`000805c0
8003f450  80548e00`000806e0 80548e00`00080820
8003f460  80548e00`00080a7c 80548e00`00080d60
8003f470  80548e00`00081450 80548e00`00081780
8003f480  80548e00`000818a0 80548e00`000819d8
8003f490  80548500`00a01780 80548e00`00081b40
8003f4a0  80548e00`00081780 80548e00`00081780
8003f4b0  80548e00`00081780 80548e00`00081780
8003f4c0  80548e00`00081780 80548e00`00081780
8003f4d0  80548e00`00081780 80548e00`00081780
8003f4e0  80548e00`00081780 80548e00`00081780
8003f4f0  80548e00`00081780 806d8e00`00082fd0
8003f500  00000000`00080000 00000000`00080000
8003f510  00000000`00080000 00000000`00080000
8003f520  00000000`00080000 00000000`00080000
8003f530  00000000`00080000 00000000`00080000
8003f540  00000000`00080000 00000000`00080000
8003f550  8053ee00`0008e9de 8053ee00`0008eae0
8003f560  8053ee00`0008ec80 8053ee00`0008f5c0
8003f570  8053ee00`0008e481 80548e00`00081780
8003f580  80538e00`0008db40 80538e00`0008db4a
8003f590  80538e00`0008db54 80538e00`0008db5e
8003f5a0  80538e00`0008db68 80538e00`0008db72
8003f5b0  80538e00`0008db7c 806d8e00`00082728
8003f5c0  80538e00`0008db90 80538e00`0008db9a
8003f5d0  80538e00`0008dba4 80538e00`0008dbae
8003f5e0  80538e00`0008dbb8 806d8e00`00083b70
8003f5f0  80538e00`0008dbcc 80538e00`0008dbd6

中断门基本结构与调用门相同,但Type为1110,陷阱门Type为1111

中断门提权实验

构造中断门为0040ee00`00081020

#include "stdafx.h"
//401020
unsigned __int32 X;
void __declspec(naked)Test(){
    __asm{
        mov eax,dword ptr ds:[0x8003f500]
        mov X,eax
        iretd
    }
}

int main(int argc, char* argv[])
{
    __asm{
        int 0x20
    }
    printf("%x",X);
    getchar();
    return 0;
}

陷阱门与中断门几乎一致,区别在于中断门执行时会将IF位清零,陷阱门不会

原文地址:https://www.cnblogs.com/harmonica11/p/14156745.html