首页
社区
课程
招聘
[求助]为啥不能正确读取文件内容?
发表于: 2019-7-1 23:03 1780

[求助]为啥不能正确读取文件内容?

2019-7-1 23:03
1780
#include<ntddk.h>
#include<wdm.h>
#include <assert.h>
VOID Unload(PDRIVER_OBJECT obj)
{
       DbgPrint("驱动已卸载");
}

NTSTATUS DriverEntry(PDRIVER_OBJECT obj, PUNICODE_STRING str)
{
	obj->DriverUnload = Unload;

	HANDLE hFile=NULL;

	OBJECT_ATTRIBUTES objAttribut;
	UNICODE_STRING strAttrbutName;
	IO_STATUS_BLOCK szIoStatuBlock;

	WCHAR wcFileName[1024] = { 0 };
	WCHAR wcFileNameRet[1024] = L"\\??\\c:\\新建文本文档.cpp";
	RtlInitUnicodeString(&strAttrbutName, wcFileNameRet);
	InitializeObjectAttributes(&objAttribut, &strAttrbutName, OBJ_CASE_INSENSITIVE, NULL,NULL);



	

	ZwOpenFile(&hFile, FILE_READ_ATTRIBUTES, &objAttribut, &szIoStatuBlock, 1 | 4, (ULONG)NULL);
	DbgPrint("%#x\n", hFile);
	//UCHAR cBuff[10] = { 0 };
	FILE_STANDARD_INFORMATION fsi;
	ZwQueryInformationFile(hFile, &szIoStatuBlock, &fsi, sizeof(FILE_STANDARD_INFORMATION), FileStandardInformation);
	PVOID cBuff=ExAllocatePool(PagedPool, 10);
	DbgPrint("返回值:%#x\n", ZwReadFile(hFile, NULL, NULL, NULL, &szIoStatuBlock, cBuff, 0x4,&(fsi.EndOfFile), NULL));
	DbgPrint("%#x\n", cBuff);
	ZwClose(hFile);
	return STATUS_SUCCESS;
}
用ZwOpenFile获取文件句柄也成功了!可是为什么死活不能读取正确的读取文件内容? 搞了一两天还是不知道错在哪?求求哪位好心的大佬给我解答一下!万分感谢!

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

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 181
活跃值: (616)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
"返回值:%#x\n" 返回了什么?
2019-7-1 23:49
0
雪    币: 9626
活跃值: (1826)
能力值: ( LV5,RANK:73 )
在线值:
发帖
回帖
粉丝
3
DbgPrint("%#x\n", cBuff)
¿
最后于 2019-7-2 22:47 被Sprite雪碧编辑 ,原因:
2019-7-2 00:09
0
雪    币: 3085
活跃值: (3623)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
Sprite雪碧 "返回值:%#x\n" 返回了什么?
返回值是0X103
2019-7-2 21:51
0
雪    币: 3085
活跃值: (3623)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
柒雪天尚 "返回值:%#x\n" 返回了什么?
返回值是0X103
2019-7-2 21:51
0
雪    币: 300
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
6

LARGE_INTEGER  readOffset;
readOffset.QuadPart = 0;

ZwReadFile(hFile, NULL, NULL, NULL, &szIoStatuBlock, cBuff, 0x4,&readOffset, NULL);

  第八个参数不是偏移吗。从头读取。



PVOIDcBuff=ExAllocatePool(PagedPool, 10);                           太小
0x4                                                                                              太小  


我也是新手。也刚学到这里。

最后以  %s打印 cBuff
 




最后于 2019-7-3 20:16 被暴躁的咸鱼编辑 ,原因:
2019-7-3 15:35
1
雪    币: 9626
活跃值: (1826)
能力值: ( LV5,RANK:73 )
在线值:
发帖
回帖
粉丝
7
DbgPrint("%#x\n", cBuff)
¿
2019-7-3 16:18
0
雪    币: 3085
活跃值: (3623)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
8
Sprite雪碧 DbgPrint("%#x\n", cBuff) ¿
什么都没显示,cBuff里是空的
2019-7-3 19:17
0
雪    币: 3085
活跃值: (3623)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
9
暴躁的咸鱼 LARGE_INTEGER&nbsp; readOffset; readOffset.QuadPart = 0; ZwReadFile(hFile,&nbsp;NULL,& ...
搞定了,万分感谢
2019-7-4 19:56
0
雪    币: 247
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
10
学习学习
2019-7-5 09:34
0
游客
登录 | 注册 方可回帖
返回
//