Windows 内核驱动调试环境搭建及调试步骤

Windows 内核驱动调试环境搭建及调试步骤
本文,系09年笔记记录整理,当时只有大概的步骤,最近又搭建环境,顺道比较详细的整理一下,以供自己备查。

较之前的笔记,只是DDK和VMWARE的版本增高了,基本步骤还是大差不差。

注意:
如果是初次搭建环境,请大概浏览完全篇后,再参照本文搭建环境。

一、工具描述
主机:XP sp3
虚拟机:vmware9.0 +XP sp3
WinDBG
DDK:6.1.6001.18002.081017-1400_wdksp-WDK18002SP_EN_DVD.iso
注:
主机:hostOS
虚拟机:guestOS
代码系《windows驱动开发技术详解》
二、具体步骤
guestOS设置:
添加串口:
VM->settings->hardware->add
选择 serial
设置如下图所示:
修改guestOS的boot.ini文件
在文件最末行添加如下内容:
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional Debug" /fastdetect /debugport=com2 /baudrate=115200 debugport=com2,要根据你虚拟出来的串口号来设置。

本人电脑里设置的是COM2,如上图所示。

注意:
1、boot.ini 文件在C:根目录下,修改booti.in文件时,需要设置文
件夹选项,详见下图的标注。

2、波特率
进入系统(虚拟机),修改串口的波特率为115200,默认建立的时,波特率是9600。

电脑右键->属性->硬件->属性管理,在弹出的框框里找到COM2修改即可。

虚拟机(guestOS)上的配置基本完成。

hostOS配置:
安装DDK
版本:
6.1.6001.18002.081017-1400_wdksp-WDK18002SP_EN_DVD.iso,在
微软网站可以下载到。

DDK的安装,可以使用DEAMON tools 安装即可。

WinDBG设置:
创建一个windbg的快捷方式
右击windbg快捷图标,并在属性下的目标内容后面,
添加“-k com:port=\\.\pipe\com_1,baud=11520,pipe”后,确定即可。

设置符号路径
WinDbg->菜单->File->Symbol File Path或“Ctrl+S”打开设置窗体,符号路径一般有两个两者以分号隔开。

1、是你设置保存系统DLL的PDB文件的路径
直接从微软网站下载,下载时一定要注意版本,也就是要和你的操作系统版本一致。

Symbol下载地址中
/whdc/devtools/debugging/symbol pkg.mspx
例如
我将其安装在D:\WINDOWS\Symbols,则在框中输入“D:\WINDOWS\Symbols”
2、是你驱动的PDB的路径,即你驱动生成所在的目录。

至此,hostOS(主机)需要设置的基本完成。

联调基本步骤:
启动虚拟机
选择 XP的调试版本,先不要按“回车键”。

主机(hostOS)上运行Windbg程序。

运行虚拟机上的XP系统(在虚拟机的 debug选项上按“回车”)
Windbg界面的命令行窗口输入“bu helllwdm!driverentry”(不分大小写哦)
在驱动的DriverEntry函数的入口点下一个延迟断点,helllwdm是你的驱动名字。

在虚拟机上加载驱动程序
这里使用instDrv工具,网上搜索能搜到。

在虚拟机上,安装驱动,并启动
主机(hostOS)上的Windbg,就断下来了,可以单步调试你的驱动了,如下图所示:
至此,本文的任务完成。

合集下载

windows驱动开发和调试环境搭建

windows驱动开发和调试环境搭建

Windows驱动开发和环境搭建【文章标题】: Windows驱动开发和调试的环境设置【文章作者】: haikerenwu【使用工具】: VC6.0,VMware6.0.3,Windbg【电脑配置】: 惠普笔记本xp sp3(一)VMWare安装篇VMWare的安装一路Next即可,关于其序列号,百度一下就能找到,虚拟机安装完成之后,需要安装操作系统,我在虚拟机中安装的是windows xp sp2系统。

点击“文件”----“新建”----“虚拟机”进入新建虚拟机的向导,配置虚拟系统参数选择虚拟系统文件的兼容格式(新手推荐选择默认选项)按照默认设置继续点击下一步,选择好您需要的操作系统,此处我选择的是Windows XP Prefessional。

设置虚拟机名称和虚拟操作系统安装路径,我单独空出来一个F 盘,将虚拟机和虚拟操作系统全部装在该盘。

配置网络模式(推荐选择NA T,一般主机不用做任何的设置虚拟机就可以利用主机上网)。

配置虚拟磁盘的容量。

在这里可以直接单击完成,来完成基本操作设置,磁盘默认空间是8GB,用户可以根据自己的实际使用情况来调整大小,也可以自定义分区。

