使用 VMware + win10 + VirtualKD + windbg 从零搭建双机内核调试环境

原总结debug调试kernel debugwindbgbcdeditvirtualKD转储双机调试双机内核调试

前言

当我们没有两台物理机时,又想做双机内核调试怎么办?当然是装虚拟机啦!本文总结了使用 VMware15.5 + win10 + virtualkd + windbg 搭建双机内核调试环境。

安装环境

  1. VMware 版本: 15.5 pro 。可以到 VMware 官网下载地址 下载最新版本。
  2. 我的物理主机系统:win10 1909。其它版本的 windows 也可以,VMware15.5 最低支持 win7 系统。
  3. 虚拟机系统镜像:win10 1809 x64。其它版本的系统也可以。我们可以在 msdn i tell you 上面找到各个版本的 windows 官方镜像。除了系统镜像,还包括其它很多工具的官方镜像,比如 vs, office 等。

  4. windbg版本:10.0.18362.1,其它版本的也可以。windbg 包含在 windows sdk 中。可以到微软官网 SDK 下载地址 下载。如果只需要 windbg,推荐下载 .exe 形式的安装包。在安装的时候,可以只勾选 Debugging Tools for Windows

只下载 debugging tools

安装 VMware & 安装 win10

下载 VMware 到本地后,直接双击即可安装,一路点击 下一步 即可。需要注意以下两点:

  1. 尽量下载最新版本的 VMware,早期版本的 VMwarewin10 1909 上可能有兼容性问题。
  2. 安装完成后,最好重启系统!

安装好 VMware 后,就可以安装系统镜像了。通过 文件(F) -> 新建虚拟机(N) 即可开始 新建虚拟机向导。一般我们通过 安装程序光盘映像文件(iso)(M) 的形式选择下载好的系统镜像安装,然后一路 下一步(N) 即可。

选择系统镜像

安装完成后,可以启动了。但是可能遇到一些问题,我做了简单的总结。

可能遇到的问题

  • 提示 Intel VT-x 被禁用。

根据提示,在 BIOS 里开启 Intel VT-x

重启进入BIOS ,打开 Intel Virutal Technology,按 F10 保存退出。

在BIOS中开启VT-x

  • 提示 VMware WorkstationDevice/Credential Guard 不兼容。

incompatible-with-credential-guard

强烈建议先检查下 Hyper-V 是否开启,如果开启了,请先关闭 Hyper-V

关闭 Hyper-V

如果关闭 Hyper-V 后还是出现上图的提示。请参考 禁用 Device/Credential Guard 的微软官方文档

点击工具下载链接,下载相应的脚本文件到本地。如果我们的系统不是英文系统,按照提示改变脚本里的

*$OSArch = $(gwmi win32_operatingsystem).OSArchitecture$OSArch = $((gwmi win32_operatingsystem).OSArchitecture).tolower()

然后以管理员权限执行 DG_Readiness_Tool_v3.6.ps1 -Disable -AutoReboot 即可。

-Disable 表示关闭。

-AutoReboot 表示自动重启系统,根据自己的需要指定。

脚本执行结果

重启后,会有提示是否要真的禁用此特性。按 Windows键或者 F3 键禁用,按Esc 跳过。

禁用 Device/Credential Guard

顺利安装完系统过后,我们就可以开始进行双机内核调试了。

通过虚拟串口方式连接

如果我们希望通过虚拟串口的形式连接,我们在系统设置前,一定要注意: VMware 中的打印机会占用默认的 串口 1。如果不移除打印机,我们新建的串口会是 串口 2(这样,我们在被调试系统中设置的时候,需要设定debugport 的值为 2)。

新建串口2 并设置参数

当然,我们可以移除打印机,然后新建串口,这样新建的串口就是默认的 串口 1 了。

移除 VMware 中的打印机

