今天写一个驱动的hello world。

打印一下基本的信息吧就是,创建一个空项目,写一个驱动入口和一个卸载例程。

这里给一下用到的工具,其中 VirtualKD-Redux 是github上下载的,用于关闭windows驱动签名验证的,这里建议直接再虚拟机里搞就好了。

code

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include<ntifs.h>
#define kprintf(format, ...) DbgPrintEx(DPFLTR_IHVDRIVER_ID, DPFLTR_ERROR_LEVEL, format, ##__VA_ARGS__)


void DriverUnload(PDRIVER_OBJECT pDriver) {
kprintf(("Line %d:xia0ji233: unload success\n"),__LINE__);
}
NTSTATUS DriverEntry(
_In_ PDRIVER_OBJECT DriverObject, _In_ PUNICODE_STRING RegistryPath
){
DriverObject->DriverUnload = DriverUnload;
kprintf(("RegistryPath = %S\n"), RegistryPath->Buffer);
kprintf(("Line %d:xia0ji233: work success\n"), __LINE__);
return 0;
}

这里我没有使用默认的 Kdprint 宏,而是用Q师傅给我的这个定义的宏去打印输出的,因为不知道为啥我的环境打印不出来这些语句。

然后使用驱动工具加载和卸载。

也是能成功地捕获到调试信息了,这算迈出第一步了吧。