驱动开发⼊门-之⼀:Win7SP1x64驱动开发环境搭建
驱动开发⼊门 - 之⼀
Win7 SP1 x64 驱动开发环境搭建
*—— By EXP 2017-10-04*
(转载请注明出处,仅供分享学习,严禁⽤于商业⽤途)
1. 概述
1.1. 前⾔
适读⼈:具备良好的C/C++开发经验,⼀定的逆向⼯程基础。
本⽂仅讲述在Win7 SP1 x64系统中,搭建基于WDK7600的驱动开发环境,不会解析任何驱动开发的代码。
之所以撰写本⽂,是因为⽹上充斥着⼤量已经过时的基于WinXP(x86)-DDK的驱动开发教程、或针对Win(x64)-WDK但不成体系的驱动开发教程,导致新同学在搭建开发环境时遇到的各种问题难以被解决。
所谓⼯欲善其事、必先利其器,特此记录并整理了在64位系统中,从搭建驱动环境到安装调试驱动程序的每个步骤、可能遇到的问题以及解决⽅案,以供其他同学做⼊门参考,降低学习成本。
另外驱动程序是不存在兼容⼀说的(即x86的驱动只能运⾏在x86系统、x64的驱动只能运⾏在x64的系统),但是x86已经被逐步淘汰了,因此本⽂只会针对x64进⾏说明(其实x86也是⼤同⼩异)。
1.2. 名词解析
名词英⽂原⽂解析
VxD Virtual Device Driver虚拟设备驱动程序
DDK Device Development Kit设备驱动程序开发⼯具包,⼴泛应⽤于XP-x86年代,已淘汰
WDM Windows Driver Model Windows驱动模型
WDK Windows Driver Kit Windows驱动开发⼯具
WDF Windows Driver Foundation Windows驱动开发框架
MSDN Microsoft Developer Network
微软以 Visual Studio 和 Windows 平台为核⼼整合的开发虚拟社区提供⾯向软件开发者的信息服务(包括技术⽂档、产品下载、Blog等)
KMDF Kernel-Mode DriverFramework内核模式驱动程序UMDF User-Mode DriverFramework⽤户模式驱动程序chk Checked(debug)调试版本标识fre Free(retail,或release)发布版本标识
1.3 WDK简史
早期的Windows 95/98的设备驱动是VxD,其中x表⽰某⼀类设备。从Windows 2000开始,开发驱动程序必以WDM为基础的,但如果使⽤DDK来开发WDM,其开发难度之⼤,根本不能奢望像⽤户模式应⽤程序开发那样容易。
  为改善这种局⾯,从Vista开始,微软推出了新的驱动程序开发环境WDF。WDF是微软提出的下⼀代全新的驱动程序模型,它是在WDM的基础上发展⽽来的,⽀持⾯向对象、事件驱动的驱动程序开发,提供了⽐WDM更⾼层次抽象的⾼度灵活、可扩展、可诊断的驱动程序框架。WDF框架管理了⼤多数与操作系统相关的交互,实现了公共的驱动程序功能(如电源管理、PnP⽀持),隔离了设备驱动程序与操作系统内核,降低了驱动程序对内核的影响。
  在众多WDK版本之中,WDK7600算是承上启下的⼀个版本。因为在此之前的驱动开发主要都是基于
XP的DDK,难度过⼤且已过时。  微软在Win7/Vista时期对DDK做了集成优化衍⽣出WDK,且适⽤于之后的Win8/Win10。
  但是微软在WDK7600以后就不再提供独⽴的内核驱动开发包了,并以Win8/Win10+WDK10 为主提供了集成度更⾼的WDF(使得Visual Studio可以集开发、编译、安装、部署和调试于⼀⾝),但是环境配置差异变化较⼤,且由于本⼈不喜欢Win8/Win10系统,有兴趣的同学可以⾃⾏研究,本⽂仅以WDK7600为核⼼搭建驱动环境。
2. 操作系统与预装组件
① 系统版本: Win7 SP1 x64 (必须升级到SP1版本)
  ② C/C++ x64 .NET 库:需安装四个版本 [v2.0.50727] [v3.0] [v3.5] [v4.0.30319]
  ③ Microsoft Office 2007:安装 Visual Studio IDE(VS2008 / VS2010)前置组件