我以保留打印机,使用 COM2 为例,录制了一份屏幕录像。这里对整个操作过程做一个简要描述:

  • 新建串口,因为打印机占用了 串口 1,所以我们新建的串口是 串口 2
  • 设置 pipe 参数,我设置的是 \\.\pipe\bcn_com,其他参数默认即可。
  • 启动虚拟机系统,设置调试参数,命令如下:
    bcdedit /debug on
    bcdedit /dbgsettings serial debugport:1 baudrate:115200
  • 以管理员权限运行 windbg,通过界面连接。

  • 重启虚拟机系统,发现连接不上。因为我们新建的串口是 串口 2,而我们在虚拟机系统里设置的是 串口 1
  • 重启虚拟机系统,设置调试参数,命令如下:
    bcdedit /debug on
    bcdedit /dbgsettings serial debugport:2 baudrate:115200
  • 重启虚拟机系统,这次成功连接上了。
  • 最后,还演示了 windbg 通过命令行直接连接。命令行如下:
    windbg.exe -k com:pipe,port=\\.\pipe\bcn_com,reconnect

通过 Pipe 进行双机内核调试

通过 VirtualKD

经常做双机内核调试的小伙伴儿一定对 VirtualKD 不陌生。可以大大提高双机内核调试的速度,可谓神器。

几年前,用 VirtualKD 搭建双机内核调试环境很简单。没想到这次居然各种连接不上。通过 google 搜索关键字 VMware15 VirtualKD,在 VirtualKD github issues看雪论坛『求助问答』的帖子 看到已经有小伙伴儿遇到这个问题了。应该是 VirtualKD3.0VMware15.5 不兼容。真是个坏消息,不过也有好消息 —— 已经有大佬解决了这个问题,github 上对应的仓库是 VirtualKD-Redux

在查找解决方案的过程,发现有人遇到另外一个问题。在虚拟机里执行 bcdedit /debug on 失败,提示值被保护,如下图:

摘自 github 帖子

可以在 虚拟机设置高级 选项里,禁用 安全引导

disable-security-boot

VirutalKD-Redux 的使用方法和 VirutalKD 一样,简要步骤如下:

  1. 在调试主机端运行 vmmon64.exe,点击 Debugger Path... 选择调试器路径。
  2. target64 拷贝到虚拟机中(如果是 32 位系统,请拷贝 target32)。
  3. 在虚拟机中执行 target64 目录下的 vminstall.exe 安装 VirtualKD-Redux
  4. 重启虚拟机系统,选择新建立的 Entry,并且按 F8 选择禁用强制签名。
  5. 如果顺利,调试器会自动弹出并连接到被调试系统(因为 Start debugger automatically 默认是勾选状态)。
  6. 如果调试器没自动弹出,或者我们意外的关闭了调试器,我们可以通过点击 Run Debugger 按钮,手动启动调试器。

整个过程,非常简单。具体过程录屏如下:

virtualkd-kernel-debug

windbg 符号路径设置

当我们执行一些命令的时候(比如,!thread),需要符号文件的帮助。我们可以通过 _NT_SYMBOL_PATH 环境变量设置符号路径。如果还没有设置,可以在 windbg 中执行 .symfix path/to/symbol_cache 自动设置微软符号服务器为上游符号服务器。当需要符号时,windbg 会先到 path/to/symbol_cache 中查找符号,如果找不到,会继续到微软符号服务器上查找,如果在微软符号服务器上找到了,会缓存到 path/to/symbol_cache,然后从 path/to/symbol_cache 加载符号。

温馨提示:

  • .symfix 命令会删除 windbg 中现有的符号路径设置。
  • 目前,好像需要ke xue上网才能成功连接微软符号服务器。

总结

  • 使用 VMware 前,最好禁用 Hyper-V,禁用 Security Boot,开启 Intel VT-x
  • 一定要注意,VMware 默认带的打印机会占用 串口 1,如果不删除打印机就新建串口的话,新建的串口是 串口 2
  • VirtualKD3.0 还不支持 VMware15.5,我们可以使用 VirtualKD-Redux
  • 执行 .symfix path/to/symbol_cache 使用微软符号服务器。

参考资料

VirtualKD official install tutorial

"VMware Workstation and Device/Credential Guard are not compatible" error in VMware Workstation on Windows 10 host (2146361)

Setting up kernel debugging (VirtualKD)

VMware+Windgb+Win7内核驱动调试

原文地址:https://www.cnblogs.com/bianchengnan/p/12527189.html

时间: 2024-10-07 15:09:57

使用 VMware + win10 + VirtualKD + windbg 从零搭建双机内核调试环境的相关文章

通过虚拟机搭建windows内核调试环境

