当前位置: 代码迷 >> 驱动开发 >> hook ZwCreateFile碰到的获取文件名字和文件全路径的困惑?
  详细解决方案

hook ZwCreateFile碰到的获取文件名字和文件全路径的困惑?

热度:287   发布时间:2016-04-28 10:07:22.0
hook ZwCreateFile遇到的获取文件名字和文件全路径的困惑??
   在我的hook ZwCreateFile函数中,我用KdPrint输出

      (1)KdPrint(("文件的根目录是: %x \n",ObjectAttributes->RootDirectory));

 

                  有时候输出结果是754,有时候输出结果是一连串类似数据流的东东。

      (2)KdPrint(("文件名为:%wZ\n",ObjectAttributes->ObjectName));

     有时候输出结果为\??\C:\IVU\ivu\123456.txt:|Raec25ph4sudbf0hAaq5ehw34Nf:$DATA

     有时候输出结果为:|SummaryInformation:$DATA
------解决方案--------------------
引用:
Summary information of files: When you right-click on a file in Explorer and go to the 'Summary' tab, you can add summary information for the file, like title, subject, author, and so on. This summary information is also saved into alternate stream. The stream name in this case is SummaryInformation:$DATA. 

文件的摘要信息:当你在资源管理器中右键单击文件,然后转到“摘要”选项卡中,可以添加摘要信息的文件,如标题,主题,作者,等等。本摘要信息也保存在备用流。在这种情况下,数据流的名称是的SummaryInformation:$ DATA。
估计有时候ObjectAttributes->ObjectName中存储的是备用流吧??

看起来是的。
------解决方案--------------------
引用:
可以多说点吗?ObjectAttributes中存储的不一定是文件名,有时候也是流信息:
比如我打印出来的数据是:
{4c8cc155-6c1e-11d1_8e41-00c04fb9386d}:$DATA 

其实我是来学习的。不太明白你的问题是什么。俺也没有去hook过ZwCreateFile的ObjectAttributes。
我觉得你可以从ZwCreateFile API的文档去分析一下该函数都支持哪些类别的Object。
也许你把ObjectAttributes所有参数都打印出来就明白对应的Object是什么。