Local-Hotfix

       CPU特权级的切换 必须通过中断调用门来进行,必须通过汇编语言来实现。没有API能做到这点。因为通常操作系统对内核进行ring 0保护,任何应用程序不能进入ring 0操作。应用程序要使用内核功能(比如新建进程,新建线程等)的话,由系统调用先切换到ring 0,再紧接着切换回ring 3。ring 0对于应用程序来讲是透明的。

学习/认识CPU的GDT  http://drops.wooyun.org/tips/7715

浅析Windows的访问权限检查机制  http://blog.csdn.net/jdgdf566/article/details/51894627

       Kernel Mode Driver内核方式驱动程序(KMD),该DRIVER运行于NT的KERNEL模式下,类似于RING0。但是,一个KMD的运作环境在不同的时候是根本不同的.DRIVER收到设备请求时的运行环境很可能和设备请求实际操作的运行环境根本不同.这也是NT下,DRIVER的运作也受到NT的许多限制,一不小心,DRIVER和NT就同归于尽,来个BSOD(BLUE SCREEN OF DEATH)。

       WDM乃WIN32 DRIVER MODEL的简写,WIN32驱动程序模型。内核方式驱动在16位时期就有,而WDM是32位时出现的,到Windows2000时候较为完整,乃MS力推的'全新'的驱动程序模式。WDM的特点是驱动从kernel中分离出来,工作在系统的底层;并且挂在PnP(即插即用)下面,不必像内核方式的驱动那样在启动时加载。







       在nt平台下,普通应用程序运行在ring3下,操作系统运行于ring0。如果在程序中需要执行一些特权指令的话,程序必须转入到ring0。由于用户程序执行特权指令可能会破坏系统资源,故出于保护和稳定的目的,操作系统通过“门”机制向用户态程序提供必要的服务。在x86种有四种门:中断门、陷阱门、调用门、任务门,这些是cpu从硬件层提供的支持。这四个门就是让CPU找到到哪里去执行异常或中断的处理代码,是中断和异常处理机制至于为什么分成四种门,是因为具体处理异常中断时有一些区别如陷阱可以嵌套发生,而中断默认情况下不可以嵌套,需要根据中断和异常的类别选择合适的门来处理。

       通过中断门的转移和通过陷阱门的转移之间的差别只是对IF标志的处理。对于中断门,在转移过程中把IF置为0,使得在处理程序执行期间屏蔽掉INTR中断(当然,在中断处理程序中可以人为设置IF标志打开中断,以使得在处理程序执行期间允许响应可屏蔽中断);对于陷阱门,在转移过程中保持IF位不变,即如果IF位原来是1,那么通过陷阱门转移到处理程序之后仍允许INTR中断。因此,中断门最适宜于处理中断,而陷阱门适宜于处理异常。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值