原文发表于百度空间,2009-01-08
==========================================================================

这一篇是主要是关于Vmware部分的设置,其实参考JIURL那篇很经典的《借助VMware实现单机使用WinDbg》就可以了.不过那篇文章里面有个小错误(不知道是原作者不小心,还是别人转载的时候错了),后面的波特率应为115200而非11520
我就再来写一下吧,内容基本雷同,稍微精简一些

Vmware的相关设置

1.编辑Vmware设置,添加一个串口设备.
首先我们要添加一个串口设备.打开你的虚拟机,选择“编辑虚拟机设置”

然后"Add...(添加)"->"Serial Port(串口)"->"Output to named pipe(输出到命名管道)"一路Next
名称就用默认的"",这个其实对应于你的串口名称com1,用别的名字当然也可以,不过后面要对应
第二行选择"This end is the server"
第三行选择"The other end is an application"
同时把下面的"Connect at power on(打开电源时连接)"
请见下图:

好了,这回串口设备有了.下面进行相关设置

2.设置串口波特率
启动虚拟机中的OS,进入系统,打开设备管理器选项,这时就看到刚才添加的串口com1了
双击com1设备进入属性设置,在"端口设置"选项卡中选择"每秒位数"也就是波特率为115200
(据说Windbg可以自动适应波特率,没尝试过,因此还是设置一下吧)

3.修改boot.ini(如果是Vista以上就不是修改boot.ini了,需要别的修改方式,请看第5点)
这一步准确讲是添加DEBUG启动模式,对于Win2003及以前的系统,可以通过修改boot.ini来实现
对于Vista,Server2008,Win7等就得用bcdedit来编辑启动设置了
有需要的可以搜索"Windbg内核调试之一 Vista Boot Config设置"来查找那篇文章
我的GuestOS是WinXP Sp2,所以采用boot.ini的方法
打开C盘,把隐藏文件显示出来,去掉boot.ini的只读属性,双击打开来
通常你只会看到一个启动选项,我们复制一个,在后面加上 /debug /debugport=com1 /baudrate=115200 
注意修改时间timeout,不要为0或太短,否则你连选择的机会都没有~~
贴个图,不会就照图中来,红线框住的部分是新加的
如果你不愿新增加,直接编辑原来那个也可以,不过还是推荐新加一个好~

然后你可以往虚拟机中放一些测试驱动常用的工具,比如DebugView,InstDrv等等
这时关于虚拟机部分就设置完成了,可以把当前状态保存一个快照,以后如果哪个驱动把系统搞崩溃再也起不来了,恢复一下就OK了

4.建立双机调试快捷方式
在桌面建立一个Windbg的快捷方式命名为“双机调试”,然后编辑其属性,把“目标”后面加上
-k com:port=\\.\pipe\com_1,baud=115200,pipe 
比如我的电脑上,完整的应该是这个样子:
"C:\Program Files\Debugging Tools for Windows (x86)\windbg.exe" -k com:port=\\.\pipe\com_1,baud=115200,pipe

好了,一切设置就绪,来体验一下~~
重新启动虚拟机中的系统,在启动菜单时选择有“启用调试程序”的那一项,回车确认

然后把虚拟机最小化,回到桌面双击刚才建好的“双机调试”快捷方式,如果没有什么意外的话,稍等一下就会看到:
Connected to Windows XP 2600 x86 compatible target,ptr64 FALSE
Kernel Debugger connection established.
这就表示已经连接成功了,接下来会显示一下符号路径,内核基址等信息。
此时按下Ctrl+Break,就会中断下来,命令输入窗口变为可用状态,可以输入各种命令了~~
如果需要进入系统之后才加载驱动的话,可以等系统启动完毕后再中断,输入断点命令.这取决于你驱动的加载时机

5.Vista以上系统的设置方式

Vista以上系统的启动项管理不再使用boot.ini,而是使用BCD数据库,它的操作方式可以使用系统自带的bcdedit命令。

打开一个管理员权限的cmd窗口,依次执行以下命令:

bcdedit /copy {current} /d Win7Debug 

该命令复制当前启动项并命令为Win7Debug,复制成功后,会提示新启动项的GUID

bcdedit /debug {29999672-9a09-11e7-bb18-b881985ed70f} on

该命令中的第2个参数就是新启动项的GUID,该命令将开启新启动项的调试功能

