首先向大家推荐一本好书《ROOTKITS——Windows内核的安全防护》,是一个很好的驱动学习入门教材,虽然这里的“驱动”仅指用于Rootkit的驱动。网上很多驱动教程都是针对一定硬件的,对于初学者来说很多概念难以理解,而且没有一个入门的介绍,而这本书从零开始详细介绍了驱动开发的过程,所以非常符合我的需求。
开始之前让我们先把工具准备好吧,虚拟机软件、DDK、VC、其它小软件。
开发驱动的过程中时常会遇到蓝屏的情况。因为驱动程序运行在操作系统的内核,缺少保护,一旦出错系统就会崩溃。所以为了避免频繁重启甚至重装,使用虚拟机是一个很好的选择,一旦有问题回滚到上一次的快照就可以完全恢复了。虚拟机软件使用的是VMware 6,在里面安装了Server 2003 SP0,至于为什么不安装SP2是因为SP2和后面可能会用到的驱动调试软件SoftIce存在兼容性问题(虽然我暂时还没用到它^_^),开机即会蓝屏。
DDK的全称是Driver Develop Kit,是由微软提供的驱动开发工具包,包含了驱动开发所需要的很多库函数等,我用的DDK1830包含了2000、XP、Server 2003的驱动开发包。
VC就不用多说了,虽然最终的编译不在这个环境,但是DDK实际上是要用到VC编译器的。我用的是VC6.0。
其他需要的是一个叫InstDrv.exe的小工具,以及安装DDK后自带的一些软件,比如:DeviceTree。InstDrv是用来在不重启的情况下安装/卸载/开始/停止驱动的工具,DeviceTree用来查看系统中已经启动的驱动程序。
工具准备好了,下次准备动手开发一个最简单的驱动,待续……