-
-
[旧帖] [求助]内核编程 如何遍历文件 0.00雪花
-
发表于: 2011-7-19 10:43 1000
-
如何在内核层遍历某个目录下的所有文件,监听软件一般是HOOK ZwQueryDirectoryFile来实现隐藏自己的程序相关文件,我现在想如何通过ZwQueryDirectoryFile来实现遍历某个目录下的所有文件,已经困扰我好久了,我是个新手,急需各位大侠的帮忙指导,下面是我的部分程序
UNICODE_STRING string; OBJECT_ATTRIBUTES objattr; HANDLE hFile; IO_STATUS_BLOCK iostatus; NTSTATUS status ; NTSTATUS directoryStatus ; FILE_DIRECTORY_INFORMATION dirinformation; PFILE_DIRECTORY_INFORMATION pFileInfo = &dirinformation; RtlInitUnicodeString(&string, L"\\??\\d:\\test");[COLOR="Red"]//test是一个文件夹,该文件夹下有一个文本文件和一个子文件夹[/COLOR] InitializeObjectAttributes(&objattr,&string, OBJ_CASE_INSENSITIVE, NULL, NULL); status = ZwOpenFile(&hFile,GENERIC_READ,&objattr, &iostatus, FILE_SHARE_READ ,FILE_DIRECTORY_FILE );[COLOR="red"]//打开文件,返回文件句柄[/COLOR] directoryStatus = ZwQueryDirectoryFile(hFile,NULL,NULL,NULL,&iostatus,pFileInfo,sizeof(FILE_DIRECTORY_INFORMATION),FileDirectoryInformation,FALSE,NULL,TRUE);[COLOR="red"]//返回文件夹信息[/COLOR] if(NT_SUCCESS(directoryStatus)) { DbgPrint("success\n"); DbgPrint("%ws",pFileInfo->FileName);[COLOR="red"]//运行后这里打印的是:. [/COLOR] DbgPrint("length = %u",pFileInfo->FileNameLength); DbgPrint("%u",pFileInfo->NextEntryOffset);[COLOR="red"]//这里打印的是:0,这里我不明白为什么是0?难道不应该是下一个文件的位置吗?这里搞不懂[/COLOR] }
赞赏
看原图
赞赏
雪币:
留言: