Skip to content

Qu'est-ce que RecentFileCache.bcf ?

Une courte introduction à l'artefact AppCompat de Windows 7 : où il vit, ce qu'il enregistre, et pourquoi il refait surface dans les dossiers de triage en 2026.

Publié le 4 min de lecture

RecentFileCache.bcf est l'artefact dont vous oubliez l'existence jusqu'à ce qu'une machine Windows 7 atterrisse sur votre bureau. Il est petit, étroit et éphémère. Il enregistre les chemins complets des exécutables que le scanner Application Experience a vus depuis le dernier passage d'évaluation. Pas d'horodatage par entrée. Pas de hash. Pas de signataires. Juste une liste de chemins en UTF-16LE.

Et cette liste, sur le bon hôte, est l'un des signaux « ceci a tourné récemment » les plus propres que vous puissiez extraire du disque.

Où il vit

C:\Windows\AppCompat\Programs\RecentFileCache.bcf

Même répertoire que Amcache.hve sur les builds plus récents. Les deux artefacts ne coexistent presque jamais comme preuves primaires. Win7 et Server 2008 R2 vous donnent le BCF et un Amcache léger. Windows 8 et au-delà tue le BCF et s'appuie entièrement sur Amcache.hve. Si vous trouvez un BCF sur un hôte Win10, quelqu'un a fait un choix inhabituel et il faut comprendre qui.

Ce qu'il contient réellement

Un en-tête de 20 octets, puis une séquence dense de chaînes de chemins UTF-16LE préfixées par leur longueur jusqu'à EOF.

ChampTailleNotes
Signature40x0fffeefe
Inconnu x312Observé 0x00002211, 3, 1
Checksum possible4Aucun parser public ne le valide
Enregistrements...Répéter jusqu'à EOF
Compte de chars4Inclut le NUL final
CheminvarUTF-16LE, terminé NUL

C'est tout. Pas d'horodatages. Pas de hashes. Pas de métadonnées PE. Le format n'a pas changé depuis Windows 7 SP1, ce qui veut dire que le parsing est indulgent et que les outils s'accordent.

Si vous voulez une télémétrie plus riche pour la même époque, il vous faut Amcache.hve, Prefetch ou Shimcache. Le BCF est la piste bon marché, pas le verdict.

Qui y écrit

Le service Application Experience (AeLookupSvc sur Win7) alimente le fichier à l'exécution. La tâche planifiée Microsoft\Windows\Application Experience\ProgramDataUpdater le vide à cadence environ quotidienne et promeut les survivants vers Amcache.hve. Le cycle de vie a des conséquences pour le triage, traité dans Application Experience et ProgramDataUpdater.

Version courte : un chemin arrive dans le fichier quand l'exécutable a traversé le code AppCompat. Le passage suivant de ProgramDataUpdater réécrit le fichier, souvent plus court qu'avant. Si l'évaluateur est désactivé, le fichier s'accumule indéfiniment et vous obtenez une fenêtre plus longue. J'ai vu des BCF vieux de 18 mois sur des hôtes où quelqu'un avait désactivé la tâche avec un script « telemetry remover ».

Sémantique des chemins

Une entrée typique ressemble à :

\??\C:\Users\bob\AppData\Local\Temp\setup.exe

Le préfixe \??\ est la notation du NT object manager pour un chemin de type DOS. Traitez-le comme C:\ et passez. Les parsers décents l'enlèvent ; traitez le reste comme n'importe quel autre chemin Win32.

Pourquoi cela compte encore en 2026

Deux raisons, dont aucune n'a disparu.

D'abord, Windows 7 n'est pas mort. Contrôle industriel, parcs de bornes, endpoints de dispositifs médicaux, ATM, MES embarqués. Il y a encore des millions de Win7 et Server 2008 R2 sur le terrain. Quand l'un est compromis, vous parsez des BCF en 2026 exactement comme en 2014.

Ensuite, les vieilles images continuent d'arriver. Réouvertures de cold cases, due diligence M&A, discovery civile. Une image disque Win7 de 2017 est tout aussi pertinente la semaine où elle débarque dans votre file.

Limites, honnêtement

  • Pas d'horodatages par entrée. Le LastWriteTime propre au fichier est une borne supérieure grossière de quand la dernière entrée est arrivée et ne dit rien sur les précédentes.
  • Le fichier est réécrit, pas appended. Les entrées disparaissent entre les passes.
  • Seulement les exécutables qui ont traversé la voie AppCompat du loader. Les loaders PE en mémoire, les DLL réflectives, certaines techniques LOLBin ne touchent jamais ce fichier.
  • Pas de métadonnées sur l'exécutable. Un chemin est une revendication d'identité, pas une identité. Couplez avec Amcache.hve ou un hash depuis le disque si le binaire est encore là.
  • Pas d'attribution utilisateur. Par machine, pas par utilisateur. La question « qui a lancé ça » exige des preuves séparées issues d'EVTX ou du registre.

Le parser

Le parser de ce site prend un .bcf et émet une liste structurée de chemins. Tout tourne dans votre navigateur. Le fichier n'est jamais téléversé, ce qui compte quand le fichier en question vient d'un client réglementé dont les avocats se soucient de la chaîne de garde.

Pour les détails du format et un dump hex commenté, lisez le prochain billet de la série.

Pour aller plus loin

Articles liés

Quatre artefacts Windows d’evidence-of-execution côte à côte : ce que chacun stocke, ce qu’il ne stocke pas, et lequel ouvrir en premier.
Le cycle de vie du BCF tient en une seule tâche planifiée. Comprenez quand ProgramDataUpdater s'exécute, quand il vide le fichier, et comment repérer un appraiser désactivé.
Le format BCF est un en-tête, une liste de chemins UTF-16LE préfixés de leur longueur, et c'est tout. Voici ce que signifie chaque octet et pourquoi rien n'a changé depuis 2009.