羽夏看Win系统内核——驱动篇
写在前面
此系列是本人一个字一个字码出来的,包括示例和实验截图。由于系统内核的复杂性,故可能有错误或者不全面的地方,如有错误,欢迎批评指正,本教程将会长期更新。 如有好的建议,欢迎反馈。码字不易,如果本篇文章有帮助你的,如有闲钱,可以打赏支持我的创作。如想转载,请把我的转载信息附在文章后面,并声明我的个人信息和本人博客地址即可,但必须事先通知我。
你如果是从中间插过来看的,请仔细阅读 羽夏看Win系统内核——简述 ,方便学习本教程。
看此教程之前,问几个问题,基础知识储备好了吗?保护模式篇学会了吗?练习做完了吗?没有的话就不要继续了。
🔒 华丽的分割线 🔒
学完了保护模式,为什么要学习驱动篇呢?具体原因我会在下面进行详细介绍,如下是本篇章的子目录:
本篇子目录
- 驱动篇——简述(本篇将会介绍)
- 驱动篇——开发环境配置
- 驱动篇——内核编程基础
- 驱动篇——内核空间与内核模块
- 驱动篇——常规的0环与3环通信
- 驱动篇——总结与提升
- ¥ 驱动篇——项目源码分析
简述
什么是驱动?这应该是初学者看到这个名词会提出的问题。设备驱动程序,简称驱动程序,是一个允许高层次电脑软件与硬件交互的程序,这种程序创建了一个硬件与硬件,或硬件与软件沟通的接口,经由主板上的总线或其它沟通子系统与硬件形成连接的机制,这样的机制使得硬件设备上的资料交换成为可能。依据不同的计算机体系结构与操作系统差异平台,驱动程序经历了8位、16位、32位、64位变迁,这是为了调和操作系统与驱动程序之间的依存关系,例如在Windows 3.11
的16位操作系统时代,大部分的驱动程序都是16位,到了32位的Windows XP
则使用32位驱动程序,利用微软提供了Windows Driver Model
实现,也就是我们需要编写的驱动。至于64位的Linux
或是Windows
平台上,就必须使用64位的驱动程序,利用WDM
与WDF
皆可实现64位驱动程序,我就不再赘述。
为什么学习驱动?学习驱动并不是为了开发一个应用,而是为了将程序运行到0环权限。我们将用驱动来实现我们不能在3环应用实现的功能。
有些人可能会疑问,我们不是可以通过门来提权实现做与驱动程序相同的操作吗?的确如此,但门是从哪里来的。我们之前实验都是通过WinDbg
来构造门的,如果不通过它来实现,怎么搞?还不是通过驱动搞?
好了,如果开发普通软件的话我们需要一个IDE
,如果你是大牛通过记事本和命令行调用编译器和链接器生成当我没说,一般人是做不到这样的。Windows
平台上常见的就是Visual Studio
,我们将用它进行驱动开发。我用的版本是2019,仅供参考。网上也有不少的各种各样的配置方法。有自行安装WDK7600
+ 配置文件,也用自己配置命令行来实现的。我们是通过最新WDK11
配合Visual Studio 2019
实现xp
驱动的开发与调试。
下一篇
本文来自博客园,作者:寂静的羽夏 ,一个热爱计算机技术的菜鸟
转载请注明原文链接:https://www.cnblogs.com/wingsummer/p/15460423.html