Formats ShimCache hérités : Windows XP, 2003, Vista, 7 et 8

4 min de lecture

TL;DR. Chaque génération de Windows a réécrit la structure de l'AppCompatCache. XP utilise un magic 0xDEADBEEF et un enregistrement fixe de 552 octets ; Server 2003, Vista/2008, Windows 7/2008 R2 et Windows 8/8.1 ont chacun leur propre en-tête et disposition d'entrée. Un parseur doit brancher selon le magic d'en-tête — il n'existe pas de format unique.

La plupart de la documentation ShimCache couvre la disposition Windows 10/11. Mais les intervenants en réponse à incident croisent encore des contrôleurs de domaine Windows 7, des machines Server 2008 R2 et l'occasionnel boîtier XP. La structure sur disque y est fondamentalement différente. Voici la référence par version.

Pourquoi il n'y a pas de format unique

ShimCache est une structure interne de Windows sans spécification publique. Microsoft l'a remodelée au fil des versions à mesure que l'infrastructure de shim évoluait. Le nom et le chemin de la valeur de registre ont aussi changé. Un parseur robuste identifie la version depuis l'en-tête avant de lire la moindre entrée.

Aide-mémoire par version

WindowsValeur de registreMagic d'en-têteForme d'entrée
XP (32 bits)…\AppCompatibility\AppCompatCache0xDEADBEEFEnregistrements fixes de 552 octets, max 96
Server 2003…\AppCompatCache\AppCompatCache0xBADC0FFEEntrées 24 octets (x86) / 32 octets (x64)
Vista / 2008…\AppCompatCache\AppCompatCache0xBADC0FFEComme 2003, drapeaux différents
Windows 7 / 2008 R2…\AppCompatCache\AppCompatCache0xBADC0FEEEn-tête 32 octets ; les entrées portent le drapeau d'insertion
Windows 8 / 2012…\AppCompatCache\AppCompatCache0x00000080Signature d'entrée 00ts de longueur variable
Windows 8.1 / 2012 R2…\AppCompatCache\AppCompatCache0x00000080Signature d'entrée 10ts

(La disposition moderne 10ts/00ts de Windows 10/11 est détaillée séparément.)

XP — le cas atypique

Windows XP ne ressemble à rien de ce qui suit : un magic 0xDEADBEEF, des enregistrements de largeur fixe de 552 octets, un plafond strict de 96 entrées et des chemins UTF-16 complétés à une longueur fixe. Il stockait aussi un horodatage de dernière mise à jour et un champ de taille de fichier que les versions ultérieures ont abandonnés. Si vous voyez 0xDEADBEEF, vous êtes en territoire XP et aucune logique d'analyse moderne ne s'applique.

Windows 7 — celui que vous croiserez le plus

Windows 7 / Server 2008 R2 reste courant en réponse à incident. Magic 0xBADC0FEE, en-tête de 32 octets, et des enregistrements par entrée incluant le chemin, la date de dernière modification du fichier et — particulièrement utile — un drapeau d'exécution supprimé à partir de Windows 8. Sur Windows 7, un drapeau positionné est une corroboration raisonnable (non absolue) de l'exécution ; ne l'extrapolez pas aux systèmes plus récents, comme expliqué dans le ShimCache prouve-t-il l'exécution.

La transition 8 / 8.1

Windows 8 a introduit l'entrée de longueur variable avec une signature par entrée (00ts), et 8.1 l'a fait passer à 10ts. C'est l'ancêtre structurel du format Windows 10/11 ; un parseur qui gère 8.1 est donc à mi-chemin de gérer 10.

Les analyser sans chaîne d'outils

Le Shimcache Parser détecte automatiquement le magic d'en-tête et bascule vers le bon décodeur pour XP, 2003, Vista, 7, 8, 8.1 et 10/11 — vous pouvez ainsi lire une ruche SYSTEM héritée dans le navigateur sans déployer d'anciens outils. Pour la collecte sur ces systèmes anciens, voir acquérir une ruche SYSTEM.

Pour aller plus loin

Articles connexes