操作完成之后,在“VM”菜单下有个“setting。

”菜单,点击此菜单,在CD-ROM中选择合适的选项,我使用的是Use ISO image 选项,将我的xp sp2操作系统的ISO映像路径设置好,安装操作系统。

点击ok之后,启动虚拟机,即开始安装操作系统,安装过程跟普通装机过程相同。

安装完成之后,启动操作系统,然后在VM菜单下点击“Install VMWare Tools”,把虚拟操作系统的驱动装好。

(二)VMWare设置篇虚拟操作系统安装完成之后,就是设置该系统为Windbg双机调试做准备。

关闭虚拟操作系统,添加一个虚拟串口,因为我的电脑是笔记本,现在的笔记本很少配置串口,所以要虚拟一个串口,这个过程由VMWare完成,图解如下。

WinDBG+VMware双机内核调试环境搭建

WinDBG+VMware双机内核调试环境搭建

WinDBG+VMware双机内核调试环境搭建因为接下来要写个文件过滤驱动,要有个内核调试环境,昨天天搭了一下,比较简单,网上已有详细步骤。

vmware中装个winxp,暂且称为SlaveOS吧。

相应的我们主系统成为MasterOS。

我的步骤如下:1.先在MasterOS上装WinDbg。

在桌面建一个快捷方式,修改程序启动参数。

具体操作为右键WinDBG快捷方式-》属性。

现在的目标内容为(假设):"E:\Program Files\Debugging Tools for Windows (x86)\windbg.exe",在它后边加上-b -k com:pipe,port=\\.\pipe\com_1,resets=0,注意,红字部分加在引号外面。

确定。

2.MasterOS设置结束,接下设置vmware虚拟机。

设置虚拟机需要在SlaveOS关闭的情况下进行。

打开虚拟设置,增加一个“Serial Port",如图1:图13.下一步选择”Output to named piped".如图2:图24.虚拟机配置完毕,接下来启动SlaveOS进行配置。

打开虚拟机c:\boot.ini。

在文件末尾加上:multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional Debug" /fastdetect /debugport=com_1 /baudrate=115200保存后重启。

启动菜单会新增一个debug的菜单。

如图3:图35.在上述界面按下上下箭头键。

回到MasterOS,通过快捷方式打开WinDBG,此时WinDBG会出现如下提示:Microsoft (R) Windows Debugger V ersion 6.11.0001.404 X86Copyright (c) Microsoft Corporation. All rights reserved.Opened \\.\pipe\com_1Waiting to reconnect...回到虚拟机,按下回车,windgb会显示连接信息。

windbg 调试驱动教程

windbg 调试驱动教程

使用WinDbg和虚拟机调试Windows驱动程序教程(转)驱动调试攻略(WinDbg)驱动调试是一个系统级调试方式,所以调试工具用WinDbg是最佳选择。

驱动调试一般情况下,需要两台电脑进行。

一台作为主机进行驱动调试,另一台作为目标机进行驱动安装。

当然如果没有多余的电脑,我们可以安装VMware模拟系统调试(虚拟机)。

只是对电脑的配置要求比较高。

本文介绍使用WinDbg及VMware进行调试的具体设置及方法。

这些资料在网络很难找到,笔者也是吸取了他人很多宝贵意见才完成的,供大家学习讨论。

其实用SoftIce可以单机调试驱动,但是有个问题就是在SoftIce启动前驱动可能已经启动了。

VMware Support 中说,自4.0.18.0 版本之后的WinDbg 都支持了通过pipe 来进行调试,不过微软对此并没有任何说明。

所以,在VMware中虚拟被调试的系统,然后通过VMware 虚拟一个com端口。

使用这个虚拟的端口,就可以用WinDbg 进行调试了。

具体步骤如下:1. 安装和设置WinDbg,VMware首先,请到微软官方网站/whdc/devtools/debugging/default.mspx,下载最新版本的WinDbg工具,建议使用6.0以上版本的WinDbg做为调试工具。

VMware也可以在网站上找到,当然使用高版本比较好。

安装过程比较简单,就不在此多做介绍。

唯一要注意的是,安装完虚拟机后,请在VMware主菜单“VM”中选择“Install VM Tools…”,完成系统驱动文件的安装。

安装完这两个软件后,请在VMware中安装跟你的电脑版本相同的操作系统。

例如:你的电脑安装的是WindowsXP Professional,那么最好在Vmware中安装相同版本。

至少是相同的系统,Windows XPßà Windows XP、Windows 2000ßà Windows 2000。

