首页
论坛
专栏
课程

[原创]在exsi上同时使用windbg和vs双虚拟机调试内核和用户态的2种方法

2019-6-14 22:55 2555

[原创]在exsi上同时使用windbg和vs双虚拟机调试内核和用户态的2种方法

2019-6-14 22:55
2555

环境介绍

先介绍一下我的调试环境,物理机win10上安装vs2013,调试端内核计算机(win7x64)和被调试端机(win7x64,ip:10.120.1.128)都在exsi上,3台主机都在同意网段

配置方法

在被调试端内核计算机,编辑配置->添加串行端口

启动msconfig->引导->高级选项

在调试端内核计算机->添加串行端口

然后运行windbg->KernelDebug

成功连上调试

第一种方法

接下来在vs目录找到Remote Debugger文件夹复制到被调试端计算机,启动里面的msvsmon.exe

 


选择工具->选项,如图配置

在vs项目代码开始处加入以下这段,确保被调试程序启动后挂起,等待输入

int ipt = 0;
scanf("%d", &ipt);


在物理机vs中选择菜单,调试->附加到进程->查找

然后选择在调试端计算机,如果无法找到目标,请先确保关闭防火墙并启用windows网络发现

 


选择被调试程序进程点击附加

在被调试端计算机程序待用户输入后,vs成功触发断点

此时vs用于调试用户态程序和windbg调试内核态,读者是不是觉得内核研究调试环境方便了许多

第二种方法:

使用vs自带的调试引擎有个严重问题,在内核态下断点或者其他操作后vs的调试连接会因为超时丢失,直接退出调试,很不方便,现在用WindbgForVS引擎wdk插件在vs中调试,没有这个问题
安装wdk8.1下载地址链接:

https://pan.baidu.com/s/1AOr_y8tlzPgSJTXW05aEfw 
提取码:663d

下载这个版本的windbg链接,其实就是wdk8.1自带版本,装了wdk8.1就不需要了:

链接:https://pan.baidu.com/s/1Nd2w5phaMHbakWludQY6Eg 
提取码:izvf

在被调试端内核计算机,启动以下命令,我使用的调试端口是8456,也可以指定其他的

"C:\Program Files (x86)\Windows Kits\8.1\Debuggers\x64\dbgsrv.exe" -t tcp:port=8456,IcfEnable

在物理机vs中选择菜单,调试->附加到进程->选择windows user mode debugger->查找


点击add new computer

输入被调试端内核计算机ip地址

在usermode一栏选择tcp端口号和dbgsrv端口号一致,点击下一步
,
注意被调试机安装的windbg版本必须和物理机一致,版本号6.3.9600.16384,位于

C:\Program Files (x86)\Windows Kits\8.1\Debuggers\x64>

不是这个路径的windbg

C:\Program Files\Debugging Tools for Windows (x64)

如果版本号不一致会出现如下错误

正确配置后,会出现被调试端内核计算机进程列表,点击附加即可,

在被调试端计算机程序待用户输入后,vs成功触发断点

右下角有windbg窗口可以输入windbg命令,读者如果觉得超时时间还不够,可以在选项卡钟配置超时时间,如图:

这样也实现了在物理机vs下用wdk的windbg调试插件调试用户态程序,同时用windbg在调试计算机调试被调试计算机的内核态程序,支持的超时时间更长,解决了原来vs自带的调试引擎在内核态下断点后会连接丢失问题,同时也支持vmware本地虚拟机模式,方法相同,请读者自行尝试
调试端内核计算机和物理机win10可以为同一台机器没有影响,调试端内核计算机windbg版本没有要求
笔者推荐这种方法,性能和效率都有保证



[公告]安全服务和外包项目请将项目需求发到看雪企服平台:https://qifu.kanxue.com

最后于 4天前 被王cb编辑 ,原因:
最新回复 (7)
binlmmhc 2019-6-15 10:56
2
0
图都挂完了
王cb 5 2019-6-15 21:26
3
0
现在图片有了
petersonhz 2019-6-15 21:35
4
0
楼主的esxi哪个版本的?
王cb 5 2019-6-15 21:42
5
0
6.7
pureGavin 2019-6-17 21:44
6
0
mark,楼主辛苦了
仙果 19 2019-6-18 18:23
7
0
为什么要用exsi来做 内核调试啊
给楼主的思路点赞
王cb 5 2019-6-19 11:02
8
1
物理机装不了那么多虚拟机,所以反正exsi上
游客
登录 | 注册 方可回帖
返回