1.调试会话的建立:
1.1 :用户层调试会话:
1.1.1:直接创建进程调试:
打开Windbg, File->Open Executable, 选择一个进程进行调试。
1.1.2:附加到已经运行的进程:
打开Windbg, File->File-Attatch to a Process,选择一个已经运行的程序进行调试。
附加调试又包括:
1.1.2.1: 侵入式的附加:接管正在运行的进程,可以进行调试。
1.1.2.2: 非侵入式附加:只是能够读取进程信息,不能接受目标进程的调试事件。
注意:一个程序只能被一个调试器调试,如果已经有一个调试器在调试目标程序的时候,我们只能够用调试器来非侵入式的调试这个程序,非侵入式其实只能够查看目标程序的信息而已,并不能够调试目标程序。
1.2:内核层调试会话:
内核调试情况中,我们无法使用自己的系统调试自己的操作系统,因为如果调试时候设置断点,系统暂停,无法恢复,所以需要使用虚拟机搭建双机调试环境,当然也可以非侵入式的调试本地操作系统,就是不接管本地操作系统的调试,仅仅查看本系统内核中的信息,这种方式叫做本地内核调试。
使用虚拟机进行双机内核调试有多种连接方式,其中我们使用VirtualKD工具来复制创建双击调试环境。
以下为双机内核调试的建立过程:
需要的软件及工具:Windbg,windows虚拟机,VirtualKD
准备工作:
一个安装了windws操作系统的虚拟机
需要一个windbg,要求与被调试机器(windows虚拟机)的位数一样
virtualKD一个用于搭建双击调试的工具
第一步:在物理机中双击下载的Virtual KD.exe,进行抽取得到下面文件内容:
将target文件夹拷贝到虚拟机(windows虚拟机)中,
第二部:在虚拟机中安装vminstall:
虚拟机中的tartget文件夹打开如下:
点击vminstall进行安装,
第三步:在物理机中将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:
第四步:连接到虚拟机:
启动虚拟机中的windows系统,注意启动时选择windows 7[VirtualKD]选项启动:
第五步:设置windbg的调试符号:
此时虚拟机中的windows系统运行暂停,在外部主机中输入命令:g
虚拟机中系统继续运行。
以下内容为内核调试会话建立的另一种模式:本地内核调试(非侵入式)
本地内核调试不是真正的调试,只是查看相关信息而已,故而调试相关的命令都是受限制的。
必要条件:
注意:最好在虚拟机环境中进行此实验:
Windows操作系统以调试模式打开
需要以管理员的方式运行windbg
操作系统与windbg版本需要对应
步骤:
在安装了windbg的虚拟机操作系统中,重启操作系统(虚拟机实验环境的操作系统是window7),一直按F8,
进入启动模式选项,选择调试模式启动,启动后以管理员权限运行windbg:
运行windbg后,点击File->Kernel Debug…
让后点击Local,点击确定:
稍等片刻:出现如下信息表示本地调试会话建立成功