¿Qué es RecentFileCache.bcf?
Una breve introducción al artefacto AppCompat de Windows 7: dónde vive, qué registra y por qué sigue apareciendo en casos de triage en 2026.
RecentFileCache.bcf es el artefacto cuya existencia olvidas hasta que una máquina con Windows 7 aterriza en tu mesa. Es pequeño, acotado y de vida corta. Registra las rutas completas de los ejecutables que el escáner Application Experience ha visto desde el último pase del appraiser. Sin marcas temporales por entrada. Sin hashes. Sin firmantes. Solo una lista de rutas en UTF-16LE.
Y esa lista, en el host adecuado, es una de las señales "esto se ejecutó recientemente" más limpias que puedes sacar del disco.
Dónde vive
C:\Windows\AppCompat\Programs\RecentFileCache.bcf
Mismo directorio que Amcache.hve en builds posteriores. Los dos artefactos casi nunca coexisten como evidencia primaria. Win7 y Server 2008 R2 te dan la BCF y una Amcache delgada. Windows 8 en adelante mata la BCF y se apoya enteramente en Amcache.hve. Si encuentras una BCF en un host Win10, alguien tomó una decisión rara y deberías averiguar quién.
Qué contiene en realidad
Una cabecera de 20 bytes, luego una secuencia compacta de cadenas de ruta UTF-16LE prefijadas en longitud hasta EOF.
| Campo | Tamaño | Notas |
|---|---|---|
| Firma | 4 | 0x0fffeefe |
| Desconocido x3 | 12 | Observado 0x00002211, 3, 1 |
| Posible checksum | 4 | Ningún parser público lo valida |
| Registros... | Repetir hasta EOF | |
| Conteo de chars | 4 | Incluye el NUL final |
| Ruta | var | UTF-16LE, terminada en NUL |
Eso es todo. Sin marcas temporales. Sin hashes. Sin metadatos PE. El formato no ha cambiado desde Windows 7 SP1, lo que significa que el parseo es tolerante y las herramientas coinciden.
Si quieres telemetría más rica para la misma era necesitas Amcache.hve, Prefetch o Shimcache. La BCF es la pista barata, no el veredicto.
Quién escribe en ella
El servicio Application Experience (AeLookupSvc en Win7) alimenta el archivo en tiempo de ejecución. La tarea programada Microsoft\Windows\Application Experience\ProgramDataUpdater lo vacía con cadencia aproximadamente diaria y promociona a los supervivientes a Amcache.hve. El ciclo de vida tiene consecuencias para la triage, cubiertas en Application Experience y ProgramDataUpdater.
La versión corta: una ruta aterriza en el archivo cuando el ejecutable cruzó la ruta de código AppCompat. El siguiente pase de ProgramDataUpdater reescribe el archivo, a menudo más corto que antes. Si el appraiser está deshabilitado, el archivo se acumula indefinidamente y obtienes una ventana mayor. He visto BCFs con 18 meses de antigüedad en hosts donde alguien deshabilitó la tarea con un script eliminador de telemetría.
Semántica de rutas
Una entrada típica luce así:
\??\C:\Users\bob\AppData\Local\Temp\setup.exe
El prefijo \??\ es la notación del NT object manager para una ruta tipo DOS. Trátalo como C:\ y sigue. Los parsers decentes lo eliminan; trata el resto como cualquier otra ruta Win32.
Por qué sigue importando en 2026
Dos razones, ninguna desaparecida.
Primero, Windows 7 no ha muerto. Control industrial, flotas de kioscos, endpoints de dispositivos médicos, ATMs, cajas MES embebidas. Sigue habiendo millones de sistemas Win7 y Server 2008 R2 en el campo. Cuando uno se compromete, parseas BCFs en 2026 exactamente igual que lo hacías en 2014.
Segundo, las imágenes antiguas siguen llegando a las mesas. Reinvestigaciones de cold cases, due diligence en M&A, discovery civil. Una imagen Win7 de 2017 es igual de relevante la semana que aparece en tu cola.
Límites por honestidad
- Sin marcas temporales por entrada. El propio
LastWriteTimedel archivo es una cota superior aproximada de cuándo aterrizó la última entrada y no te dice nada de las anteriores. - El archivo se reescribe, no se anexa. Las entradas desaparecen entre pases.
- Solo ejecutables que cruzaron la ruta AppCompat del loader. Loaders PE en memoria, DLLs reflectivas y cierto tradecraft LOLBin nunca tocan este archivo.
- Sin metadatos del ejecutable. Una ruta es una afirmación de identidad, no una identidad. Empareja con
Amcache.hveo un hash del disco si el binario sigue ahí. - Sin atribución de usuario. Por máquina, no por usuario. La pregunta "¿quién ejecutó esto?" necesita evidencia separada de EVTX o Registro.
Parsearlo
El parser de este sitio toma un .bcf y emite una lista estructurada de rutas. Todo corre en tu navegador. El archivo nunca se sube, lo cual importa cuando el archivo en cuestión es de un cliente regulado cuyos abogados se preocupan por la cadena de custodia.
Para los detalles del formato y un volcado hexadecimal trabajado, lee el siguiente post de la serie.