根据地址空间、代码权限等WindowsNt将整个操作系统划分为两个不同的部分,即内核模式与用户模式。
谈到这就不得不谈x86CPU的一点小感念了,x86CPU在访问权限中设置了4个等级,Ring0,Ring1,Ring2,Ring3,数值越小权限越高,按照Intel原本的设想,操作系统工作在Ring0层,驱动程序工作在Ring1,2层,应用程序工作在Ring3层,这样普通的Win32应用程序和驱动程序都无法直接访问到操作系统内核代码,如果Windows真这样的做的话病毒的数量肯定会大大减少,但事实是M$只用了R0和R3,查阅资料发现只是为了和其他处理器相兼容如:Alpha等历史原因。。。。。。比如08年比较流行的Rootkit话题说白了也就是安全专家与“病毒爱好者”们在Ring0这块乐土上面争来争去,有的杀软的大量使用的Ring0HOOK多的吓人,可以用RKU(RootKit Unlocker)自己查下就知道事实了。
可能很多人想问为什么病毒会出现?。。。简单点就是色即是空,空即是色的数据存储概念,冯诺依曼的代码和数据不分家!代码和数据都能执行导致了大量的堆,栈溢出攻击的产生;还有技术的特点:两面性!
言规正传,
1、内核模式模块和用户模块。
用户模块:系统进程WinLogon,服务进程Spooler,任何Win32 应用程序,子系统Csrss等。
内核模块:Windows的核心程序:(和Linux的那个核心叫什么的~~~我给忘了。。呵呵)NtosKrnl.exe,支持进程和线程的管理(有谁HOOK这个过嘛?),内存管理(MM~哦),中断、异常的分派、安全机制的的管理等;设备的驱动程序:物理、逻辑设备的驱动,文件系统和网络驱动程序;硬件抽象层:HAL.DLL作用就是将以上的模块和具体的硬件平台隔离开。
2、内核模式驱动程序和用户模式驱动程序
用户模式驱动如打印机驱动,虚拟设备驱动等
内核模式驱动如文件系统驱动,设备驱动程序,WDM驱动程序。
最近忙考试,有空来补充~