首页
社区
课程
招聘
[旧帖] [求助]内核编程 如何遍历文件 0.00雪花
发表于: 2011-7-19 10:43 1000

[旧帖] [求助]内核编程 如何遍历文件 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]
          }

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//