WINDOWS 7 配置驱动开发环境(wdk7.60)

WINDOWS 7 配置驱动开发环境(wdk7.60)

WINDOWS 7 配置驱动开发环境(wdk7.60)1. 安装VS2010,WDK7.60(GRMWDK_EN_7600_1)2. 新建VC 控制台项目(选择为空项目)3. 新建项目配置“driver” ,点击下拉按钮-点击(配置管理器)输入名称(Driver Debug)点击确定就可以了,其他的不要动哦!完成后的效果!点击确定按钮之后呈现出来的画面鼠标右击工程选择属性,会弹出以下窗口!4. 设置VC++路径<我把wdk安装在E盘下>a. 配置可执行文件目录:E:\WinDDK\7600.16385.1\bin\x86;b. 配置包含目录:E:\WinDDK\7600.16385.1\inc\ddkE:\WinDDK\7600.16385.1\inc\E:\WinDDK\7600.16385.1\inc\apic. 配置库目录: E:\WinDDK\7600.16385.1\lib\win7\i3865新建C/C++文件不然无C/C++设置选项<刚开始我们创建了一个空的项目所以项目里没有c++文件,现在要做的就是在空的项目-源文件-添加一个新建项c++文件>常规目标文件扩展名:.sys //必选6. 设置C/C++选项常规选项卡1 调试信息格式(C7 兼容(/Z7) //可选2 警告等级(2 级(/W2) //可选3 将警告视为错误(是(/wx) //可选优化选项卡优化(禁用/Od) //可选预处理器预处理器定义:WIN32=100;_X86_=1;WINVER=0x501;DBG=1 //必选如果是Release,那么可想而知,不需要DBG=1代码生成启用最小重新生成:否//可选基本运行时检查:默认值//可选运行时库:多线程调试(/MTd) 或多线程(/MT) //建议选<本人选择的是多线程调试(/MTd)>缓冲区安全检查:否//可选(可避免出现LINK : error LNK2001: 无法解析外部符号__security_cookie)高级调用约定__stdcall(/Gz) //必选7. 链接器设置常规启用增量链接:否(/INCREMENTAL:NO) //建议选上忽略导入库:是// 可选( 设置为此值时,必须在附加库目录中加:E:\WinDDK\7600.16385.1\lib\win7\i3865 这样项目就不会依赖IDE 环境的设置)如果否( 设置为此值时,将依赖IDE 的环境的相关设置)输入附加依赖项ntoskrnl.lib;Hal.lib;wdm.lib;wdmsec.lib;wmilib.lib;ndis.lib;MSVCRT.LIB;LIBCMT.LIB //必选//NT式驱动ntoskrnl.lib WDM式驱动wdm.lib( HalXXX 函数在Hal.lib,WmiXXX 函数在wmilib.lib ,NdisXXX函数在ndis.lib ) ( 必要时需要增加微软的标准库MSVCRT.LIB MSVCRTD.LIB(调试库) LIBCMT.LIBIBCMTD.LIB(调试库) )( 如果源码中有source 文件,那么该文件的TARGETLIBS 字段会列出该项目需要的库)忽略所有默认库:是(/NODEFAULTLIB) //必选清单文件:启用用户账户控制(UAC)否//必选不然会出现>LINK : fatal error LNK1295: “/MANIFESTUAC”与“/DRIVER”规范不兼容;链接时不使用“/MANIFESTUAC”调试:生成调试信息是(/DEBUG) //可选生成映像文件:是(/MAP) //可选映像文件名:$(TargetDir)$(TargetName).map //可选系统(System)子系统: 控制台(/SUBSYSTEM:CONSOLE) //必选堆栈保留大小:4194304 //可选堆栈提交大小:4096 //可选驱动程序: 驱动程序(/DRIVER) //必选高级:入口点:DriverEntry //必选随机基址:清空//把框里的数据删掉。

Windows驱动程序开发环境配置

Windows驱动程序开发环境配置

Windows驱动程序开发笔记一、WDK与DDK环境最新版的WDK 微软已经不提供下载了这里:https:/// 可以下并且这里有好多好东东!不要走进一个误区:下最新版的就好,虽然最新版是Windows Driver Kit (WDK) 7_0_0,支持windows7,vista 2003 xp等但是它的意思是指在windows7操作系统下安装能编写针对windows xp vista的驱动程序,但是不能在xp 2003环境下安装Windows Driver Kit (WDK) 7_0_0这个高版本,否则你在build的时候会有好多好多的问题.上文build指:首先安装好WDK/DDK,然后进入"开始"->"所有程序"->"Windows Driver Kits"->"WDK XXXX.XXXX.X" ->"Windows XP"->"x86 Checked Build Environment"在弹出来的命令行窗口中输入"Build",让它自动生成所需要的库如果你是要给xp下的开发环境还是老老实实的找针对xp的老版DDK吧,并且xp无WDK 版只有DDK版build自己的demo 有个常见问题: 'jvc' 不是内部或外部命令,也不是可运行的程序。

