2023驱动保护学习 -- 卸载驱动程序

时间:2022-06-12 00:54:03

一、创建回调函数,卸载驱动的时候会执行里面的操作

void 卸载驱动回调函数(PDRIVER_OBJECT 驱动对象)
{
KdPrint(("nxyn:我被卸载了,驱动编号=%p", 驱动对象));
}

二、在主函数中调用该函数

extern "C" NTSTATUS DriverEntry(_In_ PDRIVER_OBJECT 驱动对象, _In_ PUNICODE_STRING psg)
{

驱动对象->DriverUnload = 卸载驱动回调函数;
KdPrint(("nxyn:第一个驱动程序,驱动编号:%p", 驱动对象));
return 0;
}

三、生成驱动文件,拷贝到虚拟机进行测试

四、在DebugView中设置标识符"nxyn",只查看包含nxyn的输出语句

2023驱动保护学习 -- 卸载驱动程序

五、在Monitor中,导入该驱动程序,点击go,然后点击stop,查看输出效果

2023驱动保护学习 -- 卸载驱动程序

六、在DebugView中会显示,我们要输出的语句,说明驱动加载和卸载都没问题。

2023驱动保护学习 -- 卸载驱动程序

七、程序源码

#include <ntifs.h>


void 卸载驱动回调函数(PDRIVER_OBJECT 驱动对象)
{
KdPrint(("nxyn:我被卸载了,驱动编号=%p", 驱动对象));
}


extern "C" NTSTATUS DriverEntry(_In_ PDRIVER_OBJECT 驱动对象, _In_ PUNICODE_STRING psg)
{

驱动对象->DriverUnload = 卸载驱动回调函数;
KdPrint(("nxyn:第一个驱动程序,驱动编号:%p", 驱动对象));
return 0;
}