加载中…
个人资料
夏之吻
夏之吻
  • 博客等级:
  • 博客积分:0
  • 博客访问:206,292
  • 关注人气:22
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
正文 字体大小:

Windows驱动学习笔记之一:WinDbg+WMware+OS_Win7 配置

(2014-02-28 12:50:27)
标签:

vs2013

windbg

驱动调试

it

分类: Industry#虚拟机

一、安装环境

  1. 主机:Windows 7 SP1 x64
  2. 虚拟机:VMware 9
  3. VMOS: Windows7 SP1 x64
  4. Windbg: Windows Driver Kit 8.1 自带

二、虚拟机配置

  1. 打开VMware 虚拟机上的 “Virtaul Machine Settings“
  2. 为了省事,这里将Printer 删除,为了让新配置的Serial Port 为1(如果不删除Printer,后面配出来的会是SerialPort =2,这还需要在虚拟机中再命令设置)

              

     3.点击下面的ADD 添加一个新端口,请按照图片上的设置

             

            

            

             添加完成后切记Yield CPU on pull要打上勾

            

至此,VMWare就配置完成了。

 

      4.虚拟机中的OS设置

(1)在 bootmgr 中下断点

  在 vista 及后续的 windows 已经取消了 ntldr 模块管理引导,转而以 bootmgr 模块管理引导系统。

  在我的 windows 7中要设定在哪个部分进行调试。

  windws 7 可调试部分有 4 个:bootmgr 模块、winload 模块、WinResume 模块以及 windows 内核模块 Nt 模块

可以在上述的 4 个模块下断点进行调式
(1) 以管理员身份运行“命令提示符”

(2) 在“命令提示符”窗口中,输入以下命令:

bcdedit /set {bootmgr} bootdebug on
bcdedit /set {bootmgr} debugtype serial
bcdedit /set {bootmgr} debugport 1
bcdedit /set {bootmgr} baudrate 115200

 

注意一个细节,bcdedit /set {bootmgr} debugport 1这一行最后的1 对应Serial Port 1,

所以如果是Serial Port 2 则设置为bcdedit /set {bootmgr} debugport 2 否则连不上。

 

bcdedit /set {bootmgr} bootdebug on
bcdedit /set {bootmgr} debugtype serial
bcdedit /set {bootmgr} debugport 1
bcdedit /set {bootmgr} baudrate 115200

在提示命令成功后,这样就在 windows7 中的 bootmgr 模块建立起可调试的机制。
在运行 windows7 时到达 bootmgr 时就停止加载,vmware 中是黑屏,它正等待 serial port 的响应,
运行 windbg 后,windbg 就和 windws 7 中的 bootmgr 建立起联线了

 

下面是我的 windbg 在 bootmgr 模式下断点的响应信息:



Microsoft (R) Windows Debugger Version 6.11.0001.404 X86
Copyright (c) Microsoft Corporation. All rights reserved.

Opened //./pipe/com_1
Waiting to reconnect...
BD: Boot Debugger Initialized
Connected to Windows Boot Debugger 7600 x86 compatible target at (Mon May  9 13:25:27.631 2011 (GMT+8)), ptr64 FALSE
Kernel Debugger connection established.  (Initial Breakpoint requested)
Symbol search path is: SRV*c:/symbols*http://msdl.microsoft.com/download/symbols
Executable search path is:
Windows Boot Debugger Kernel Version 7600 UP Free x86 compatible
Machine Name:
Primary image base = 0x00400000 Loaded module list = 0x00491b80
System Uptime: not available
Break instruction exception - code 80000003 (first chance)
bootmgr!RtlpBreakWithStatusInstruction:
004436bc cc              int     3

;====================================

 

Primary image base = 0x00400000 Loaded module list = 0x00491b80

  bootmgr 被加载到基地址是 0x00400000

bootmgr!RtlpBreakWithStatusInstruction:

  目前处在 bootmgr 模块中

 

查看:

kd> x bootmgr!*
00430724 bootmgr!TpmApiAuthSessCreateOSAP =
0045dc5c bootmgr!CmpGetIndexElementSize =
004689a4 bootmgr!RcConsoleBaudRates =
004356cd bootmgr!OsxmlBrowser::~OsxmlBrowser =
00437683 bootmgr!XslStylesheet::getContents =
0040d032 bootmgr!BlockIoPcatConventionalInt13 =
00420202 bootmgr!BlLogData =
0041cda5 bootmgr!NetClose =
0043bf31 bootmgr!XslTemplate::getContents =
0042ab94 bootmgr!MmTrSelectPageTableMappingAddress =
0041796b bootmgr!FileIoOpen =
......

 

(2)在 winload 模块下断点

同样在“命令提示符”中使用命令

bcdedit /enum

这条命令显示当前可用模块的 GUID


Microsoft Windows [版本 6.1.7600]
版权所有 (c) 2009 Microsoft Corporation。保留所有权利。

C:/Windows/system32>bcdedit /enum

Windows 启动管理器
--------------------
标识符                  {bootmgr}
device                  partition=C:
description             Windows Boot Manager
locale                  zh-CN
inherit                 {globalsettings}
debugtype               Serial
debugport               2
baudrate                115200
bootdebug               Yes
default                 {current}
resumeobject            {8bf63dd6-79ea-11e0-9d42-db726cb22836}
displayorder            {current}
toolsdisplayorder       {memdiag}
timeout                 30

Windows 启动加载器
-------------------
标识符                  {current}
device                  partition=C:
path                    /Windows/system32/winload.exe
description             Windows 7
locale                  zh-CN
inherit                 {bootloadersettings}
recoverysequence        {8bf63dd8-79ea-11e0-9d42-db726cb22836}
recoveryenabled         Yes
osdevice                partition=C:
systemroot              /Windows
resumeobject            {8bf63dd6-79ea-11e0-9d42-db726cb22836}
nx                      OptIn

(3)在内核模块 Nt 模块下断点

         WIN+R 打开运行输入msconfig打开启动配置对话框设置调试,请按照图片设置

        

       

       至此虚拟机中的操作系统也设置好了,重启后生效。

 

   5.将安装好的X:\Windows Kits\8.1\Remote\x64目录下的WDK Test Target Setup x64-x64_en-us(视虚拟机系统位数判断,32位系统请到x32下找相应文件)拷贝到虚拟机中安装。

 

   6.WinDbg设置

        -b -k com:port=//./pipe/com_1,baud=115200,pipe

      为了不用每次都输入参数,给WinDbg建个快捷方式,把参数存里面,以后就不用每次都输入了

     "C:\Program Files (x86)\Windows Kits\8.1\Debuggers\x86\windbg.exe" -b -k com:port=//./pipe/com_1,baud=115200,pipe

     这是我自己的WinDbg的路径后面加上参数的串

 

 

  7.测试WinDbg+VMware是否连接成功

    先打开虚拟机操作系统,然后启动WinDbg,出现下列信息则说明连接成功,此时虚拟机系统会停止(可能是黑屏),WinDbg会在系统启动上自动下int 3,这时按F5或键入g回车,系统即可正常启动

   

 

     至此WinDbg+VMWare+Win7 调试配置就已设置完成。

 

博客来源:http://blog.csdn.net/iceamber2012/article/details/17963649

          http://blog.csdn.net/G_Spider/article/details/6406382

 

0

阅读 评论 收藏 转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有