驱动开发笔记——开篇

来源:互联网 发布:miracle dota2 知乎 编辑:程序博客网 时间:2024/05/01 09:03
    身为信息安全专业的学生,接触计算机也有十来的年头了,到现在还没有深入过Windows内核的世界,不禁有些惭愧。所以现在开始认认真真沉下心来研究这个全新的世界,记些笔记,不但方便自己回头翻阅,也希望可以和同样研究驱动、内核的朋友们一起研究探讨。

    首先向大家推荐一本好书《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用来查看系统中已经启动的驱动程序。

    工具准备好了,下次准备动手开发一个最简单的驱动,待续……