(1)Native API
Native API函数一般都是在Win32 API上加前Nt,如Win32 API下的CreateFile对应的Native API的函数为NtCreateFile。
所有的Native API都在Ntdll.dll中实现,而Win32子系统的三个核心dll文件都依赖于Ntdll.dll。
Win32 API从Windows NT到Windows 2000,再到Windows XP基本保持不变,变化的是只是Native API。
(2)系统调用
Native API从用户模式穿越进入内核模式,调用系统服务。从用户模式进入到内核模式,是通过软件中断进入的。
软中断会将Native API中的
参数和系统服务号的参数一同传进内核模式,不同的Native API会对应不同的系统服务号。在系统服务组件中,有一个系统服务描述符表(System Service Descriptor Table)。根据这个系统服务号为索引,从表中可以查出对应系统服务函数的函数地址。
某些黑客软件或计算机病毒,往往更改系统描述符表,将标准的系统服务函数的地址,替换成有恶意代码的地址。
在系统调用中,会检验参数的合法性,这也是操作系统最后一道屏障。以后的任何操作,操作系统都不会做任何检查ÿ