中断门
Posted duxie
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了中断门相关的知识,希望对你有一定的参考价值。
#include <windows.h> #include <stdio.h> // 存放idtr寄存器的值 char sz[6]; // 声明一个全局变量 存放IDT表中的第二项的值 LONGLONG IdtSecond; // 用于间接获取IDT表第二项的地址 DWORD* MyFirst; // 存放IDT表第二项的地址 DWORD MySecond; VOID _declspec(naked) MyCAll() { // 将IDTR寄存器的值放入数组 _asm { sidt sz; } // IDT表的地址存放于第二个位置 // 获得的是IDT表基址的地址 MyFirst = (DWORD*)&sz[2]; // 获得IDT表第二项的值 MySecond = (*MyFirst) + 8; // 获取IDT表第二项的值 IdtSecond = *(LONGLONG*)(MySecond); // 从中断处理函数返回 _asm { iretd; } } int main() { // 产生异常,进入相应的中断处理函数 _asm { int 0x20; } printf("%llx ", IdtSecond); system("pause"); return 0; }
以上是关于中断门的主要内容,如果未能解决你的问题,请参考以下文章