首页
社区
课程
招聘
[已解决]怎么用FileHandle获得文件名呢?
发表于: 2011-2-22 05:37 6634

[已解决]怎么用FileHandle获得文件名呢?

2011-2-22 05:37
6634
NTSTATUS MyNtReadFile(
                                                          IN      HANDLE FileHandle,
                                                          IN  HANDLE Event,
                                                          IN  PIO_APC_ROUTINE ApcRoutine,
                                                          IN  PVOID ApcContext,
                                                          OUT     PIO_STATUS_BLOCK IoStatusBlock,
                                                          OUT     PVOID Buffer,
                                                          IN      ULONG Length,
                                                          IN  PLARGE_INTEGER ByteOffset,
                                                          IN  PULONG Key
                                                          )
{
        POBJECT_ATTRIBUTES ObjectAttributes;
        ObReferenceObjectByHandle(FileHandle,0, *IoFileObjectType,KernelMode,&ObjectAttributes,NULL);
        DbgPrint("ReadFile FilePath Is %ws\n",ObjectAttributes->ObjectName->Buffer);
        ObDereferenceObject(ObjectAttributes);
OldReadFile(FileHandle,Event,ApcRoutine,ApcContext,IoStatusBlock,Buffer,Length,ByteOffset,Key);
}

用FileHandle获得文件名不应该使用ObReferenceObjectByHandle吗?蓝啊蓝啊蓝啊蓝

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 330
活跃值: (112)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
2
POBJECT_ATTRIBUTES ObjectAttributes;
  ObReferenceObjectByHandle(FileHandle,0,*IoFileObjectType,KernelMode,&ObjectAttributes,NULL);
建议你先看下这个函数的调用方法和对象结构及文件对象先
2011-2-22 06:06
0
雪    币: 7992
活跃值: (2566)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
FileHandle 对应FileObject
不对应OBJECT_ATTRIBUTES.
2011-2-22 08:51
0
雪    币: 4817
活跃值: (23)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
通过ObReferenceObjectByHandle获得FileObject
通过ObQueryNameString查询FileObject->RelatedFileObject,获取相对的路径,如果FileObject->RelatedFileObject为空,用FileObject->DeviceObject进行查询。
查询出来的字符串和FileObject->FileName合并(注意中间路径分隔符\的问题),就得到路径了,不过这可能是短路径,需要的话要转换长路径。
另外,Windows没有规定这时候FileObject->FileName必须有效,也就是说如果这个域被置空,那你获得就有问题。稳妥的办法是在ZwCreateFile的时候获得路径,保存起来,用的时候在取出,在ZwCreateFile获得的路径就是真实的。
2011-2-22 09:02
0
雪    币: 55
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
楼上正解,mark一下
2011-2-22 09:56
0
雪    币: 376
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
的确改成FileObject就行了~
感谢LS各位的帮助!
2011-2-22 14:04
0
雪    币: 88
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
对象解除那蓝的吧?
2011-2-22 14:53
0
游客
登录 | 注册 方可回帖
返回
//