本文基于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
tf白管唇膏比较多的妹纸下手,有的妹纸在淘宝网或是是网上代购方下手,但是有的网上代购并不一定卖的是真品,那麼如何判断自身买的tf白管唇膏是确实還是假的呢,我就来教大伙儿tf白管唇膏分辨真假的方式吧。...
由郭敬明执导兼编剧、赵又廷、邓伦、王子文、春夏、汪铎、孙晨竣等主演的古装玄幻片《晴雅集》在北京举行首映礼,主演汪铎一身蓝色西装帅气亮相,优雅绅士,戏中他更是在造型和演技上大胆突破自己。看完首映后,汪铎...
中国小康网讯 综合报道 近日,“新城控股董事长王某某涉嫌猥亵女童”一案持续发酵,随即公司董事长变更,选举公司董事兼总裁王晓松任公司第二届董事会董事长,二人为父子关系。网上也出现涉及王晓松的传闻,称“儿...
人找不到了如何通过手机定位(人联系不上怎么找位置)要知道现在的大多数手机都有GPS定位功能, 当用户的手机出现丢失时、或者安装了一些定位软件,或者是有关部门需要调查该用户的具体位置时,是可以通过手机定...
南京兼职商务接待守候女小学妹联系电话【李婵】,上海市是一座成功者的集中地,对商业服务女学妹的要求也是较为大的,今日大牌明星商务共享女学妹访梦,年纪上海市 女 30,婚姻生活:己婚,文凭:普通高中,气场...
新华社北京11月10日电(记者伍岳)中欧高级别人文交流对话机制第五次会议于10日通过视频连线方式召开。国务院副总理孙春兰与欧盟委员会创新、研究、文化、教育和青年委员加布里埃尔共同出席。 孙春...