【旧文章搬运】Windbg+Vmware驱动调试入门(二)---Vmware及GuestOS的设置
原文发表于百度空间,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的设置的更多相关文章
- 【旧文章搬运】Windbg+Vmware驱动调试入门(一)---Windbg的设置
原文发表于百度空间,2009-01-08========================================================================== Windb ...
- 【旧文章搬运】Windbg+Vmware驱动调试入门(四)---VirtualKD内核调试加速工具
原文发表于百度空间,2009-01-09========================================================================== 今天又想起 ...
- 【旧文章搬运】Windbg+Vmware驱动调试入门(三)---Windbg基本调试入门
原文发表于百度空间,2009-01-09========================================================================== 这一节的内 ...
- 【旧文章搬运】Windows句柄分配算法(二)
原文发表于百度空间,2009-04-04========================================================================== 在创建句柄 ...
- 【旧文章搬运】加载PE文件时IAT的填充时机
原文发表于百度空间,2011-06-20========================================================================== 大致过程如 ...
- 【旧文章搬运】360安全卫士HookPort.sys完美逆向
原文发表于百度空间,2009-11-08 这是第一次逆向一个企业级安全产品的核心代码,并完美替换原驱动正常工作============================================= ...
- 【旧文章搬运】关于windbg搜索符号文件的一点说明
原文发表于百度空间,2010-09-07========================================================================== 本来只是打 ...
- 【旧文章搬运】无Device的驱动如何通信
原文发表于百度空间,2009-07-14========================================================================== 标准的驱动 ...
- 【旧文章搬运】Windows内核常见数据结构(驱动相关)
原文发表于百度空间,2008-7-24========================================================================== 这些是驱动中 ...
随机推荐
- php执行超时(nginx,linux环境)
与下面的参数有关 nginx: fastcgi_connect_timeout fastcgi_read_timeout fastcgi_send_timeout php-fpm:request_te ...
- centos6安装debuginfo
查看内核版本,查找对应的内核rpm文件 [root@localhost ~]#uname -rsp Linux 3.10.0-229.1.2.el7.x86_64 x86_64 去debuginfo. ...
- iOS10你掉坑了吗?
坑1: 系统导航栏上按键消失问题 坑2: canOpenURL 调用返回NO问题 坑3: iOS10 权限崩溃问题 坑4: xib不好用了?别怕看这里! 坑5: command +/注释失效 坑6: ...
- Java 实现 淘宝秒杀 聚划算 自己主动提醒 源代码
说明 本实例可以监控聚划算的抢购button,在聚划算整点聚的时间到达时自己主动弹开页面(URL自定义). 能够自己定义监控持续分钟数,同一时候还能够通过多线程加快刷新速度. 源代码 package ...
- BZOJ 3363 POJ 1985 Cow Marathon 树的直径
题目大意:给出一棵树.求两点间的最长距离. 思路:裸地树的直径.两次BFS,第一次随便找一个点宽搜.然后用上次宽搜时最远的点在宽搜.得到的最长距离就是树的直径. CODE: #include < ...
- PJzhang:python基础入门的7个疗程-two
猫宁!!! 参考链接:易灵微课-21天轻松掌握零基础python入门必修课-售价29元人民币 https://www.liaoxuefeng.com/wiki/1016959663602400 htt ...
- unix && linux
区别和联系 Linux和UNIX的最大的区别是,前者是开发源代码的自由软件,而后者是对源代码实行知识产权保护的传统商业软件.这应该是他们最大的不同,这种不同体现在用户对前者有很高的自主权,而对后者却只 ...
- javascript常用事件及方法
1.获取鼠标坐标,考虑滚动条拖动 var e = event || window.event; var scrollX = document.documentElement.scrollLeft || ...
- Java程序员从笨鸟到菜鸟之(十四)Html基础积累总结(上)
本文来自:曹胜欢博客专栏.转载请注明出处:http://blog.csdn.net/csh624366188 注:由于本文内含有大量html标签,所以在排版上有些困难,所以排版有点难看,请大家见谅 ...
- 推断View是否显示在界面上
我们都知道ViewController有viewWillAppear和viewDidAppear等关于页面生命周期的方法,用来对视图做一些管理,比方页面出现时怎么样,页面消失时怎么样.. 可是对于Vi ...