什么是C:\ $ Directory?


11

运行Process Monitor时,我看到ReadFile发送到的请求C:\$Directory

这到底是什么意思?


更新:

我也看到了$MapAttributeValue,它看起来也很陌生。


$代表隐藏或行政/系统文件夹/文件。看起来像$recycle.bin文件夹。
αғsнιη

Answers:


5

更新:我进一步研究了这个问题(因为我在自己的计算机上注意到了相同的行为,并且担心这是某种恶意软件),现在我相信我的原始答案实际上是错误的。这是我现在发现的:

  1. 几个不同的过程从该文件中读取,并且从不同的偏移量读取,但是具有相同的长度:4K(恰好是一个内存页)。
  2. 有ReadFile操作,但没有打开文件,这没有什么意义。
  3. 查看堆栈跟踪,我发现所有请求都在跟踪中包含页面错误,例如,此文件读取在内部IoPageRead(),内核函数将页面文件从页面文件读取到内存中。
  4. 这些读取发生在我系统上的C:\ $ Directory和V:\ $ Directory上,这两个驱动器上都保存有分页文件,其他地方都没有。

基于这项研究,我坚信这种“文件读取”是某种Process Monitor工件,真正的读取发生在页面文件中。我不知道为什么ProcMon将该路径列为C:\ $ Directory。

我现在不认为此C:\ $ Directory是真正的NTFS图元文件。我现在不认为这可能是非法活动(病毒或其他恶意软件)。


2
我很确定这不是#3或#2。所以可能是#1。它并没有真正告诉我任何事情……
2011年

通常,这已分配给explorer.exe。所以,我也想,它不是#2或#3。
Diskilla 2011年

我完全改变了答案,对不起。
haimg 2011年

我增加了赏金。如果有任何官方/非官方文档或任何其他发现,那就太好了。用谷歌搜索这个东西相当困难。
Stefano Borini,2015年

4

$ Directory和$ MapAttributeValue最有可能是NTFS磁盘上系统区域的代号,这些引用来自打开或创建文件的程序。

这些名称可能与图元文件有关,由维基百科定义为:

NTFS包含几个定义和组织文件系统的文件。在所有方面,大多数这些文件的结构都与其他任何用户文件一样($ Volume是最特殊的),但文件系统客户端并不直接感兴趣。这些图元文件定义文件,备份关键文件系统数据,缓冲文件系统更改,管理可用空间分配,满足BIOS预期,跟踪错误的分配单位以及存储安全性和磁盘空间使用信息。除非另有说明,否则所有内容都在未命名的数据流中。

$ Directory最有可能是主文件表(MFT),它是所有文件和文件夹的目录,其中文件名,创建日期,访问权限(通过使用访问控制列表)和大小作为元数据存储在其中。任何打开或创建文件或文件夹的程序都将访问磁盘的该区域。

$ MapAttributeValue很可能是“ 属性列表”区域,描述为:

对于MFT记录中描述的每个文件(或目录),都有一个线性的流描述符存储库(也称为属性),打包在一起存储在一个或多个MFT记录中(包含所谓的属性列表),并带有额外的填充以填充固定的每个MFT记录的大小为1 KB,并且完全描述了与该文件关联的有效流。


我不明白,你是说$Directory$MFT?同样,属性列表属于单个文件记录,并存储在单个记录内;它们不是存储在磁盘根目录中的全局文件...
user541686

好的,我也删除了我的,尽管我的第一个评论仍然有效(我仍然不明白您的意思是“所有文件和文件夹的目录都是MFT”。)
user541686

1
@Mehrdad:我想说的是所有文件和文件夹都在其中定义,因此,当程序打开或创建文件时,操作系统需要在其中访问该文件。
harrymc

1
我仍然无法理解你的评论。定义了所有文件和文件夹的唯一文件是\$MFT。磁盘上没有图元文件或其他位置\$Directory。我不明白你在说什么。
user541686'2

1
不过,我也看到C:\$MFT那里列出过很多次。您是说两者都指同一件事吗?我不明白他们为什么会但是没事……
user541686
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.