搭建双机调试环境
我这里2台都是win10
查看系统的IDT表
获取IDT表的地址
r idtr
然后使用dq 地址 l40 查看各异常的处理函数地址 l42 的最后一条就是0x20 的中断处理函数
与虚拟机中的进行比较
现在我们在中断表中加一个我们自己定义的中断,我们发现int 0x20没有被使用
在vs中新建控制台工程,注意是64位的程序因为我们的系统是64位的
#include <stdio.h>
#include <stdlib.h>
void _declspec(naked) IdtEntry()
{
}
int main()
{
printf("%p\n", IdtEntry);
system("pause");
}
为了使我们的IDT异常处理函数的地址固定,我们进行一些配置
在项目属性的链接器->高级 把随机基址设置为否,固定基址设置为是
最好使用release版本编译,这样函数的地址就可以固定了
运行后我们的函数地址为: 0x401040