内核驱动开发环境搭建
1. 安装wdk
打开安装的visual studi ,选择更改.在单个包,输入driver.
2. 在虚拟机中安装操作系统.
在虚拟机中安装对应的操作系统.然后添加串口设备.使用命名管道\\.\pipe\com_1
3. 虚拟机中系统配置
- 设置调试端口,创建新的启动项
设置debug的串口,管理员运行cmd
bcdedit /dbgsettings serial baudrate:115200 debugport:1
- 复制当前启动项,创建一个新的启动项:DebugMode,执行结果在后续命令需要用到.
bcdedit /copy {current} /d DebugMode
- 从上面命令行获取结果.替换掉如下命令的
{ID}.
bcdedit /displayorder {current} {ID}
bcdedit /debug {ID} ON
-
重启虚拟机,选择
DebugMode启动项 -
关闭强制签名检测,管理员运行
cmd
bcdedit.exe -set loadoptions DDISABLE_INTEGRITY_CHECKS
bcdedit /set testsigning on
- 第一条命令,是禁用未签名驱动检查.容许加载未签名的驱动.
- 第二条命令是开启测试模式,会在屏幕界面上显示测试.方便区分.
- 设置调试信息过滤
REGEDIT4
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Debug Print Filter]
"DEFAULT":REG_DWORD:0xFFFFFFFF
- 下载
DebugView拷贝到虚拟机中
下载地址: learn.microsoft.com/zh-cn/sysin…
- 下载驱动安装程序,拷贝到虚拟机中
下载地址: github.com/BeneficialC…
开发端配置
安装完WDK后,在程序找到WinDbg (X64) 发送到桌面快捷方式.
将目标后面添加
-y srv*D:\AppData\symbols(Win1021H2)*http://msdl.microsoft.com/download/symbols -b -k com:port=\\.\pipe\com_1,baud=115200,pipe
完整目标:
"C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\windbg.exe" -y srv*D:\AppData\symbols(Win1021H2)*http://msdl.microsoft.com/download/symbols -b -k com:port=\\.\pipe\com_1,baud=115200,pipe
启动windbg,显示常用的这几个窗口
保存工作空间:
编写一个简单的驱动
创建一个内核项目
关闭缓解库
关闭将警告视为错误
修改inf文件,class为System,ClassGuid为{4d36e97d-e325-11ce-bfc1-08002be10318}
编写测试代码
VOID DriverUnload(_In_ PDRIVER_OBJECT DriverObject) {
KdPrint(("Driver Unloaded\n"));
}
NTSTATUS DriverEntry(_In_ PDRIVER_OBJECT DriverObject, _In_ PUNICODE_STRING RegistryPath) {
DbgPrint("Hello World :viewBase.QuadPart=%x", 1110);
KdPrint(("Driver Loaded\n"));
DriverObject->DriverUnload = DriverUnload;
return STATUS_SUCCESS;
}
编译,生成.sys 文件,放置到虚拟机中,通过驱动加载运行,同时打开dbgview监控.
这里可以看到我们打印的输出信息: