Windows内核驱动与调试技术详解
1. Windows系统组件概述
Windows系统中的程序一部分是直接基于原生API(如ntdll.dll和win32u.dll)构建的,还有一部分作为最小/微型进程运行,并通过系统服务调度器直接与内核通信。系统服务调度器(即系统调用处理程序)接收用户模式的请求并将其分发到内核。从用户模式跨越到内核模式时,地址会从较低值变为较高值,这是由于历史和处理器特定原因导致的内存分段。内存被划分为两个不同的规范内存空间,中间有一个大的非规范间隙,用于分隔内核空间(环0)和用户空间(环3)。内核模式侧包含内核层、执行层和驱动程序。
一些驱动程序(如图形驱动程序)可以直接与硬件通信,而其他驱动程序则使用硬件抽象层(HAL)。HAL是一个与架构和平台无关的库,用于与硬件交互。在Windows 10的较新版本(20H1+)中,HAL实现在内核映像中,而hal.dll只是一个用于兼容性的转发DLL。
2. 内核驱动
内核驱动是内核的扩展,可帮助系统与未知设备或文件系统进行交互,为用户模式提供内核自省接口,并修改内核的功能。不过,微软强烈不建议修改内核功能,为此引入了内核补丁保护(即PatchGuard),以防止开发人员篡改核心系统例程和数据结构。
内核驱动分为引导驱动和其他驱动。引导驱动在系统启动时由引导加载器加载,其他驱动在系统启动后由服务管理器加载。在Windows系统中,只有管理员或具有SeLoadDriverPrivilege权限的用户才能加载驱动程序。并且,由于默认情况下所有64位机器都强制执行内核模式代码签名(KMCS),驱动程序必须具有可接受的数字签名才能加载。
驱动程序可以以主要函
超级会员免费看
订阅专栏 解锁全文
9258

被折叠的 条评论
为什么被折叠?



