驱动开发学习笔记(3-2)–Four-F的驱动开发教程-内核模式驱动程序基础

1.Kernel Mode驱动程序基础

本教程讲述了如何在Windows NT为基础的操作系统上用Win32汇编开发KMD,包括NT4.0、2000、XP和2003等操作系统。开发Windows 95/98/ME使用的VxD驱动程序方面的知识并不在本教程讲述的范围内,另外,毫无疑问本教程并不那么完美,可能还包含了诸多未发现的错误,如果您发现了问题,请告知作者,毕竟作者的母语并不是英语,把它翻译成英文已经够难为我了(注:原作者是俄国人也),也感谢masquer和Volodya的校对工作。

1.1 KMD结构概述

1.1.1 主要组成部分

根据地址空间、代码权限和职责的不同,Windows NT内部划分为两个截然不同的部分。
地址空间的享用方式也非常容易理解,整个32位系统的4GB内容被划分为两个相等的部分,用户模式(user-mode)的进程使用的地址空间被映射到低位的2GB上(地址范围00000000 – 7FFFFFFFh),而高位的2GB(地址范围80000000h – 0FFFFFFFFh)则供操作系统的组成部分来使用,如设备驱动程序、系统内存池、系统使用的数据结构等,在这部分中,内存共享的权限和职责等方面就要复杂一点了。

下面就是用户模式进程的一些简单分类:
◎ 系统支持进程–如Logon进程(位于\%SystemRoot%\System32\Winlogon.exe)
◎ 服务进程–如Spooler进程(位于\%SystemRoot%\System32\spoolsv.exe)
◎ 用户应用程序–任何Win32、Windows 3.1、DOS、POSIX或者OS/2程序
◎ 子系统–Windows内置3个子系统:Win32(位于\%SystemRoot%\System32\Csrss.exe)、POSIX子系统(位于\%SystemRoot%\System32\Psxss.exe)和OS/2子系统(位于\%SystemRoot%\System32\Os2ss.exe),在Windows XP以及后续的操作系统中,POSIX和OS/2子系统已经被去掉了。

Continue Reading

驱动开发学习笔记(3-1)–Four-F的驱动开发教程-前言

0.前言

0.1 关于KmdTut

KmdTut是一份以Win32汇编语言来开发Kernel mode驱动程序的教程,读者可以从http://www.freewebs.com/four-f/下载最新的英文版本,为了使用本教程,你还需要下载Kernel mode驱动程序开发包KmdKit,更多信息请参考http://www.wasm.ru/(很不幸,是俄文的,倒ing~~~)

0.2 关于KmdKit

KmdKit的全称是Kernel Mode Driver development Kit for assembly language programmers,即内核模式驱动程序汇编开发包,KmdKit中包括了用宏汇编编译器开发驱动程序需要用到的所有东西。
你可以从http://www.wasm.ru/或者http://www.freewebs.com/four-f/下载到最新版本的KmdKit。

0.3 关于KmdTut中文版

本中文版由罗云彬和刘松翻译,首先发表在http://asm.yeah.net(罗云彬的编程乐园)中,如果需要转载或者引用,请注明出处。
虽然本人(这里的本人当然是指罗云彬了~~)在一些使用习惯上并不十分赞同原作者的使用方式,如将汇编代码和Makefile的内容合并放在BAT文件中、还有过多的使用宏来定义字符串等方式,因为个人认为严格地按照常规的方式来写代码更有利于读者理解,但是在翻译的时候,还是首先尊重原作,读者对于文中的一些和个性化的表达方式可以自行取舍。

◎ 将汇编代码和编译命令一同放在BAT文件中的缺点:
一般在汇编项目往往将编译命令放在Makefile中,并且使用nmake工具来进行编译,在本人著的《Windows环境下32位汇编语言程序设计》一书中,所有的例子都是这样写的。这样写的好处实际上就是nmake工具带来的好处——那就是源文件的从属关系清晰,编译链接的效率很高,符合流行的习惯等。

Continue Reading

驱动开发学习笔记(2)-开发环境和第一个sys驱动

说白了,没什么技术含量全是抄得书上的代码,而写下来不过是为了加深对这个东西的印象。

1.开发环境下载搭建

http://connect.microsoft.com/

wdk

微软官方的下载地址,需要登陆,可以用windows live id或者msn帐号登陆。 中间有一步需要注册,注册后登录会跳转的控制中心,点首页。从左侧类别选择开发人员工具,知道到Windows Driver kit下载安装就可以了。

Continue Reading

驱动开发学习笔记(1)-调试环境调试器设置【WinDbg】

从今天开始正式开始学习开发驱动,很多的东西可能都需要慢慢开始把。现在的感觉依旧是学艺不精。东西学的太多太杂。
记录下这些东西怕用的时候会忘了。也不知道该怎么办了。
1.驱动程序安装
工具:srvinstw.exe
猛击此处下载!

工具使用简单明了,也就没不要记录了。需要注意的是在file path这里只能手工输入,如果浏览的话只能看到exe文件。

Continue Reading