Windbg内核调试之一: Vista Boot Config设置
2018-03-15
1131
简介:
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 DebugPointDebugPoint为选项名称, 名字可以自己定义. 然后复制得到的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.5Copyright (c) Microsoft Corporation. All rights reserved.Opened \\.\pipe\com_1Waiting to reconnect...Connected to Windows Vista 6000 x86 compatible target, ptr64 FALSEKernel Debugger connection established.Symbol search path is: symsrv*symsrv.dll*F:\symbols*http://msdl.microsoft.com/download/symbolsExecutable search path is: Windows Vista Kernel Version 6000 MP (1 procs) Free x86 compatibleBuilt by: 6000.16386.x86fre.vista_rtm.061101-2205Kernel base = 0x81800000 PsLoadedModuleList = 0x81911db0System Uptime: not availableBreak 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模式不同).
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。