很多ROOTKIT使用IoRegisterShutdownNotification的方式来关机回写自己的文件

对抗这种技术有一些方式:

方法1:HOOK FSD的IRP_MJ_SHUTDOWN例程

在所有的关机回调都执行完毕后,IoShutdownSystem会给所有的DiskFileSystem发送IRP_MJ_SHUTDOWN,以便他们将缓存中的文件flush到磁盘设备上

HOOK这个例程后先进行你的处理,就可以比任何关机回写更晚执行了

方法2:IoRegisterLastChanceShutdownNotification

这是给你的驱动设备注册一个“最后机会”关机回调

这个回调将在系统FLUSH并关闭完所有的存储设备后调用,因此这个回调里不能访问或调用任何分页内存的函数或数据,不能执行文件IO操作...

但比方法1更晚,你可以在这里实现自己的磁盘IO操作。