一、从windbgpreview下载
windbgpreview是微软官方推出的一款调试工具,可以用于调试Windows系统和应用程序,其界面友好,功能强大。它可以管理运行的进程,监视线程,跟踪系统内核函数的执行情况,诊断内存泄漏和损坏等问题。 windbgpreview可以从Windows Store下载,也可以从官方网站 https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk 和 https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/debugger-download-tools 下载。下载后,安装即可使用。
二、windbgpreview怎么用
首先,需要以管理员权限启动windbgpreview。启动后,菜单栏上的File可以用于打开要调试的应用程序或数据文件。如果要调试进程,可以按下F6或使用Attach to Process菜单项。如果要调试内核,需要在启动时使用-c
参数,并以管理员身份启动。在windbgpreview中,还可以使用以下命令列出进程或线程、查看调试目标状态、设置断点、跟踪堆栈、查看内存内容等:
?或help:列出可用命令帮助
~或~*:列出所有线程信息
~tid:列出指定tid的线程信息
.dp /m:列出内存分页信息
.dump /ma /u /f filename:将调试目标的内存转储到指定文件
!analyze:分析调试目标崩溃的原因
三、windbgpreview堆栈溢出调试
当程序在执行过程中发生错误,windbgpreview可以跟踪堆栈,并查找是否发生堆栈溢出。下面是一个简单的堆栈溢出漏洞实例:
#include <stdio.h>
#include <string.h>
void vuln(char *str)
{
char buf[100];
strcpy(buf, str);
}
void main(int argc, char **argv)
{
vuln(argv[1]);
printf("Over!\n");
}
上述代码定义了一个函数vuln,其中调用了strcpy函数将输入的字符串拷贝至buf缓冲区,存在缓冲区溢出漏洞。如果在调用vuln函数时传入长度超过100的字符串,那么溢出就会发生。 要在windbgpreview中调试该漏洞,需要将代码编译为可执行文件,并在命令行传入恶意输入。在windbgpreview中,首先需要输入以下命令:
windbg -g -Q
然后,使用File/Open Executable菜单项打开编译好的可执行文件。 输入以下命令以启动程序:
g
接着,输入以下命令设置断点:
bp vuln
然后,输入以下命令以执行在断点处停止的程序:
g AAAABBBBCCCCDDDD...
其中,AAAABBBBCCCCDDDD
是要传入的恶意输入。程序会在调用vuln函数时停止。输入k
命令查看当前的函数堆栈:
k
堆栈信息中,可以看到vuln函数的返回地址被覆盖,即发生了堆栈溢出。
四、windbgpreview为何打不开
如果在打开windbgpreview时发生错误,可以尝试以下步骤解决问题:
- 检查是否安装了Visual Studio,Visual Studio是使用windbgpreview的前提条件之一。
- 检查是否安装了对应版本的Windows软件开发工具包,在使用windbgpreview时需要使用对应版本的工具包。
- 尝试重新安装windbgpreview。
- 查找并修复可能导致问题的Windows更新或驱动程序。
五、windbgpreview为何没有lanalyze
在windbgpreview中,与LANalyze类似的功能是在Detours库中实现的。Detours库是微软官方推出的一款钩子技术库,可以对任意函数进行拦截、重定向、跟踪等操作,包含了LANalyze类似的堆追踪功能。要在windbgpreview中使用Detours库,可以按照以下步骤操作:
- 下载Detours库,将其解压缩到合适的位置。
- 在windbgpreview中输入以下命令:
.load <path>\detours.dll
其中,<path>
是Detours库所在目录的路径。
3. 输入以下命令,使windbgpreview能够加载Detours库的符号:
.symfix+ <path>\detours.pdb
其中,<path>
是Detours库pdb文件所在目录的路径。
4. 使用Detours库调试想要拦截的函数。
六、windbgpreview调试内核设置选取
要在windbgpreview中调试内核,需要进行以下设置:
- 打开目标Windows机器的调试功能,具体方式与版本相关。
- 在启动Windows时选取启动项:启用调试选取(DEBUG)。
- 连接windbgpreview与目标Windows机器,可以使用串口、网络等方式连接。
- 启动windbgpreview,菜单栏上的File/Open Kernel Dump可以用于打开内核转储文件,选择正确的机器架构,打开文件。
- 使用当地符号服务器,可以输入命令
.symfix
或.symfix+
避免符号加载的问题。 - 在非常低的内核级别,可以使用
dp
(Display Page)命令查看内存页的内容。 总之,windbgpreview作为一款强大的调试工具,可以在多种场景下使用。通过学习windbgpreview的使用方法,可以提高Windows系统和应用程序的调试效率。