首页
社区
课程
招聘
[原创]VS2012 ddk驱动编译与虚拟机联机调试设置(已更新)
发表于: 2013-3-18 13:12 66499

[原创]VS2012 ddk驱动编译与虚拟机联机调试设置(已更新)

2013-3-18 13:12
66499
一.安装Windows Driver Kit 8
1首先在计算机上安装VS2012 (12很容易安装,安装步骤略),然后到官网上下载Windows Driver Kit 8 下载地址:
http://msdn.microsoft.com/zh-cn/windows/hardware/hh852362/

下载完毕点击 进行安装。安装模式有两种,一种是在线直接安装,一种是下载安装包到本地,之后再进行安装 (如果网速够快建议直接在线安装。下载安装包安装,会多一步操作,由于刚开始不知道那一步操作,运行2012报一个错误,也无法进行调试设置,所以搞得我头大了好几天!!!)
1.  在线安装,直接默认路径即可,安装完应该没有问题的,本人没试过。
2.  说下下载安装包安装吧:下载完全部文件307M,打开文件夹点击其中的 文件安装,一路OK,最后点击finish完成安装。安装完别急着打开2012,再次点 这次选择在线安装,过程中会有两个选项,一个yes...,一个no,我选了yes,具体什么意思,不清楚,嘿嘿。然后next,进度条很快读完。到此Windows Driver Kit 8就已经安装成功了,这时打开2012,会发现新建项目中多了一些Driver项目,菜单栏上也多出了一个菜单选项DRIVER。
二 驱动项目与虚拟机com串口联机调设置
  怎样在2012下直接生成DDK驱动项目我目前还没搞出来,不过可以通过2012把我们写的驱动加载转换成2012可以运行的项目
  就让我们用最简单的Hello级DDK驱动演示下吧,写好Hello.c  makefile和sources文件。
然后运行2012
 
选择 文件打开Convert Sources/Dirs...
找到驱动所在的文件夹,选中sources文件 

这时2012就会对我们的驱动项目进行自动转换了,转换完成后还会弹出对话框询问你是否查看有关转换细节的记录,这里随意。

然后在上边工具栏中

 
选中驱动程序所要运行的系统环境,可惜,不支持XP系统平台!!!
按F7快捷键编译连接即可生成我们想要的.sys文件了。另编译Vista以上版本系统平台驱动文件时makefile文件是可有可无的,没有此文件编译器会自动为我们加上相关定义!(Starting with the Windows Driver Kit (WDK) for Windows Vista, it is no longer required for the Makefile file to be in every project. By default, the Build utility includes the Makefile.def if the Makefile file is not found in the project. Any custom tasks that are required in a project should be moved to Makefile.inc as appropriate.)
 

驱动文件生成完成,现在开始进行虚拟机连接设置:

点击菜单选项 DRIVERTestConfigure Computers
 
点击“Add New Computer”

Computer name:中输入你真实的计算机的名字(不是虚拟机中计算机的名字)
下边三个选项选择最后一项”Manually configure debuggers and...”,手动配置调试

按上图配置即可,Connection Type选为Serial (串口)
(波特率)Baud Rate 115200 
(管道)Pipe勾选
(重连接)Reconnect勾选
(管道名)Pipe name  \\.\pipe\com_1

这几个选项根据你虚拟机设置来设置
最后点击完成。

打开虚拟机进入系统后(调试模式)(按我以前的步骤是先在虚拟机中运行驱动,然后附加下断点,会导致2012卡死掉,后来摸索发现在没有加载驱动之前就让2012把系统断一下,这样就连接成功了!驱动运行之前设置断点也会成功!)

再在vs2012中选择菜单栏中的  工具附加到进程
 

传输:Windows Kernel Mode Debugger
限定符:就是我们添加的计算机名


点击附加 2012会自动进入调试状态,
此时显示Waiting to reconnect...;

 把虚拟机断下,这时在源代码中就可以下断点了!完成断点设置输入g命令或F5,让虚拟机走起。当你运行虚拟机中驱动程序到相应代码位置就是会被2012断下。(经过这几天摸索,2012不用关闭重新打开也是可以地!)
 

把我们生成的hello.sys

文件放到虚拟机中,用INSTDRV工具安装启动
 

 
 
 
 
在2012中驱动项目的符号文件是不用特殊指定的,编译器会自动找到符号文件所在位置。

系统符号我知道的其中一个方法是用命令的形式来加载或下载符号文件
如果系统中没有单独安装符号文件,在Debugger Immediate Windows窗口中输入命令
.sympath srv*c:\MyServerSymbols*
*c:\MyServerSymbols*之间的路径就是你要保存的符号文件的路径

如果你已经下载并单独安装了符号文件可以用如下形式的命令来指定:
.sympath c:\MyRegularSymbols 回车后显示
 
我们再   .reaload一下(重新加载符号文件)

哈哈,这里输入命令还有智能提示哦!

部分符号文件没有找到也属于正常情况,指定目录下没有这些驱动的符号文件!可以指定到官方网站去下载符号文件
.sympath srv*c:\MyServerSymbols*[url]http://msdl.microsoft.com/download/symbols" target="_blank">http://msdl.microsoft.com/download/symbols


*c:\MyServerSymbols*之间的路径就是你要保存的符号文件的路径

如果你已经下载并单独安装了符号文件可以用如下形式的命令来指定:
.sympath c:\MyRegularSymbols 回车后显示
 
我们再   .reaload一下(重新加载符号文件)

哈哈,这里输入命令还有智能提示哦!

部分符号文件没有找到也属于正常情况,指定目录下没有这些驱动的符号文件!可以指定到官方网站去下载符号文件
.sympath srv*c:\MyServerSymbols*[url]http://msdl.microsoft.com/download/symbols


以上设置均参考自:Debugging Help.    (WDK8安装后会有相关文档)

      目前我电脑的配置是I5-3210M,内存2G自己又加了一根4G,显卡GT630M1G显存!宏基的一款E1-471G。淘宝上买3270,自己又换了个二手64G固态硬盘用来做系统盘。总共加起也就3600左右吧!试验了下,用固态比直接用机械硬盘速度真是要快很多!!!  笔记本64位Win7;虚拟机32位Win7分配了一处理器,1G内存; 用2012调表示没压力 CPU利用率36%,内存2.7G使用中,1.1G可用

[课程]Linux pwn 探索篇!

上传的附件:
收藏
免费 6
支持
分享
最新回复 (60)
雪    币: 289
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
谢谢楼主辛苦整理,菜鸟谢过
2013-3-18 13:38
0
雪    币: 107
活跃值: (326)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
蛮好的........................
2013-3-18 14:34
0
雪    币: 79
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
谢谢楼主,先留名再看
2013-3-19 14:18
0
雪    币: 3836
活跃值: (4142)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
好贴啊。。。。。。。。。。
2013-3-20 11:14
0
雪    币: 1644
活跃值: (53)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
感谢分享,学习。
2013-3-20 13:13
0
雪    币: 106
活跃值: (554)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
感谢啊。呵呵
2013-3-20 13:54
0
雪    币: 22
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
好贴,好好看看.
2013-3-20 16:09
0
雪    币: 93908
活跃值: (200199)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
9
Thanks for share.
2013-3-20 19:23
0
雪    币: 74
活跃值: (703)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
感谢分享 mark
2013-3-20 20:18
0
雪    币: 213
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
微软把windbg调试功能集成到VS2012中了?
2013-3-20 22:05
0
雪    币: 297
活跃值: (120)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
12
这种巨无霸类型的IDE,我是没机会用啦,2010我开一个虚拟机调试就卡,2008我开3,4个都没事。2012... ,无法想象会庞大到什么程度。
2013-3-21 00:30
0
雪    币: 34
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
VS2012实在集成太巨无霸了,开起来机器明显慢了许多。
不过:在2012中驱动项目的符号文件是不用特殊指定的,编译器会自动找到符号文件所在位置。
这个好像还是方便点。
2013-3-21 09:14
0
雪    币: 297
活跃值: (120)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
14
用批处理启动windbg,符号路径写在命令行参数里,根本无需启动后设置符号路径,现在唯一一点无法和2012比的是windbg读取IDE里在源文件设置的断点,我正在研究。
2013-3-21 09:31
0
雪    币: 199
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
撸过。。。。。
2013-3-21 10:51
0
雪    币: 47
活跃值: (25)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
16
嗯,是阿,微软已经把Windbg调试功能集成到vs2012中了,不过只能编译调试vista及以上版本的系统,不支持XP了!
2013-3-21 11:06
0
雪    币: 47
活跃值: (25)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
17
嗯,经过这几天摸索发现sources文件中的  TARGETPATH=...  这条语句也可以不用添加了,编译器会自动创建目标目录。

    用2012观察变量也比WinDbg方便多了,选中鼠标一拖过去就可以啦 !
2013-3-21 11:10
0
雪    币: 47
活跃值: (25)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
18
现在电脑配置越来越高,还是没问题地!
2013-3-21 11:13
0
雪    币: 297
活跃值: (120)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
19
Windbg各种强大的命令都支持嘛?比较经典的wt系列命令,内存搜索命令,如果是真的,我得去升级硬件啦
2013-3-21 11:24
0
雪    币: 47
活跃值: (25)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
20
嗯,所有命令都是支持的!
我初学,对这些命令还不熟悉

我输入wt 2012是这样显示地(目前驱动断在DriverUnload函数中)
kd> wt
0 instructions were executed in 1 events (0 from other threads)

Function Name                               Invocations MinInst MaxInst AvgInst

nt!IopLoadUnloadDriver+0x92:
84013dba 53                      push    ebx
kd> wt
0 instructions were executed in 1 events (0 from other threads)

Function Name                               Invocations MinInst MaxInst AvgInst

nt!IopLoadUnloadDriver+0x93:
84013dbb 897e28                  mov     dword ptr [esi+28h],edi
2013-3-25 12:41
0
雪    币: 52
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
刚开始看驱动的撸过! 虽然有2012这个巨无霸。。。不过还在用vc6 写,感觉更轻巧 = =!!
2013-3-25 12:52
0
雪    币: 709
活跃值: (2420)
能力值: ( LV12,RANK:1010 )
在线值:
发帖
回帖
粉丝
22
不错,装个2012试试~~
2013-3-25 22:21
0
雪    币: 962
活跃值: (1681)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
被调试方是win8 vs2012还能通过网络调试(无线网络不行)
2013-3-25 22:44
0
雪    币: 142
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
微软会把人玩死的.我机器总不能跟着他的VS升级吧.用08挺好的.比VC6好用,比2010快,msdn更是比2010好到哪里去了.
至于2012,真的用不起了
2013-3-28 19:16
0
雪    币: 66
活跃值: (49)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
25
正在向VS2012开发进军,感谢楼主
2013-4-25 11:22
0
游客
登录 | 注册 方可回帖
返回
//