解决办法:去掉build路径中的空格。

二、下载 WDK 开发包的步骤1、访问Microsoft Connect Web site站点2、使用微软 Passport 账户登录站点3、登录进入之后,点击站点目录链接4、在左侧的类别列表中选择开发人员工具,在右侧打开的类别:开发人员工具目录中找到Windows Driver Kit (WDK) and Windows Driver Framework (WDF)并添加到您的控制面板中5、添加该项完毕后,选择您的控制面板,就可以看到新添加进来的项了。

WinDebug+虚拟机---调试驱动的配置

WinDebug+虚拟机---调试驱动的配置

WinDebug+虚拟机---调试驱动的配置WinDebug+虚拟机---调试驱动的配置现在一直在做有关Windows驱动开发的工作,驱动开发非常重要的一环是驱动的调试。

对于Windebug结合虚拟机的双机驱动调试,其配置还是小有点麻烦的。

虽然原先自己配置的时候,都成功了,而且也进行了很多的开发和调试。

但某一天再来设置这些东西的时候,却发现出了问题,甚至去网上找的一些资料也没有用。

现在把自己调试驱动时的切身体会写下来,一方面自己以后也可以看看,也给广大初入门的朋友做以参考。

一、调试环境的安装(1)安装虚拟机(VM)及Windows XP系统(2)安装WinDebug二、配置调试环境(1)在WinDebug的快捷方式上添加:-k com:port=\\.\pipe\com_1,baud=115200,pipe。

例如我的主机上Windebug快捷方式设置以后如下:"C:\Program Files\Debugging Toolsfor Windows (x86)\windbg.exe" -k com:port=\\.\pipe\com_1,baud=115200,pipe (2)在虚拟机中,添加一个串行端口点击"Edit virtual machine settings",添加一个Serial Port,选择"Output to named pipe",然后下一步第一框里保持默认的""第二框里选"This end is the server."第三框里选"The other end is an application."选中"Connect at power on"然后点击"Finish然后在新窗口中选中"Yield CPU on poll"。

Windows 内核驱动调试环境搭建及调试步骤

Windows 内核驱动调试环境搭建及调试步骤本文,系09年笔记记录整理,当时只有大概的步骤,最近又搭建环境,顺道比较详细的整理一下,以供自己备查。

较之前的笔记,只是DDK和VMWARE的版本增高了,基本步骤还是大差不差。

注意:如果是初次搭建环境,请大概浏览完全篇后,再参照本文搭建环境。

一、工具描述主机:XP sp3虚拟机:vmware9.0 +XP sp3WinDBGDDK:6.1.6001.18002.081017-1400_wdksp-WDK18002SP_EN_DVD.iso注:主机:hostOS虚拟机:guestOS代码系《windows驱动开发技术详解》二、具体步骤guestOS设置:添加串口:VM->settings->hardware->add选择 serial设置如下图所示:修改guestOS的boot.ini文件在文件最末行添加如下内容:multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional Debug" /fastdetect /debugport=com2 /baudrate=115200 debugport=com2,要根据你虚拟出来的串口号来设置。

本人电脑里设置的是COM2,如上图所示。

注意:1、boot.ini 文件在C:根目录下,修改booti.in文件时,需要设置文件夹选项,详见下图的标注。

2、波特率进入系统(虚拟机),修改串口的波特率为115200,默认建立的时,波特率是9600。

电脑右键->属性->硬件->属性管理,在弹出的框框里找到COM2修改即可。

虚拟机(guestOS)上的配置基本完成。

hostOS配置:安装DDK版本:6.1.6001.18002.081017-1400_wdksp-WDK18002SP_EN_DVD.iso,在微软网站可以下载到。

kmdf 驱动开发实例

kmdf 驱动开发实例驱动开发是通过编写内核模块来与操作系统进行交互的一种技术。

而在Windows操作系统中,驱动开发的一种常见框架是Kernel-Mode Driver Framework(KMDf)。

本篇文章将以KMDf驱动开发实例为主题,逐步解释该实例的步骤和过程。

第一步:准备环境和工具在进行KMDf驱动开发之前,首先需要准备好相应的环境和工具。

