Windbg进行内核调试,需要一些基本的技巧和设置,在这个系列文章中,我将使用Windbg过程中所遇到的一些问题和经验记录下来,算是对Kernel调试的一个总结,同时也是学习Windows系统内核的另一种过程。

很多人说Windbg不如SoftIce好用, 但是我使用过程中还是觉得Windbg能更好的反映系统状态, 而且相比SoftIce, Windbg更稳定(虽然它的部分操作略显复杂), 下面介绍Windbg的Kernel模式调试第一部分: 双机连接设置.

Vista和XP不同, 没有boot.ini文件, 需要用bcdedit进行启动设置。(关于启动数据配置编辑器BCD的具体设置, 参见另一篇文章: (From MS)Vista: 启动配置数据编辑器(BCD))

在administrator权限下, 进入command line模式,  键入bcdedit命令, 会出现以下界面:

然后, 设置端口COM1, baudrate为115200 (除COM1外, 也可以用1394或USB. 1394用起来比COM口快多了, 当然前提是你需要有1394卡及其驱动. 很恶心的是Vista不再支持1394的文件传输协议, 但是用windbg双机调试还是可以的)
命令为:
bcdedit /dbgsettings {serial [baudrate:value][debugport:value] | 1394 [channel:value] | usb }

接着, 我们需要复制一个开机选项, 以进入OS的debug模式
命令为:
bcdedit /copy {current} /d DebugPoint
DebugPoint为选项名称, 名字可以自己定义. 然后复制得到的ID号.

接着增加一个新的选项到引导菜单
bcdedit /displayorder {current} {ID}
这里的{ID}的ID值是刚生成的ID值.

激活DEBUG : bcdedit /debug {ID} ON
这里的{ID} 的ID值还是刚才的ID值.

命令执行成功后, 重新启动机器.

选择DebugPoint登录,开启Windbg

连接成功, 则显示如下:
Microsoft (R) Windows Debugger  Version 6.6.0007.5
Copyright (c) Microsoft Corporation. All rights reserved.

Opened \\.\pipe\com_1
Waiting to reconnect...
Connected to Windows Vista 6000 x86 compatible target, ptr64 FALSE
Kernel Debugger connection established.
Symbol search path is: symsrv*symsrv.dll*F:\symbols*http://msdl.microsoft.com/download/symbols
Executable search path is: 
Windows Vista Kernel Version 6000 MP (1 procs) Free x86 compatible
Built by: 6000.16386.x86fre.vista_rtm.061101-2205
Kernel base = 0x81800000 PsLoadedModuleList = 0x81911db0
System Uptime: not available
Break instruction exception - code 80000003 (first chance)
*******************************************************************************
*                                                                             
*   You are seeing this message because you pressed either                    
*       CTRL+C (if you run kd.exe) or,                                        
*       CTRL+BREAK (if you run WinDBG),                                       
*   on your debugger machine's keyboard.                                      
*                                                                             
*                   THIS IS NOT A BUG OR A SYSTEM CRASH                       
*                                                                             
* If you did not intend to break into the debugger, press the "g" key, then   
* press the "Enter" key now.  This message might immediately reappear.  If it 
* does, press "g" and "Enter" again.                                          
*                                                                             
*******************************************************************************
nt!RtlpBreakWithStatusInstruction:
81881760 cc              int     3

总结: 虽然利用VMware虚拟机能更方便的设置双机的调试环境, 而且这种模拟环境也是大多数人使用的(方便), 但是如果有双机条件的话,  还是希望大家能够使用两台机器, 因为用虚拟机进行Kernel调试, 真不是一般的慢! 基本就等于死机. 即时你的主机内存2G, 分给VMware1G, 还是会相当卡(Kerenl模式与User模式不同).

