windows安全:内核驱动-开发环境搭建

274 阅读2分钟

内核驱动开发环境搭建

1. 安装wdk

打开安装的visual studi ,选择更改.在单个包,输入driver.

image.png

2. 在虚拟机中安装操作系统.

在虚拟机中安装对应的操作系统.然后添加串口设备.使用命名管道\\.\pipe\com_1

image.png

3. 虚拟机中系统配置

  1. 设置调试端口,创建新的启动项

设置debug的串口,管理员运行cmd

bcdedit  /dbgsettings serial baudrate:115200 debugport:1
  1. 复制当前启动项,创建一个新的启动项:DebugMode,执行结果在后续命令需要用到.
bcdedit  /copy {current} /d DebugMode
  1. 从上面命令行获取结果.替换掉如下命令的{ID}.
bcdedit  /displayorder {current} {ID}
bcdedit  /debug {ID} ON
  1. 重启虚拟机,选择DebugMode 启动项

  2. 关闭强制签名检测,管理员运行cmd

bcdedit.exe -set loadoptions DDISABLE_INTEGRITY_CHECKS
bcdedit /set testsigning on
  • 第一条命令,是禁用未签名驱动检查.容许加载未签名的驱动.
  • 第二条命令是开启测试模式,会在屏幕界面上显示测试.方便区分.
  1. 设置调试信息过滤
REGEDIT4

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Debug Print Filter]
"DEFAULT":REG_DWORD:0xFFFFFFFF
  1. 下载DebugView 拷贝到虚拟机中

下载地址: learn.microsoft.com/zh-cn/sysin…

  1. 下载驱动安装程序,拷贝到虚拟机中

下载地址: 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

image.png

启动windbg,显示常用的这几个窗口

image.png

保存工作空间:

image.png

编写一个简单的驱动

创建一个内核项目

image.png

关闭缓解库

image.png

关闭将警告视为错误

image.png

修改inf文件,class为System,ClassGuid为{4d36e97d-e325-11ce-bfc1-08002be10318}

image.png

编写测试代码

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监控.

image.png

这里可以看到我们打印的输出信息:

image.png