本文基于Windows2003以上32位系统,因为XP处理NMI很弱,我们后面再说。 最近为点硬件写驱动,需要处理关于NMI的一些东西,索性把以前记录的一些资料和最新的体会写下来,希望对大家有用。 Nmi(Non Maskable Interrupt),一般在紧急的电源故障、总线超时或者存储器奇偶校验出错时被发出,对应的中断向量号为2,即int 2。CPU有两根引脚INTR和NMI接受外部中断请求信号:INTR接受可屏蔽中断请求,NMI接受不可屏蔽中断请求。在80386以上,标志寄存器 EFLAGS中的IF标志决定是否屏蔽可屏蔽中断请求。下面是调试器的结果: kd> !idt -a Dumping IDT: 00: 8082409e nt!KiTrap00 01: 8082421a nt!KiTrap01 02: Task Selector = 0x0058 03: 8082462a nt!KiTrap03 04: 808247a6 nt!KiTrap04 05: 80824904 nt!KiTrap05 06: 80824a86 nt!KiTrap06 07: 808250e6 nt!KiTrap07 08: Task Selector = 0x0050 09: 80825518 nt!KiTrap09 0a: 80825632 nt!KiTrap0A //... ff: 808231b0 nt!KiUnexpectedInterrupt207 相关的中断可以查阅详细资料[1],我们只关心下面两个: IDTEntry _KiTrap02, D_INT032 ; 2: NMI/NPX Error IDTEntry _KiTrap08, D_INT032 ; 8: Double Exception 即Windbg中显示的: 02: Task Selector = 0x0058 08: Task Selector = 0x0050 表 示的是系统为处理这两个int而设置的任务门,KGDT_DF_TSS(50h)和KGDT_NMI_TSS(58h)。那么是系统什么时候设置的 呢?ntoskrnl加载的时候,KERNEL_ENTRY_POINT是KiSystemStartup()函数,反汇编不难看出它的流程,你也可以参 考WangYu的一篇文章[2],或者可以参考ReactOs的代码,不过我们简单地反汇编一些: 1)首先是为NMI建立任务门,这样我们就能捕捉到NMI了: INIT:006053CE mov eax, [ebp+var_10] ; 之前由GetMachineBootPointers得到的Idt INIT:006053D1 lea ecx, [eax+10h] ; 16/8 -> 2号中断描述符 INIT:006053D4 mov byte ptr [ecx+5], 85h ; 10000101 -> dpl=0, present, taskgate INIT:006053D8 mov word ptr [ecx+2], 58h ; KGDT_NMI_TSS(58h) INIT:006053DE lea ecx, [edi+58h] INIT:006053E1 mov byte ptr [ecx+5], 89h ; 10001001 -> 32bit, dpl=0, present, TSS32, not busy INIT:006053E5 mov edx, offset _KiNMITSS INIT:006053EA mov eax, edx INIT:006053EC mov [ecx+2], ax ; KgdtBaseLow(2h) INIT:006053F0 shr eax, 10h INIT:006053F3 mov [ecx+7], ah ; KgdtBaseHi(7h) INIT:006053F6 mov [ecx+4], al ; KgdtBaseMid(4h) INIT:006053F9 mov eax, 68h ; MINIMUM_TSS_SIZE(68h) INIT:006053FE mov [ecx], ax ; KgdtLimitLow(0h) INIT:00605401 push edx INIT:00605402 push edx INIT:00605403 call KiInitializeTSS(x) 2)然后是建立堆栈: INIT:00605408 pop edx INIT:00605409 mov eax, cr3 INIT:0060540C mov [edx+1Ch], eax ; TssCr3(1ch) INIT:0060540F mov eax, offset P0BootStack INIT:00605414 mov eax, [eax+38h] INIT:00605417 mov [edx+4], eax ; TssEsp0(4h) , NMI stack INIT:0060541A mov [edx+38h], eax INIT:0060541D mov dword ptr [edx+20h], offset _KiTrap02
三星笔记本怎么样(三星星曜7系2020款笔记本怎么样)三星星曜7系2020款笔记本仍然是采用英特尔酷睿i5和i7八代处理器,有13.3英寸和15.6英寸两个尺寸,比较轻薄,铝合金的金属机身坚固耐用,支...
通话记录能查到语音吗通话记录能查到吗网上能查到通话记录吗怎么查到别人通话记录这是一个粉丝的问题。实话实说,一个人挣钱的多少与挣钱途径的选择有关系,但重要的还是自身资源和个人能力,不是说选准了项目就能挣...
关键字:收留,个性化 主题风格:女士 问:这一女性:岁,个子162,休重103,年纪二十一岁,大三,有两个姊妹。她们家有首饰店,有自身的生产制造运营模式,盈利丰厚。 家中大部分从业这一行业,这还...
针对“磁碟机(Worm.Win32.Diskgen)”病毒在网上肆虐的情况,计算机反病毒专家向用户介绍五招分辨“磁碟机”病毒的方法。 1、某些杀毒软件和安全软件无法运行,被强行关闭。 2、计算机安全模...
不能过分火,早恋情感东北师范大学大三。我以为中国的青少年从月朔开始就该当谈爱情了。用智慧的做法,乔家抉择照旧要当着孩子的面问清楚他们到底有没有早恋这件工作,于是在一天上学之前早上。早恋那么恭喜你乐成被...
天涯海角景区在我国哪个城市?今天支付宝蚂蚁庄园2020年5月7日庄园小课堂的答案是什么呢?蚂蚁庄园庄园小课堂2020年5月7日的问题是【小鸡宝宝考考你,“天涯海角”景区在我国哪个城市】。下面小编就为大...