今天我们来记录下通过虚拟机搭建windows内核调试环境. 这里是官方文档. 1.在虚拟机设置中为目标计算机创建命名管道 2.在目标计算机中开启调试 3.在windbg中输入目标计算机(虚拟机)的地址信息 4.在windbg菜单中点击[Debug|Break]开始内核调试.

Eclipse for php + Xdebug搭建PHP的调试环境

Xdebug安装教程 下载Xdebug 首先我们需要下载Xdebug,务必根据安装的PHP版本,选择合适的Xdebug版本,由于我是在Windows环境下安装PHP的,所以选择下载Windows版本的Xdebug2.1.0(5.3 VC6 (32 bit)),下载下来的Xdebug文件为php_xdebug-2.1.0-5.3-vc6.dll,这是由于Xdebug是作为PHP模块的形式被安装配置与使用的. Xdebug安装提示:如果你不清楚安装的PHP版本,你可以通过phpinfo()函数参看,

通过模拟器和ida搭建Android动态调试环境的问题

这几天在学Android的native层逆向.在按照教程用ida搭建动态调试环境时,第一步是把android_server 放到手机里执行,但是在手机里可以,在genymotion模拟器上就提示 not executable :32-bit ELF file ,百度谷歌都没找到答案,然后试了试Android studio自带的模拟器 ,ABI选了x86  x86_64都不行,最后发现需要选择arm的ABI才可以....但是运行比较卡,因为我的电脑是x86的. 我就发现了这一个解决办法,不知道是不

MacOS内核调试环境搭建

http://ddeville.me/2015/08/using-the-vmware-fusion-gdb-stub-for-kernel-debugging-with-lldb http://ddeville.me/2015/08/kernel-debugging-with-lldb-and-vmware-fusion https://blog.csdn.net/qq_32400847/article/details/79297177 https://media.defcon.org/DEF

从零搭建vue+express开发环境

https://blog.csdn.net/u012414590/article/details/79043757 前端模板渲染vue,后端express提供接口服务,合并成一个项目.同样是前后端分离,互不影响. 项目发布只是把vue经过webpack打包当做express的静态文件夹发布 将VUE 项目的所有文件放入 public 或者修改  app.use(express.static(path.resolve(__dirname, '../dist'))); 原文地址:https://ww

基于Groovy搭建Ngrinder脚本调试环境

介绍 最近公司搭建了一套压力测试平台,引用的是开源的项目 Ngrinder,做了二次开发,在脚本管理方面,去掉官方的SVN,引用的是Git,其他就是做了熔断处理等. 对技术一向充满热情的我,必须先来拥抱下传说中的压测平台. 一.开发脚本环境配置项: 安装JDK1.7+,Git,Maven 二.新建一个maven项目 三.创建一个groovy脚本TestRunner.groovy,添加以下内容 这个脚本写的就是,向服务端发送Json 格式请求,比较简单,未涉及到上下文参数化,混合场景配置比例,方法

linux内核调试环境搭建

版本linux4.17 ubuntu18.04先给系统至少80G内存1.编译内核先配置文件make mrpropermake menuconfig我这里需要的依赖有 sudo apt install make cmake gcc g++ clang sudo apt-get install libncurses5-dev libncursesw5-dev sudo apt install ncurses-dev sudo apt-get install bison sudo apt-get in

从零开始搭建Go语言开发环境

一步一步,从零搭建Go语言开发环境. 安装Go语言及搭建Go语言开发环境 下载 下载地址 Go官网下载地址:https://golang.org/dl/ Go官方镜像站(推荐):https://golang.google.cn/dl/ 版本的选择 Windows平台和Mac平台推荐下载可执行文件版,Linux平台下载压缩文件版. 安装 Windows安装 此安装实例以 64位Win10系统安装 Go1.11.5可执行文件版本为例. 将上一步选好的安装包下载到本地. 双击下载好的文件 Linux下

hbase本地调试环境搭建

1,前言 想要深入的了解hbase,看hbase源码是必须的.以下描述了搭建hbase本地调试环境的经历 2,安装步骤 2.1,启动hbase 1,安装java和IDE IntelliJ,下载源码等.步骤这里不再描述. 2,从HMaster以standalone模式启动hbase,配置如下: 主要是程序参数start,VM options(-Dlog4j.configuration=file:/Users/aaa/work/dev/hbase/hbase-1.1.3/conf/log4j.pro