- 最后登录
- 2010-8-29
- 注册时间
- 2008-9-5
- 精华
- 3
- 积分
- 687
- 阅读权限
- 50
- 帖子
- 469
 
- 金钱
- 1490 元
- 经验
- 808 点
- 威望
- 40 点
- 贡献
- 13 点
- 精华
- 3
|
凡本论坛原创内容,其作者享有著作权,未经许可谢绝转载。
新建一个文件要调用CreatFile,然后我就想如果想对某个特定目录不能新建文件,Hook CreateFile能不能解决问题?
代码如下- NTSTATUS
- MyNtCreateFile(
- OUT PHANDLE FileHandle,
- IN ACCESS_MASK DesiredAccess,
- IN POBJECT_ATTRIBUTES ObjectAttributes,
- OUT PIO_STATUS_BLOCK IoStatusBlock,
- IN PLARGE_INTEGER AllocationSize,
- IN ULONG FileAttributes,
- IN ULONG ShareAccess,
- IN ULONG CreateDisposition,
- IN ULONG CreateOptions,
- IN PVOID EaBuffer,
- IN ULONG EaLength)
- {
- NTSTATUS status=Orig_NtCreateFile(
- FileHandle,
- DesiredAccess,
- ObjectAttributes,
- IoStatusBlock,
- AllocationSize,
- FileAttributes,
- ShareAccess,
- CreateDisposition,
- CreateOptions,
- EaBuffer,
- EaLength);
- PCHAR ProcessName;
- ULONG Process;
- if(!wcsncmp(ObjectAttributes->ObjectName->Buffer,L"\\??\\C:\\test\\",12))
- {
- DbgPrint("Object name is %wZ",ObjectAttributes->ObjectName);
- Process=(ULONG)PsGetCurrentProcess();
- ProcessName=(PCHAR)(Process+0x174);
- DbgPrint("Proname is %s",ProcessName);
- return STATUS_ACCESS_DENIED;
- }
- return status;
- }
复制代码 结果是,第一次创建,说文件已存在,过了一会,C:\test里出现了1000个新建文本文件。。。
好吓人啊好吓人。。。
这个怎么回事啊,难道还有别的函数可以创建文件? |
|