3. 相关⼯具安装
3.1. 安装清单
部分⼯具的功能是重复的,请根据下⽂所建议的两种开发环境选择性安装。
表 1 安装清单(安装顺序建议与清单保持⼀致)
⼯具版本⽤途备注下载
Visual Studio2008 x64C/C++程序开发IDE
⽤于驱动程序编码
需先安装前置程序/库:
.NET x64 v2.0.50727
.NET x64 v3.0
.NET x64 v3.5
.NET x64 v4.0.30319
Microsoft Office 2007
Visual Studio2010 x64C/C++程序开发IDE
⽤于驱动程序编码
需先安装前置程序/库:
.NET x64 v2.0.50727
windows开发平台
.NET x64 v3.0
.NET x64 v3.5
.NET x64 v4.0.30319
Microsoft Office 2007
Visual Assist
X
10.8.2007VS IDE 辅助插件可选安装,提供编码提⽰、补全等辅助功能
WDK7600微软提供的Win驱动开发⼯具包提供驱动开发的API(头⽂件)、库⽂件等DDKWizard  1.3a VS2008驱动模板⽣成插件可在VS2008中直接创建驱动程序开发模板ddkbuild.bat
1.3a VS2008驱动程序⽣成脚本需配合WDK与DDKWizard使⽤
EasySYS0.3.2.7VS2010驱动模板⽣成⼯具⽣成可被VS2010导⼊的驱动程序开发模板
64Signer  1.2内核驱动程序数字签名⼯具Win7之后的64位系统的内核驱动程序必须具备数字签名,此⼯具可伪造测试
⽤的数字签名
DriverMonitor  3.2.0内核驱动程序调试器XP x86⽤于安装、启动内核程序的调试⼯具,Win7 x64可能不兼容InstDrv  1.3.0内核驱动程序调试器Win7⽤于安装、启动内核程序的调试⼯具
DebugView  4.81内核驱动消息捕获器配合DriverMonitor或InstDrv使⽤,⽤于调试内核程序断点打印消息
VMWare11.1.2虚拟机⽤于搭建隔离环境调试驱动程序
WinDbg Windows平台下的⽤户态和内核态
调试⼯具
⽤于配合虚拟机双机调试驱动程序
⼯具版本⽤途备注下载
3.2. WDK的安装与配置
下载WDK的安装镜像GRMWDK_EN_7600_1.ISO,安装到任意⽬录即可。
  本⽂的安装⽬录为:E:\04_work\re\WDK
  环境变量配置:
  ① 右击【计算机】–>【属性】–>【⾼级系统设置】–>【⾼级选项卡】–>【环境变量】
  ② 在【系统变量】中新建四个变量:
变量名变量值备注
W7BASE E:\04_work\re\WDK Win7⽤, Win7 必须配置
WLHBASE E:\04_work\re\WDK Win Vista\2008 ⽤,Win7 必须配置
WNETBASE E:\04_work\re\WDK Win 2003 ⽤,Win7可选配置
WXPBASE E:\04_work\re\WDK Win XP ⽤,Win7可选配置
注:建议添加所有环境变量
4. 驱动开发环境配置
VS2008 与 VS2010 两种开发环境 任选其⼀即可 。
  若只是开发简单的驱动程序且不涉及到汇编指令,VS2008环境更便捷。但若驱动程序需要嵌⼊汇编语⾔,则推荐使⽤VS2010。  两种开发环境的差异⽐较如下:
4.1. 环境1(不推荐):VS2008 + DDKWizard
4.1.1. VS2008的安装与配置
① 安装VS2008(任意位置即可)
  ② 打开VS2008 ,设置WDK环境依赖: 【⼯具】–>【选项】–>【项⽬和解决⽅案】–>【VC++⽬录】 --> 右侧【平台】选择【x64】 ,按下表添加WDK⽬录(需置顶并确保顺序):
-x64平台(即64位编译环境)Win32平台(不必配置,仅参考)
可执⾏⽂件&(W7BASE)\bin\x86\amd64
&(W7BASE)\bin\x86
&(W7BASE)\bin\x86
&(W7BASE)\bin\x86\x86
&(W7BASE)\tools\pfd\bin\bin\x86
包含⽂件
&(W7BASE)\inc\api
&(W7BASE)\inc\crt
&(W7BASE)\inc\ddk
&(W7BASE)\inc\wdf
&(W7BASE)\inc\wdf\kmdf\1.9
&W7BASE)\inc
&(W7BASE)\inc\api
&(W7BASE)\inc\crt
&(W7BASE)\inc\ddk
&(W7BASE)\inc\wdf
&(W7BASE)\inc\wdf\kmdf\1.9
&(W7BASE)\inc
库⽂件&(W7BASE)\lib\win7\amd64
&(W7BASE)\lib
&(W7BASE)\lib\wdf\kmdf\i386\1.9 &(W7BASE)\lib\wxp\i386
源⽂件&(W7BASE)\src&(W7BASE)\src -x64平台(即64位编译环境)Win32平台(不必配置,仅参考)
备:经测试第②步不论是否在x64平台配置WDK⽬录也可成功编译DDK(前提是配置了上⽂的环境变量),⽽且⼀旦配置了这些⽬录,会导致x64平台只能编译DDK项⽬,⽆法在编译普通的控制台程序(VS2008的解决⽅案平台是所有项⽬共⽤
的,VS2010则是独⽴的)。所以建议只有在不配置就⽆法编译DDK的情况下才执⾏第②步。
4.1.2. DDKWizard的安装与配置
① 安装DDKWizard(任意位置即可)
  ② 在WDK根⽬录下新建⽂件夹script,把 ddkbuild.bat 和 d 复制进去。
  ③ 修改【系统变量】中【Path】变量值,末尾添加 ;%W7BASE%\script;
  ④ 安装成功后,在VS2008中新建项⽬时会增加⼀个 DDK Project 的模板,利⽤该模板创建WDK项⽬,会⾃动调⽤d 脚本编译驱动程序。
4.1.3. WDK项⽬创建、配置与发布
① 打开VS2008 , 【⽂件】–>【新建】–>【项⽬】–>【DDK Project】 ,如图 1。
图 1 创建WDK项⽬
② 此处选择【Driver】模板(会⾃动创建默认接⼝代码),然后填写WDK项⽬名称(本⽂样例项⽬为VS2008_WDK_Demo),点击【确定】后,如图 2配置即可。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。