Formatos ShimCache heredados: Windows XP, 2003, Vista, 7 y 8

4 min de lectura

TL;DR. Cada generación de Windows reescribió la estructura del AppCompatCache. XP usa un magic 0xDEADBEEF y un registro fijo de 552 bytes; Server 2003, Vista/2008, Windows 7/2008 R2 y Windows 8/8.1 tienen cada uno su propia cabecera y disposición de entrada. Un parser debe ramificar según el magic de cabecera — no hay un formato único.

La mayoría de la documentación de ShimCache cubre la disposición de Windows 10/11. Pero quienes responden a incidentes aún se topan con controladores de dominio Windows 7, máquinas Server 2008 R2 y el ocasional equipo XP. La estructura en disco en esos hosts es materialmente distinta. Esta es la referencia por versión.

Por qué no hay un formato único

ShimCache es una estructura interna de Windows sin especificación pública. Microsoft la remodeló a lo largo de las versiones según evolucionaba la infraestructura de shims. El nombre y la ruta del valor de registro también cambiaron. Un parser robusto identifica la versión desde la cabecera antes de leer una sola entrada.

Chuleta por versión

WindowsValor de registroMagic de cabeceraForma de entrada
XP (32 bits)…\AppCompatibility\AppCompatCache0xDEADBEEFRegistros fijos de 552 bytes, máx. 96
Server 2003…\AppCompatCache\AppCompatCache0xBADC0FFEEntradas de 24 bytes (x86) / 32 bytes (x64)
Vista / 2008…\AppCompatCache\AppCompatCache0xBADC0FFEComo 2003, distintos flags
Windows 7 / 2008 R2…\AppCompatCache\AppCompatCache0xBADC0FEECabecera de 32 bytes; las entradas llevan el flag de inserción
Windows 8 / 2012…\AppCompatCache\AppCompatCache0x00000080Firma de entrada 00ts de longitud variable
Windows 8.1 / 2012 R2…\AppCompatCache\AppCompatCache0x00000080Firma de entrada 10ts

(La disposición moderna 10ts/00ts de Windows 10/11 se detalla por separado.)

XP — el caso atípico

Windows XP no se parece a nada de lo que vino después: un magic 0xDEADBEEF, registros de ancho fijo de 552 bytes, un tope estricto de 96 entradas y rutas UTF-16 rellenadas a una longitud fija. También almacenaba una marca de última actualización y un campo de tamaño de archivo que las versiones posteriores abandonaron. Si ves 0xDEADBEEF, estás en territorio XP y ninguna lógica de análisis moderna aplica.

Windows 7 — el que más te encontrarás

Windows 7 / Server 2008 R2 sigue siendo común en respuesta a incidentes. Magic 0xBADC0FEE, cabecera de 32 bytes y registros por entrada que incluyen la ruta, la fecha de última modificación del archivo y — singularmente útil — un flag de ejecución que se eliminó a partir de Windows 8. En Windows 7 un flag activado es una corroboración razonable (no absoluta) de ejecución; no lo extrapoles a sistemas más nuevos, como se explica en ¿demuestra el ShimCache la ejecución?.

La transición 8 / 8.1

Windows 8 introdujo la entrada de longitud variable con una firma por entrada (00ts), y 8.1 la subió a 10ts. Es el ancestro estructural del formato de Windows 10/11, así que un parser que maneje 8.1 está casi listo para manejar 10.

Analizarlos sin una cadena de herramientas

El Shimcache Parser detecta automáticamente el magic de cabecera y ramifica al decodificador correcto para XP, 2003, Vista, 7, 8, 8.1 y 10/11 — así puedes leer una colmena SYSTEM heredada en el navegador sin desplegar herramientas antiguas. Para la recolección en estos sistemas antiguos, ver adquirir una colmena SYSTEM.

Lectura adicional

Artículos relacionados