首页
社区
课程
招聘
[求助]FltGetFileNameInformation 问题
发表于: 2018-9-4 01:44 4476

[求助]FltGetFileNameInformation 问题

2018-9-4 01:44
4476
UNICODE_STRING* MiniFilter_Monitor::Get_File_Path(PFLT_CALLBACK_DATA Data)
{
	VMProtectBeginUltra("Get_File_Path");
	NTSTATUS status;
	PFLT_FILE_NAME_INFORMATION file_name = nullptr;
	status = FltGetFileNameInformation(Data, FLT_FILE_NAME_NORMALIZED | FLT_FILE_NAME_QUERY_DEFAULT, &file_name);//
	if (NT_SUCCESS(status))
	{
		FltParseFileNameInformation(file_name);  //补全信息

		DbgPrint("扫描位置: %wZ \n", file_name->Name);

		UNICODE_STRING *temp = new UNICODE_STRING();
		temp->Length = file_name->Name.Length;
		temp->MaximumLength = file_name->Name.MaximumLength;
		temp->Buffer = (WCHAR*)new char[file_name->Name.MaximumLength];
		RtlCopyMemory(temp->Buffer, file_name->Name.Buffer, file_name->Name.MaximumLength);

		FltReleaseFileNameInformation(file_name);
		return temp;
	}

	VMProtectEnd();
	return nullptr;
}

FltGetFileNameInformation返回的信息里只有路径,没有文件名
正常情况应该类似这种:\Device\HarddiskVolume2\others\MyFireWall.exe:Raec25ph4sudbf0hAaq5ehw3Nf
现在所有I/O操作返回都是这样的:\Device\HarddiskVolume2\others\


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 1319
活跃值: (1960)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
我记得在postCreate函数中能获取文件路径名得,不知道楼主你是在哪个地方获取文件名。
2018-9-4 09:23
0
雪    币: 42
活跃值: (208)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
库尔 我记得在postCreate函数中能获取文件路径名得,不知道楼主你是在哪个地方获取文件名。
对对,我搞错了,这里只能获取目录
2018-9-5 12:38
0
雪    币: 16
活跃值: (527)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
你应该在获取信息前查看是否带有SL_OPEN_TARGET_DIRECTORY标记
2019-6-24 11:16
0
游客
登录 | 注册 方可回帖
返回
//