之前一直想搞搞驱动调试,一直没有条件,最近终于实现了
驱动开发环境搭建:
vs2019 community :https://visualstudio.microsoft.com/zh-hans/downloads/
wdk:https://go.microsoft.com/fwlink/?linkid=2085767
wdk安装后会开启Spectre,可以通过下载Spectre缓解库解决(不过我直接禁了)
编译时可能会有警告视为错误之类的问题,按情况调属性就行
测试用的代码:
#include <ntddk.h>
VOID DriverUnload(PDRIVER_OBJECT pDriverObject)
{
DbgPrint("Goodbye world!
");
}
NTSTATUS DriverEntry(
IN PDRIVER_OBJECT pDriverObject,
IN PUNICODE_STRING pRegistryPath)
{
DbgPrint("Hello, world
");
pDriverObject->DriverUnload = DriverUnload;
return STATUS_SUCCESS;
}
Windbg调试:
主机:Windows10 虚拟机:VMware 15.5pro
目标系统:Windows7
在虚拟机上添加一个串行端口,命名为 \.pipecom_1(移除了打印机)
目标系统设置调试环境
CMD(管理员)
> bcdedit /dbgsettings serial baudrate:115200 debugport:1
> bcdedit /copy {current} /d DebugEntry
{此为系统给出}
> bcdedit /displayorder {current} {此为系统给出}
> bcdedit /debug {此为系统给出}
以调试模式重启Windows7
在windbg属性目标后添加 -k com:port=\.pipecom_1,baud=115200,pipe,以管理员启动
用instdrv加载启动驱动
设置Symbol File Path
srv*C:Symbols*http://msdl.microsoft.com/download/symbols;(国内已墙,自己想办法)
C:UsersMysource
eposKMDF Driver2Debugi386(编译后的.pdb位置)
输入命令.reload/i
输入命令lm查看,看到下面这条表示成功:
KMDFDriver2 (private pdb symbols) c:usersmysource eposkmdf driver2debugi386KMDFDriver2.pdb
设置Source File Path > 打开源码 在光标处f9设置断点,f5运行后会在断点停下,之后f10单步即可