网上流传的一篇文章《编写驱动拦截NT的API实现隐藏文件目录》,当时我在网上搜索内核级Hook资料时搜索到的,因为自己对驱动程序还是初初接触,所有想按照这篇文章自己弄个简单的驱动出来,测试测试~~~但由于网上流传的这篇文章都丢失了原作者和原出处,有些代码似乎是错的,但自己又不熟悉,难免弄错。参考了其它使用驱动程序Hook的例子(都是Windows 2000 DDK的),最终编译了一个驱动出来,马上安装进自己的系统里(Windows XP Professional SP2),执行[net start "驱动名"],噢,系统立即蓝屏挂掉了!!经过一段时间的驱动程序编写研究,终于写成功拦截NT的API实现隐藏文件目录了,也知道了一点就是Windows XP之后的操作系统的SSDT都已经写保护,Hook SSDT时不可以直接改写SSDT。我的代码如下,由于水平有限,难免会有错误,请多多指教。

编写驱动拦截NT的API实现隐藏文件目录(代码)#include <ntddk.h>
编写驱动拦截NT的API实现隐藏文件目录(代码)
编写驱动拦截NT的API实现隐藏文件目录(代码)
#define FILE_DEVICE_NTHIDEFILES    0x8000
编写驱动拦截NT的API实现隐藏文件目录(代码)
#define NTHIDEFILES_IOCTL_BASE    0x800
编写驱动拦截NT的API实现隐藏文件目录(代码)
编写驱动拦截NT的API实现隐藏文件目录(代码)
#define CTL_CODE_NTHIDEFILES(i) CTL_CODE(FILE_DEVICE_NTHIDEFILES, NTHIDEFILES_IOCTL_BASE+i, METHOD_BUFFERED, FILE_ANY_ACCESS)
编写驱动拦截NT的API实现隐藏文件目录(代码)
#define IOCTL_NTHIDEFILES_HELLO    CTL_CODE_NTHIDEFILES(0)
编写驱动拦截NT的API实现隐藏文件目录(代码)
编写驱动拦截NT的API实现隐藏文件目录(代码)
#define NTHIDEFILES_DEVICE_NAME     L"\\Device\\NtHideFiles"
编写驱动拦截NT的API实现隐藏文件目录(代码)
#define NTHIDEFILES_DOS_DEVICE_NAME L"\\DosDevices\\NtHideFiles"
编写驱动拦截NT的API实现隐藏文件目录(代码)
编写驱动拦截NT的API实现隐藏文件目录(代码)
#define dprintf if (DBG) DbgPrint
编写驱动拦截NT的API实现隐藏文件目录(代码)
#define nprintf DbgPrint
编写驱动拦截NT的API实现隐藏文件目录(代码)
编写驱动拦截NT的API实现隐藏文件目录(代码)typedef 
struct _DEVICE_EXTENSION
}


以上代码在Windows XP Professional SP2 + Windows Server 2003 SP1 DDK下调试通过。

相关文章: