1.Windows使用两种处理器特权级别:1.内核 2.用户
2.几乎所有的代码都在用户模式,除了操作系统和硬件驱动
3.用户模式不能直接访问硬件,它被限制只能访问CPU上所有寄存器和可用指令的一个子集,所以我们为了改变硬件或者修改内核中的状态,必须依赖API
4.进入内核模式的方式:SYSENTER,SYSCALL或者int 0x2E,指定一个调用进入内核
原生API:
![](https://img2018.cnblogs.com/blog/1541424/201811/1541424-20181120122947741-225787451.png)
说明:普通的程序调用API时候(kernel,user32这些dll中的函数),这些Dll会先调用ntdll,ntdll主要负责用户与内核的交互,然后处理器切换到内核模式,并且执行内核中的函数,通常位于ntoskrnl.exe中