这包括一台运行Windows的计算机、安装好Windows Driver Kit(WDK)和Visual Studio等开发工具。

第二步:创建驱动项目打开Visual Studio,选择新建项目(New Project),在模板(Templates)中找到"Kernel Mode Driver (KMDF)",然后填写项目名称和所需的目标Windows版本等信息。

这样就创建了一个KMDf驱动项目。

第三步:配置驱动项目在创建驱动项目后,需要对其进行配置。

这包括设置编译选项、指定目标平台、选择所需的驱动框架版本等。

配置完成后,可以开始编写驱动代码。

第四步:编写驱动代码在KMDf驱动项目中,主要的代码文件是驱动的入口点(DriverEntry),该函数在驱动加载时被调用。

在该函数中,可以进行一些初始化操作,如注册驱动、创建设备对象、为设备对象添加I/O回调函数等。

接下来,可以根据实际需求,编写其他的驱动逻辑代码。

例如,可以添加设备控制代码、I/O处理代码、定时器代码等。

这些代码将在驱动运行时被调用,以实现相应的功能。

第五步:编译和生成驱动在编写完驱动代码后,可以进行编译和生成驱动。

在Visual Studio中,选择生成解决方案(Build Solution),这将会将源代码编译成二进制文件。

生成的驱动文件会放置在指定的输出目录中。

第六步:安装和加载驱动生成驱动文件后,需要将其安装到操作系统中并加载。

在Windows中,可以使用DevCon等命令行工具来完成这一步骤。

Windows调试工具入门-7(驱动程序的源码调试)


Current Irp 00000000 RefCount 0 Type 00000022 Flags 000000c0
Dacl e10361f4 DevExt 00000000 DevObjExt 821380e8
ExtensionFlags (0000000000)
Device queue is not busy.
我们的测试程序只处理了 IRP_MJ_READ 和 IRP_MJ_DEVICE_CONTROL 两个请求。来试着 调试一下。
接着上面中断下来的调试会话,首先用 bp SrcDbgKnlDrv!DispatchRead 命令和 bp SrcDbgKnlDrv!DispatchIoCtrl 命令在程序的两个 Dispatch 例程上下断。F5 运行起来。在目标 机打开 SrcDbgKnlApp 程序点击 Open,会打开一个 SrcDbgKnlDrv.sys 驱动设备的句柄。这时 中断目标机,使用!devhandles 扩展命令就能看到有用的信息了:
如果我们的设备有附加到某个设备栈上的话,可以用!devstack 扩展命令显示设备栈的 信息。
kd> !devstack 82138030
!DevObj !DrvObj
!DevExt ObjectName
> 82138030 \Driver\SrcDbgKnlDrv00000000 SrcDbgKnlDrv
kd> !devhandles 82138030
Checking handle table for process 0x823b97c0 Handle table at e1002000 with 241 Entries in use 省略掉一部分……
Checking handle table for process 0x82164da0 Handle table at e1137000 with 34 Entries in use PROCESS 82164da0 SessionId: 0 Cid: 05e4 Peb: 7ffd6000 ParentCid: 05d0

Win7内核调试

1. 使用 bochs+vmware+windbg 分析调试 windows 7 内核 用 google 可以搜出很多“如何使用 windbg 调试 windows 内核的”的教程。

基本都差不多 我根据搜出的教程,再总结一下将自己实验过程写出来。

★ 我的 vmware 版本是: 6.0.4 build-93057 ★ windbg 版本是:6.11.0001.402 AMD64 ★ bochs 版本是:2.4.2 ★ 目标 windows 7 版本是:windows 7 ultimate x64 中文版 ------------------------------------------------------------------------------------------------------使用 vmware + windbg 就可以调试 windows 内核了,但是我喜欢还开上 bochs ,使用 bochs 很方便灵活。

vmware 里的 guest OS 作为被调试对象,Host OS 里使用 windbg 作为调试者。

guest OS 和 Host OS 通过 serial port 以 named pipe 方式作为联线。

一、在我的 vmware 上装上了最新的 windows 7 x64 中文旗舰版 bochs 也装上了同样的 windows 7 x64 中文旗舰版。

1、vmware 的设置 打开相应 vmware 虚拟机上的 “Virtaul Machine Settings”---> “Hardware”选项中 ----> 点击 “Add” 添加一个串口设备 Seiall Port ----> “Next” ----> 在 Serial Port 里选中“Output to named pipe” ----> “next” ----> “Finish” 最后,回到 “Virtual Machine Settings”页面时,在“I/O Mode” 里选中“Yield CPU on poll” 这样 vmware 的设置就好了。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档