windows驱动怎么写

1.什么是windows驱动编程Linux的内核编程大家都是比较熟悉的 。
而Windows内核编程则不大为一般读者所熟悉 。常常有这样的问题: “你又没有Windows的代码,你如何搞内核编程?” “除了微软的人,难道还有人做Windows内核吗?” “Windows内核编程有用吗?” 其实Windows内核编程不但有用,而且常用 。
很多我们每天都使用的软件,就毫无疑问的使用了Windows内核编程的技术 。最典型的就是实时监控的杀毒软件 。
此外还有防火墙、虚拟光驱、以及90%的驱动程序 。这些程序的有一个共同的特点,他们的一部分组件,是作为Windows的一部分,能对 Windows上运行的所有的应用程序起作用 。
因此内核编程的应用,往往给传统软件带来更强的功能,实现技术上的飞跃 。举个例子 。
我们常常听说,对文件进行加密,可以使文档更加安全 。对文件加密并不需要任何内核组件 。
我们可以写一个应用程序,读入文件,加密数据,然后重写为一个加密文件 。解密也可以同样如此 。
但是实际上这并不满足一般的用户需求 。对一个公司的员工来说,那些“重要的文档”很可能就是每天工作所用的文件 。
想象一下,他必须要每天从服务器上下载加密的文件,然后用解密工具解密 。然后用Office开始工作 。
工作完毕后,用加密工具加密,再上传,然后删除工作文档 。且不说大部分时间文档是以解密的方式保存在硬盘上的不安全性,这个工作流程是可以接受的吗?没有人会接受的 。
比较“人性化”的方式就是让Office可以直接打开已经加密的文档 。保存的时候,直接就保存成加密的文档 。
硬盘上,这个文档始终是加密的 。而且对合法的用户透明 。
对非法的用户,则只能看见密文,从而无法编辑也无法阅读 。而且也不仅仅Office,还有AutoCAD、Visual Studio、Photoshop等等用户可能用于编辑机密文件的所有的工具 。
这是可以实现的吗?如果我们不能去修改Office和其他的工作软件 。这当然是可以实现的 。
既然我们编写Windows内核程序,当然可以让Windows的文件系统从硬盘读取文件的时候,对特定的进程进行特别的解密 。等这些软件读取到数据的时候,它们读到的已经是正常的数据了 。
这个过程和实时扫描病毒的原理是一样的,使用一个文件过滤驱动程序 。这就是读者可能已经听到过的文件透明加密技术 。
在和《天书夜读:从汇编语言到Windows内核编程》一书同一系列的《寒江独钓——Windows内核编程与信息安全》(预计明年出版)中,对键盘过滤、硬盘过滤、文件过滤、网络过滤等安全相关的内核编程,都有详尽的讲解和例子 。内核编程的另一个特点是:这些代码运行在R0级 。
R0级别是最高特权级别 。对CPU有完全控制的能力 。
这非常的适合一些安全软件,当然也适合做破坏的工作 。因为内核程序有最高(也就是根)权限,这样的技术在安全领域(或者破坏领域)被称为rootkit技术 。
rootkit技术是当前安全领域最热门的技术之一 。许多病毒使用了rootkit技术 。
用来隐藏病毒文件,窃取密码、发送攻击包等等 。rootkit病毒感染后极难清除,在感染前提前防范是最有效的办法 。
Windows内核确实没有公开源代码 。但是MS提供Windows内核程序的开发包:WDK 。
WDK实际上主要用于开发驱动程序 。而驱动程序基本上都是内核程序 。
WDK提供的头文件以及部分源代码,实际上就是Windows内核的代码的一部分 。有部分驱动程序(比如FAT32文件系统)的代码是完全公开的 。
我们也可以在这里看到Windows内核开发者的代码风格 。同时,微软也提供了所有Windows版本的符号表在网上供研究者下载 。