bcdedit /dbgsettings

该命令显示当前的调试设置,如果发现调试功能工作不正常,可以使用以下命令恢复到默认:

bcdedit /dbgsettings serial baudrate:115200 debugport:1


这一节到这儿,下一节Windbg的基本使用,马上就来...

【旧文章搬运】Windbg+Vmware驱动调试入门(二)---Vmware及GuestOS的设置的更多相关文章

  1. 【旧文章搬运】Windbg+Vmware驱动调试入门(一)---Windbg的设置

    原文发表于百度空间,2009-01-08========================================================================== Windb ...

  2. 【旧文章搬运】Windbg+Vmware驱动调试入门(四)---VirtualKD内核调试加速工具

    原文发表于百度空间,2009-01-09========================================================================== 今天又想起 ...

  3. 【旧文章搬运】Windbg+Vmware驱动调试入门(三)---Windbg基本调试入门

    原文发表于百度空间,2009-01-09========================================================================== 这一节的内 ...

  4. 【旧文章搬运】Windows句柄分配算法(二)

    原文发表于百度空间,2009-04-04========================================================================== 在创建句柄 ...

  5. 【旧文章搬运】加载PE文件时IAT的填充时机

    原文发表于百度空间,2011-06-20========================================================================== 大致过程如 ...

  6. 【旧文章搬运】360安全卫士HookPort.sys完美逆向

    原文发表于百度空间,2009-11-08 这是第一次逆向一个企业级安全产品的核心代码,并完美替换原驱动正常工作============================================= ...

  7. 【旧文章搬运】关于windbg搜索符号文件的一点说明

    原文发表于百度空间,2010-09-07========================================================================== 本来只是打 ...

  8. 【旧文章搬运】无Device的驱动如何通信

    原文发表于百度空间,2009-07-14========================================================================== 标准的驱动 ...

  9. 【旧文章搬运】Windows内核常见数据结构(驱动相关)

    原文发表于百度空间,2008-7-24========================================================================== 这些是驱动中 ...

随机推荐

  1. spring启动时加载字典表数据放入map

    import java.util.HashMap; import java.util.List; import org.springframework.beans.factory.annotation ...

  2. CentOS 6.x安装多GCC版本号,cmake的安装与使用

    操作系统:CentOS release 6.5 (Final) 当前gcc版本号:build=x86_64-redhat-linux                           Thread ...

  3. [原创]安装Ubuntu Server 14.04后

    安装后许多软件都没有,需要进行安装. 官方指南:https://help.ubuntu.com/lts/serverguide/index.html 1.修改网络配置文件 用ifconfig查看本地网 ...

  4. sql server 关于表中只增标识问题 C# 实现自动化打开和关闭可执行文件(或 关闭停止与系统交互的可执行文件) ajaxfileupload插件上传图片功能,用MVC和aspx做后台各写了一个案例 将小写阿拉伯数字转换成大写的汉字, C# WinForm 中英文实现, 国际化实现的简单方法 ASP.NET Core 2 学习笔记(六)ASP.NET Core 2 学习笔记(三)

    sql server 关于表中只增标识问题   由于我们系统时间用的过长,数据量大,设计是采用自增ID 我们插入数据的时候把ID也写进去,我们可以采用 关闭和开启自增标识 没有关闭的时候 ,提示一下错 ...

  5. JS 计算2个日期相差的天数

    <span style="font-size:18px;">function getDays(strDateStart,strDateEnd){ var strSepa ...

  6. Object类及其常用方法简介

    https://www.cnblogs.com/wxywxy/p/6740277.html Object类是一个特殊的类,是所有类的父类,如果一个类没有用extends明确指出继承于某个类,那么它默认 ...

  7. C++结构体中使用函数与类中使用函数小结

    #include <iostream>#include <string.h>using namespace std;struct stud//学生信息结构体{    char ...

  8. setUp() and setUpBeforeClass()

    The @BeforeClass and @AfterClass annotated methods will be run exactly once during your test run - a ...

  9. Comparing Random and Sequential Access in Disk and Memory

    The Pathologies of Big Data - ACM Queue https://queue.acm.org/detail.cfm?id=1563874

  10. RabbitMQ Connector

    https://ci.apache.org/projects/flink/flink-docs-master/dev/connectors/rabbitmq.html RabbitMQ Source ...