Qu'est-ce que le répertoire C: \ $?

11

Lorsque j'exécute Process Monitor , je vois les ReadFiledemandes envoyées à C:\$Directory.

Qu'est-ce que cela veut dire exactement?


Mettre à jour:

Je vois aussi $MapAttributeValue, ce qui ne me semble pas familier non plus.

user541686
la source
Le $représente un dossier / fichier caché ou administratif / système. ressemble à un $recycle.bindossier.
αғsнιη

Réponses:

5

Mise à jour: j'ai fait des recherches sur ce problème (car j'ai remarqué le même comportement sur mon propre ordinateur et je craignais qu'il s'agisse d'une sorte de malware), et maintenant je pense que ma réponse d'origine était en fait incorrecte. Voici ce que j'ai trouvé maintenant:

  1. Plusieurs processus différents lisent à partir de ce fichier, et à partir de différents décalages, mais avec la même longueur: 4K (exactement une page mémoire).
  2. Il y a des opérations ReadFile, mais pas d'ouverture du fichier, ce qui n'a guère de sens.
  3. En regardant la trace de la pile, je vois que toutes les demandes incluent un défaut de page dans la trace, par exemple, ce fichier lu est à l'intérieur IoPageRead(), fonction du noyau qui lit les pages du fichier d'échange en mémoire.
  4. Ces lectures se produisent sur le répertoire C: \ $ et le répertoire V: \ $ sur mon système, les deux lecteurs qui contiennent des fichiers d'échange, et nulle part ailleurs.

Sur la base de cette recherche, je crois fermement que cette "lecture de fichier" est une sorte d'artefact de Process Monitor, et la vraie lecture se produit dans le fichier d'échange. Je n'ai aucune idée pourquoi ProcMon répertorie le chemin d'accès comme répertoire C: \ $.

Je ne pense pas maintenant que ce répertoire C: \ $ est un vrai métafichier NTFS . Je ne pense pas maintenant que cela pourrait être une activité illégitime (virus ou autre malware).

haimg
la source
2
Je suis presque sûr que ce n'est ni # 3 ni # 2. C'est donc probablement le n ° 1. Cela ne me dit rien, cependant ...
user541686
normalement, il est attribué à explorer.exe. Donc, je suppose aussi que ce n'est ni n ° 2 ni n ° 3.
Diskilla
J'ai complètement changé ma réponse, désolé.
haimg
J'ai ajouté une prime. S'il y a des documents officiels / non officiels ou d'autres découvertes, ce serait génial. C'est quelque chose d'assez difficile de google ce genre de choses.
Stefano Borini
4

$ Directory et $ MapAttributeValue sont très probablement des noms de code pour des zones système sur le disque NTFS , et ces références proviennent de programmes ouvrant ou créant des fichiers.

Ces noms appartiennent probablement aux métafichiers , définis par wikipedia comme:

NTFS contient plusieurs fichiers qui définissent et organisent le système de fichiers. À tous égards, la plupart de ces fichiers sont structurés comme n'importe quel autre fichier utilisateur ($ Volume étant le plus particulier), mais ne présentent pas d'intérêt direct pour les clients du système de fichiers. Ces métafichiers définissent des fichiers, sauvegardent les données critiques du système de fichiers, mettent en mémoire tampon les modifications du système de fichiers, gèrent l'allocation d'espace libre, répondent aux attentes du BIOS, suivent les unités d'allocation incorrectes et stockent les informations de sécurité et d'utilisation de l'espace disque. Tout le contenu est dans un flux de données sans nom, sauf indication contraire.

Le répertoire $ est probablement la table de fichiers maîtres (MFT) qui est le répertoire de tous les fichiers et dossiers, où sont stockés en tant que métadonnées le nom de fichier, la date de création, les autorisations d'accès (en utilisant des listes de contrôle d'accès) et la taille. Tout programme qui ouvre ou crée un fichier ou un dossier accède à cette zone du disque.

$ MapAttributeValue est très probablement la zone des listes d'attributs , décrite comme suit :

Pour chaque fichier (ou répertoire) décrit dans l'enregistrement MFT, il existe un référentiel linéaire de descripteurs de flux (également appelés attributs), regroupés dans un ou plusieurs enregistrements MFT (contenant la soi-disant liste d'attributs), avec un rembourrage supplémentaire pour remplir le fixe Taille de 1 Ko de chaque enregistrement MFT, et qui décrit pleinement les flux efficaces associés à ce fichier.

harrymc
la source
Je ne comprends pas, vous dites que $Directoryc'est la même chose que $MFT? De plus, les listes d'attributs appartiennent à des enregistrements de fichiers individuels et sont stockées dans les enregistrements individuels; ce ne sont pas des fichiers globaux stockés à la racine du disque ...
user541686
D'accord, j'ai supprimé le mien aussi, bien que mon premier commentaire soit toujours valable (je ne comprends toujours pas ce que vous entendez par des expressions comme "le MFT qui est le répertoire de tous les fichiers et dossiers".
user541686
1
@Mehrdad: J'essayais de dire que tous les fichiers et dossiers y sont définis, donc lorsqu'un programme ouvre ou crée un fichier, c'est là que le système d'exploitation doit accéder.
harrymc
1
Je ne comprends toujours pas votre commentaire. Le seul fichier contenant tous les fichiers et dossiers définis est \$MFT. Il n'y a aucun métafichier ou autre emplacement sur le disque nommé \$Directory. Je ne comprends pas de quoi tu parles.
user541686
1
J'en ai vu de C:\$MFTnombreuses fois aussi. Voulez-vous dire que les deux se réfèrent à la même chose? Je ne vois pas pourquoi ils le feraient mais ok ...
user541686