: 'times new roman'; mso-hansi-font-family: 'times new roman'">介绍了一种可在windows nt上实现系统范围hook的完全不同的方法,可在更低一层上拦截系统调用(russinovich和cogswell 1997)。他们提议向native api dispatcher中注入日志机制,这仅比用户模式和内核模式之间的边界低一些,在这个位置上windows nt暴露出一个“瓶颈”:所有用户模式的线程必须通过此处,才能使用操作系统内核提供的服务。
服务和参数表
就像在第二章讨论过的,发生在用户模式下的native api调用必须通过int 2eh接口,该接口提供一个i386的中断门来改变特权级别。你可能还记得所有int 2eh调用都是由内部函数kisystemservice()在内核模式下处理的,该函数使用系统服务描述符表(sdt)来查找native api处理例程的入口地址。图5-1给出了这种分派机制的基本组件之间的相互关系。列表5-1再次给出了service_descriptor_table结构及其子结构的正式定义,在第二章中,已经给出过它们的定义(列表2-1)。