双机调试环境搭建

0x00 WinDbg安装及符号配置

WinDbg安装

官方版

首先可以从微软官方下载WDK,WDK会自带WinDbg调试器。微软WDK官方下载链接:https://docs.microsoft.com/zh-cn/windows-hardware/drivers/download-the-wdk。下载完之后一路默认下一步即可,如图:

image-20200325224210154

微软商城版

上面下载的是WDK自带的调试器,其实在微软应用商店也是可以下载到WinDbg Preview版本的,只需要打开商城搜索WinDbg Preview,下载便是,并且这个版本的界面会更加舒适些。如图:

image-20200325224824570

配置符号路径

按上面的步奏安装即可,安装完之后便需要配置==符号路径==。

第一步,添加WinDbg的路径到主Path环境变量中,将WinDbg的主路径C:\Program Files (x86)\Windows Kits\10\Debuggers,添加进环境变量Path中,如图:

image-20200325230023064

第二步,新建一个环境变量名为_NT_SYMBOL_PATH,并设置其值为:

1
SRV*C:\Symbol*http://msdl.microsoft.com/download/symbols

其中路径<C:Symbol>可随意设置,看你想把下载到的符号放在那里。如图:

image-20200325230549052

弄完上面两步,符号路径就配置好了,附加一下计算器查看一下效果。附加上计算器后,在WinDbg最上处便会显示配置好的符号路径,如图:

image-20200325231049910

加载需要的模块符号

由于微软的符号链接服务器 http://msdl.microsoft.com/download/symbols被墙了,因此要从微软下载符号文件时,需要开代理。

命令LD

然后可以通过命令lm查看当前加载的模块以及加载的符号文件,如图:

image-20200325231619454

如若想在添加某个模块的符号文件,可使用命令ld <Moudle>来加载,例如加载Calcuator模块,如图:

image-20200325231834557

symchk.exe命令行下载

找到WinDbg的目录下,打开CMD输入

1
2
3
4
symchk [/r] [/q] [Input options] <Filename> [/s <SymbolPath>] [options]
symchk.exe -v <MoudleName>
symchk.exe -v <MoudleName> -s <SymbolPath>
例如:symchk.exe -v kernel32.dll -s –s srv*<Path>* https://msdl.microsoft.com/download/symbols

要下载如图:

image-20200325234012586

0x01 VirtualKD安装配置

从VirtualKD官网https://sysprogs.com/legacy/virtualkd/,进行下载(只支持VM15.5以下版本,VM15.5以上的可以使用`VirtualKD-redux`后面有介绍)。下载后解压即可,如图:

image-20200325234341801

然后将解压后的target文件夹,拖入虚拟机中,如图:

image-20200325234624826

然后在虚拟机中运行vminstall.exe,来安装VirtualKD。安装完会提示重启,直接重启就好。

image-20200326082651300

在重启之前,在本机上运行vmmon.exe(vmmon.exe调试32位虚拟机,vmmon64.exe调试64位虚拟机)。然后在配置WinDbg的路径,选中windbg的路径即可,如图:

image-20200326083222305

补充WinDbg调试器版本选择:

1.×86-based Host Computer

在x86处理器平台上,即使调试的目标操作系统是x64版本的,也应该使用x86版本的WinDhg。

2.x64-based Host Computer

在x64处理器平台上,需要按如下规则来选择版本。

  • 在分析Dump文件时(不管是用户模式Dump,还是内核模式Dump),如果Dump文件是在Windows XP及更新版本的操作系统上生成的,那么x86或x64版本的WinDbg均可使用;如果Dump文件是在Windows2000或更早版本的操作系统上生成的,就只能使用x86版本的WinDbg了。
  • 在进行双机实时调试时,如果目标系统是Windows XP及更新版本的操作系统,那么×86或x64版本的WinDbg均可使用,WinDbg会自动适应;如果目标系统是Windows2000或更早版本的操作系统,就只能使用x86版本的WinDhg进行调试了。
  • 在进行用户态实时调试时,如果目标程序是原生64位程序,则只能使用x64版本的WinDbg进行调试;如果目标程序是32位程序,那么既可以使用×86版本,也可以使用x64版本,但因为x86版本只能调试32位代码,所以与在x86平台上调试32位程序没有区别;如果使用x64版本,可以额外调试WOW64部分的代码,这对研究WOW64机制非常有用。不过,除了研究WOW64机制,在其他情况下还是应该直接根据目标程序的类型选择相应的WinDbg版本。

然后等虚拟机重启起来之后,在进入系统之前选择如图选项:

image-20200326083439997

就能实现用WinDbg+VirtualKD进行双击调试了,如图:

image-20200326083741102

注:由于VirtualKD不再维护了,因此对于VM15.5以后的版本不再适用,这里可以适用大神编写的VirtualKD-Redux版,连接为:https://github.com/4d61726b/VirtualKD-Redux。由于是开源的因此在选择suffix(开机启动项)时,需要F8禁用强制签名,便可正常使用。

win10 virtual KD 配置

近期工作需要,需要双机调试WIN10虚拟机,在调试时发现virtualKD怎么都安装不上,查了相关资料后才解决,这里简单说明记录一下。

首先打开虚拟机的设置,选择选项中的固件类型,将UEFI的启用安全引导选项关闭,如图:

image-20200617160551014

然后在开机,装virtualKD就可以进行双机调试了。