Loading... > 详细记录对基于Xen虚拟化的Windows系统双机内核调试的配置步骤 --- ## 基本原理 大致的流程是:虚拟串口——TCP——虚拟串口 使用windbg的串口调试功能。由于调试主机没有串口,采用创建虚拟串口的方式,使用sockpipe工具,创建管道,如此windbg能顺利接上这个管道,并将管道映射到本机的一个端口上,供目标主机链接。然后在目标主机上设置相应的参数,在虚拟机上也创建一个虚拟串口,同时通过TCP链接到调试主机的端口上,创建整条调试通路。最后只要设置虚拟机的调试参数就可以了。 下面讲详细对依赖环境及工具进行说明。 ## 调试主机(OS:Windows 10) - 关闭防火墙,允许ICMP和TCP报文通过,开放端口 - 关闭可能造成网络不稳定影响的安全软件 - 安装windbg,最好安装WDK/SDK,并配置符号路径 - 安装Xen开发人员的sockpipe工具 使用sockpipe创建一个管道,指定管道名称和映射的端口号。 ```sh sockpipe.exe <pipename> <port> ``` ![Snipaste_2019-07-24_16-47-08](./assets/Snipaste_2019-07-24_16-47-08.png) 这样调试线路的一端就可以了,打开windbg,设置串口调试并指定管道名称和波特率(波特率必须和下文中的波特率匹配)并等待虚拟机连上即可。 ![Snipaste_2019-07-24_16-53-11](./assets/Snipaste_2019-07-24_16-53-11.png) ## 目标主机(OS:基于Xen的Ubuntu18) - 关闭防火墙,配置iptables,允许ICMP和TCP报文通过,开放端口 - 关闭selinux,防止干扰 设置虚拟机的配置文件,最重要的是serial的值。 ```sh serial=['tcp:<ip>:<port>, nodelay'] ``` 其中的ip是调试主机的ip,端口号对应了sockpipe创建的端口号,同时指定参数是nodelay。 ![Snipaste_2019-07-24_16-57-50](./assets/Snipaste_2019-07-24_16-57-50.png) 同时配合netstat和top等命令查看是否连接上对应的ip地址,否则虚拟机将无法启动。 ## 被调试虚拟机(OS:Windows 7 x86 sp0) - 关闭防火墙,允许ICMP和TCP报文通过,开放端口 - 关闭可能造成网络不稳定影响的安全软件 如果上文配置正确,正常启动虚拟机,将在设备管理器中看见新添加的一个串口。 ![Snipaste_2019-07-24_17-08-40](./assets/Snipaste_2019-07-24_17-08-40.png) 这时再通过msconfig配置虚拟机,创建一个新的启动项,同时设置成调试模式,指定串口对应的端口号和波特率。 ![Snipaste_2019-07-24_17-00-29](./assets/Snipaste_2019-07-24_17-00-29.png) 之后再通过bcdedit查看创建是否成功。特别是调试类型、端口和可调试选项,如下图所示。 ![Snipaste_2019-07-24_17-03-20](./assets/Snipaste_2019-07-24_17-03-20.png) 然后重新启动虚拟机,并选择调试模式进入。此时windbg将在Windows启动界面回显,sockpipe也会有回显。 ![Snipaste_2019-07-24_17-11-05](./assets/Snipaste_2019-07-24_17-11-05.png) ## 参考资料 [Windows-HVM-Debugging](https://github.com/OpenXT/openxt/wiki/Windows-HVM-Debugging) [how-to-capture-memory-dump-of-windows](http://vikashkumarroy.blogspot.com/2012/08/how-to-capture-memory-dump-of-windows.html) [DEBUGGING WINDOWS GUESTS ON XENSERVER](https://xenserver.org/partners/developing-products-for-xenserver/18-sdk-development/135-xs-dev-windbg.html) [kernel-debugging-qemu-windbg](https://resources.infosecinstitute.com/kernel-debugging-qemu-windbg/) [xen配置手册](http://xenbits.xen.org/docs/4.2-testing/man/xl.cfg.5.html#SYNOPSIS) [XEN下两台VM调试](https://gist.github.com/nstarke/3c42342942138ee965a8c40054c1dbd7) [微软如何设置内核模式调试](https://docs.microsoft.com/zh-cn/windows-hardware/drivers/debugger/setting-up-kernel-mode-debugging-in-windbg--cdb--or-ntsd) [windows内核调试配置](https://www.cnblogs.com/BiffoLee/archive/2012/02/01/2334089.html) [How to use windbg to debug XEN windows XP domainU under Suse](http://old-list-archives.xenproject.org/archives/html/xen-devel/2009-08/msg00268.html) [kernel-debugging-a-windows-guest-system-from-a-linux-system-setup-not-working](https://stackoverflow.com/questions/32964402/kernel-debugging-a-windows-guest-system-from-a-linux-system-setup-not-working) [Debugging Windows Kernel from Linux](https://stackoverflow.com/questions/12696825/debugging-windows-kernel-from-linux) [windows-kernel-debugging-on-mac-host-using-vmware-fusion](https://reverseengineering.stackexchange.com/questions/2297/windows-kernel-debugging-on-mac-host-using-vmware-fusion) <!--stackedit_data: eyJoaXN0b3J5IjpbMTUwNzA2OTc4MV19 --> ``` ``` Last modification:January 16th, 2021 at 01:10 pm © 允许规范转载 Support 确定不打赏一下支持博主吗 ×Close Appreciate the author Sweeping payments Pay by AliPay