首页
社区
课程
招聘
[原创]在exsi上同时使用windbg和vs双虚拟机调试内核和用户态的2种方法
发表于: 2019-6-14 22:55 7008

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

王cb 活跃值
11
2019-6-14 22:55
7008

环境介绍

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

配置方法

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

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

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

然后运行windbg->KernelDebug

成功连上调试

第一种方法

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

 


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

vs自动部署项目可以使用这种方法

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

system("pause");


在物理机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版本没有要求,笔者推荐这种方法,性能和效率都有保证
另外说一点,可以使用msvsmon.exe模式部署项目,然后windbg模式附加调试,这样更加方便


[课程]FART 脱壳王!加量不加价!FART作者讲授!

最后于 2020-4-2 15:01 被王cb编辑 ,原因: 添加vs自动部署项目
收藏
免费 4
支持
分享
最新回复 (7)
雪    币: 2107
活跃值: (1429)
能力值: ( LV8,RANK:126 )
在线值:
发帖
回帖
粉丝
2
图都挂完了
2019-6-15 10:56
0
雪    币: 11596
活跃值: (6949)
能力值: ( LV13,RANK:550 )
在线值:
发帖
回帖
粉丝
3
现在图片有了
2019-6-15 21:26
0
雪    币: 2375
活跃值: (433)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
楼主的esxi哪个版本的?
2019-6-15 21:35
0
雪    币: 11596
活跃值: (6949)
能力值: ( LV13,RANK:550 )
在线值:
发帖
回帖
粉丝
5
6.7
2019-6-15 21:42
0
雪    币: 13904
活跃值: (17017)
能力值: ( LV12,RANK:290 )
在线值:
发帖
回帖
粉丝
6
mark,楼主辛苦了
2019-6-17 21:44
0
雪    币: 1491
活跃值: (975)
能力值: (RANK:860 )
在线值:
发帖
回帖
粉丝
7
为什么要用exsi来做 内核调试啊
给楼主的思路点赞
2019-6-18 18:23
0
雪    币: 11596
活跃值: (6949)
能力值: ( LV13,RANK:550 )
在线值:
发帖
回帖
粉丝
8
物理机装不了那么多虚拟机,所以反正exsi上
2019-6-19 11:02
1
游客
登录 | 注册 方可回帖
返回
//