环境介绍
先介绍一下我的调试环境,物理机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自动部署项目