我目前正在学习 Windows 操作系统运行的不同模式(内核模式与用户模式)、设备驱动程序、它们各自的优缺点以及一般计算机安全性。
我想创建一个实际示例,说明在内核模式下运行的错误设备驱动程序会对系统造成什么影响,例如损坏用于关键操作系统进程的内存。
- 如何直接在内核模式而不是用户模式下执行代码?
我是否必须编写一个虚拟设备驱动程序并安装它才能执行此操作?
在哪里可以阅读有关 Windows 中内核和用户模式的更多信息?
我知道这样做的危险,并将在仅运行 Windows XP 的虚拟机上进行所有实验
最佳答案
“Windows Internals”一书对所讨论的主题相当肤浅。
首先我应该指出,任何程序也在内核模式(KM)下运行。这是因为,与 unixoid 系统不同,对于系统调用,调用线程会转换到 KM,其中内核本身或驱动程序之一为请求提供服务,然后返回到用户模式 (UM)。
开始的第一步是下载最新的 Windows 驱动程序工具包 (WDK) 并开始阅读文档。如果您想要一本更容易理解的书,请选择以下其中一本:
- Windows NT 设备驱动程序开发 - 虽然是一个旧标题,但许多基础知识仍然适用。
- 对 Windows 驱动程序模型进行编程(作者:Oney) - 特别是 WDM 编程,也涵盖基础知识,但有一些错误(与大多数书籍一样)。
- Undocumented Windows 2000 Secrets(Schreiber 着)- 包含有关各种内部结构的大量信息,其技术水平比之前提到的书更高。
- 未记录的 Windows NT - 包含有关技术级别内部结构的更通用部分,后面是一些 native API 函数的引用。
- Windows NT/2000 Native API - 经典,但更多的是引用。尽管如此,其中还是有一些精华(和例子)。
由于您想使用 Windows XP,rootkit.com 上描述的许多技术(甚至是几年前的技术)都应该有效。他们还得到了大量 sample 。
正如您通过所引用网站的名称注意到的那样,您实际上处于我所说的这个问题的灰色地带;)
关于Windows XP : Have my program run in kernel mode?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4672712/