Windbg内核调试之一: Vista Boot Config设置相关推荐

  1. Windbg内核调试之四: Dump文件分析

    Dump 文件分析很大程度上就是分析蓝屏产生的原因.这种系统级的错误算是Windows提示错误中比较严重的一种(更严重的还有启动黑屏等硬件或软件兼容性错误等等).说它是比较严重,是因为毕竟Window ...

  2. 使用WinDbg内核调试

    WINDOWS调试工具很强大,但是学习使用它们并不容易.特别对于驱动开发者使用的WinDbg和KD这两个内核调试器(CDB和NTSD是用户态调试器). 本教程的目标是给予一个已经有其他调试工具使用经验 ...

  3. 软件调试实战:windbg 内核调试 (lkd kd )

    http://advdbg.org/books/swdbg/samples.aspx 一,本地内核调试( lkd ): 管理员权限启动windbg,ctrl + k --> Local 二,查看 ...

  4. Windbg 内核调试,寄存器窗口没有数据

    之前在使用Windbg进行内核调试的时候,想要查看寄存器的值,结果发现打开寄存器窗口之后,不显示数据,但是执行r命令可以正常查看寄存器的值,网上搜索了一下相关资料,记录一下. 环境:Windbg.ex ...

  5. 使用Windbg内核调试连接调试用户态程序的方法

    1. 中断目标计算机: 2. kd>!process 0 0 3. 找到要调试的程序对应进程: 4. kd>.process /i TARGETPROCESSADDRESS 5. kd&g ...

  6. Windows Server 2008 R2 如何启动内核调试

    相信windbg大家都不陌生,其提供了一个异常强大的功能就是kernel dbg, 在不同版本的windows 系统中启动kernel dbg的方式不禁相同,为了方便大家使用kernel dbg,本文 ...

  7. windbg+VM 设置内核调试环境(双机调试)

    虚拟机是XP情况: 启动项添加调试启动,并设置波特率为115200 具体操作可在boot.ini中添加如下代码: multi(0)disk(0)rdisk(0)partition(1)\WINDOWS ...

  8. Windbg+Vmware/VirutalBox内核调试加速工具VirtualKD

    今天又想起来VirtualKD这个东西,试用了一下,真是爽坏了,可能我火星了~~ 很久以前就知道小喂有个VmKd工具,使用Vmware的后门指令直接拷贝数据来代替模拟串口,能大大提高调试时的数据传输速 ...

  9. 用windbg内核模式调试用户态程序

    使用内核调试会话也可以执行一些用户态调试任务,比如向位于用户态的模块设置断点.但这样做与使用用户态调试器有什么不同呢?我们就以向NTDLL.dll模块的ZwTerminateProcess函数(Stu ...

最新文章

  1. 如何使用Web Audio API听到“ Yanny”和“ Laurel”的声音
  2. Ubuntu使用QCustomPlot简介
  3. 独家 | Bamboolib:你所见过的最有用的Python库之一(附链接)
  4. Python itertools 操作迭代对象
  5. 微信平台开发者:桥梁上的运动员
  6. 计算机领域专业术语中英文对照(时常更新)
  7. 阿里云 mysql 表锁死_解决阿里云数据库MySQL实例空间满自动锁问题
  8. [PyTorch] torchvision库及其常用的函数
  9. python中链表是什么_python 单链表的实现
  10. HTML5学习笔记简明版(6):新增属性(1)
  11. 让驰骋工作流程引擎 ccbpm使用自定义表单来实现自己的业务逻辑.
  12. win10右键反应慢解决方法介绍【解决方法】
  13. 计算机考csp200分啥水平,信息学竞赛CSP诞生多位满分选手,小码王学员包揽多个组别省市第一...
  14. 生日悖论与Hash函数的攻击
  15. 计算机电源 安装方向,怎么安装计算机电源
  16. 常见而又容易被中小企业忽视的六个网络安全漏洞
  17. 拒绝白嫖,著名开源项目作者暴力删库,导致账号被封!
  18. 【计算机硬件系统设计(华科)——现代时序 CPU(Logisim 实现)】
  19. 饥荒服务器怎么显示帧数,进化游戏卡顿优化方法 附最高帧数120帧设置方法
  20. Hex、bin、axf、elf格式文件小结

热门文章

  1. 中国建筑设计行业投资发展形势及前景规模调查报告2022-2028年版
  2. vc通过COM方式调用CertEnroll
  3. 腾讯阿里谋定联姻农业 智慧农业对话中国农民丰收节交易会
  4. 多元化谋定美国农业巨头-丰收节贸易会:四大粮商曲折历程
  5. 二分查找-数组实现(小trick)
  6. MySql中的运算符
  7. React项目开发中的数据管理
  8. FileOutStream
  9. ibatis中isEquals、isNotEmpty的用法
  10. java 的23种设计模式