Windbg_02-windbg调试会话的建立

1.调试会话的建立:

1.1 :用户层调试会话:

1.1.1:直接创建进程调试:

打开Windbg, File->Open Executable, 选择一个进程进行调试。
Windbg_02-windbg调试会话的建立

Windbg_02-windbg调试会话的建立

1.1.2:附加到已经运行的进程:

打开Windbg, File->File-Attatch to a Process,选择一个已经运行的程序进行调试。

附加调试又包括:

1.1.2.1: 侵入式的附加:接管正在运行的进程,可以进行调试。

1.1.2.2: 非侵入式附加:只是能够读取进程信息,不能接受目标进程的调试事件。
Windbg_02-windbg调试会话的建立
Windbg_02-windbg调试会话的建立

注意:一个程序只能被一个调试器调试,如果已经有一个调试器在调试目标程序的时候,我们只能够用调试器来非侵入式的调试这个程序,非侵入式其实只能够查看目标程序的信息而已,并不能够调试目标程序。

1.2:内核层调试会话:

内核调试情况中,我们无法使用自己的系统调试自己的操作系统,因为如果调试时候设置断点,系统暂停,无法恢复,所以需要使用虚拟机搭建双机调试环境,当然也可以非侵入式的调试本地操作系统,就是不接管本地操作系统的调试,仅仅查看本系统内核中的信息,这种方式叫做本地内核调试。

使用虚拟机进行双机内核调试有多种连接方式,其中我们使用VirtualKD工具来复制创建双击调试环境。

以下为双机内核调试的建立过程:

需要的软件及工具:Windbg,windows虚拟机,VirtualKD

准备工作:

一个安装了windws操作系统的虚拟机

需要一个windbg,要求与被调试机器(windows虚拟机)的位数一样

virtualKD一个用于搭建双击调试的工具

第一步:在物理机中双击下载的Virtual KD.exe,进行抽取得到下面文件内容:

将target文件夹拷贝到虚拟机(windows虚拟机)中,
Windbg_02-windbg调试会话的建立

第二部:在虚拟机中安装vminstall:

虚拟机中的tartget文件夹打开如下:

点击vminstall进行安装,
Windbg_02-windbg调试会话的建立

第三步:在物理机中将windbg安装目录配置到virtualKD中的vmmon.exe:

在本地主机中,将将windbg安装目录配置到virtualKD中的vmmon.exe

WinDbg的安装目录通常是固定的,比如安装目录如下:

x86:C:\Program Files (x86)\Windows Kits\10\Debuggers\x86\WinDbg.exe

x64C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\WinDbg.exe

点击virtualKD中的vmmon.exe:
Windbg_02-windbg调试会话的建立

第四步:连接到虚拟机:

启动虚拟机中的windows系统,注意启动时选择windows 7[VirtualKD]选项启动:
Windbg_02-windbg调试会话的建立

第五步:设置windbg的调试符号:
Windbg_02-windbg调试会话的建立

Windbg_02-windbg调试会话的建立
Windbg_02-windbg调试会话的建立

此时虚拟机中的windows系统运行暂停,在外部主机中输入命令:g

虚拟机中系统继续运行。

Windbg_02-windbg调试会话的建立

以下内容为内核调试会话建立的另一种模式:本地内核调试(非侵入式)

本地内核调试不是真正的调试,只是查看相关信息而已,故而调试相关的命令都是受限制的。

必要条件:

注意:最好在虚拟机环境中进行此实验:

Windows操作系统以调试模式打开

需要以管理员的方式运行windbg

操作系统与windbg版本需要对应

步骤:

在安装了windbg的虚拟机操作系统中,重启操作系统(虚拟机实验环境的操作系统是window7),一直按F8,

进入启动模式选项,选择调试模式启动,启动后以管理员权限运行windbg:
Windbg_02-windbg调试会话的建立

Windbg_02-windbg调试会话的建立

运行windbg后,点击File->Kernel Debug…
Windbg_02-windbg调试会话的建立

让后点击Local,点击确定:
Windbg_02-windbg调试会话的建立

稍等片刻:出现如下信息表示本地调试会话建立成功
Windbg_02-windbg调试会话的建立