Amcache vs ShimCache : quand chaque artefact gagne
Amcache et ShimCache (aussi appelé AppCompatCache) sont les
deux artefacts Windows les plus souvent confondus l'un avec l'autre,
car tous deux relèvent de l'infrastructure « Application
Compatibility » et tous deux enregistrent les binaires ayant été sur
un hôte. Ce sont des mécanismes différents, maintenus par des
sous-systèmes Windows différents, avec des limites différentes et une
valeur forensique différente.
Les différences phares :
ShimCache est plus court, plus pauvre, maintenu en kernel et mis à jour par le loader. Amcache est plus long, plus riche, maintenu en mode utilisateur et mis à jour par une tâche planifiée.
Pour la référence Amcache plus large, voir la référence complète Amcache. Pour la question Amcache vs Prefetch (une comparaison différente), voir Amcache vs Prefetch.
Ce que chacun enregistre#
ShimCache / AppCompatCache#
Un blob binaire stocké dans la ruche du registre SYSTEM sous
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\AppCompatCache\AppCompatCache.
C'est maintenu en kernel — chaque fois que le loader touche un
binaire (le charge, l'exécute, ou dans certains cas le stat
simplement), le cache est mis à jour.
Chaque entrée stocke :
- Le chemin complet du fichier.
- Un horodatage de modification (le temps modifié de
$STANDARD_INFORMATIONdu fichier au moment de la mise à jour du cache). - Un drapeau indiquant si le binaire a été exécuté.
- Sur certaines versions de Windows : un horodatage de création d'entrée.
Le cache est flushé vers le registre à l'arrêt, pas en temps réel. Cela produit une particularité critique : sur un système actif, le cache sur disque est périmé jusqu'au prochain arrêt propre. Pour obtenir le ShimCache le plus frais, vous avez besoin d'une image mémoire ou d'un système qui s'est arrêté proprement depuis les événements d'intérêt.
Le cache est également limité en taille :
- Windows 7 / Server 2008 R2 : 1024 entrées.
- Windows 8 / 2012 : 1024 entrées.
- Windows 10 / 11 / 2016+ : 1024 entrées.
Quand la limite est atteinte, les entrées les plus anciennes sont évincées en LRU. Un hôte fortement utilisé peut faire tourner ShimCache en quelques jours.
Amcache#
Une ruche du registre séparée (Amcache.hve) maintenue par la tâche
planifiée Compatibility Appraiser, qui s'exécute environ chaque
jour sur les postes de travail et moins fréquemment sur les serveurs.
La ruche enregistre des milliers d'entrées par hôte avec des
métadonnées riches : hash SHA-1, éditeur, version, date de link,
contexte d'installation. Voir
Structure du registre Amcache pour
le schéma complet.
La différence fondamentale#
| Propriété | ShimCache | Amcache |
|---|---|---|
| Stockage | Ruche SYSTEM, une seule valeur binaire |
Amcache.hve autonome |
| Mainteneur | Loader kernel | Tâche planifiée mode utilisateur |
| Déclencheur de mise à jour | Loader touche le binaire | Scan de l'appraiser |
| Persistance vers disque | À l'arrêt | Continue (avec journaux de transactions) |
| Max entrées | ~1024 | Effectivement non bornée (milliers typiques) |
| Enregistre le hash ? | Non | Oui — SHA-1 des 31 premiers Mio |
| Enregistre éditeur / version ? | Non | Oui |
Enregistre ProgramId ? |
Non | Oui |
| Enregistre données pilote / périphérique ? | Non | Oui (sous-clés pilote + périphérique) |
| Granularité par entrée | Chemin + 1-2 horodatages | Chemin + métadonnées riches + plusieurs horodatages |
| Disponible sur système actif | Périmé (besoin d'arrêt) | Frais |
| Survit à la suppression du binaire | Oui | Oui |
| Disponible en mémoire | Oui (endroit le plus utile) | Oui (moins critique) |
Pour la majorité du travail DFIR, Amcache est l'artefact le plus riche. ShimCache reste essentiel pour des questions spécifiques où sa position côté kernel paie.
Quand ShimCache gagne#
Une poignée de cas où vous voulez ShimCache, pas Amcache :
« Le loader a-t-il touché ce binaire, même s'il ne s'est pas exécuté ? »#
ShimCache enregistre les touches du loader plus agressivement que Amcache n'enregistre la présence. Un binaire brièvement stat par une application mais jamais exécuté et jamais inventorié par l'appraiser peut quand même laisser une trace dans ShimCache.
C'est rare mais pas impossible. ShimCache est le seul artefact qui le capture.
« J'ai une image mémoire mais pas d'image disque »#
ShimCache vit en mémoire kernel en continu et est l'un des artefacts
que le plugin shimcachemem de Volatility extrait proprement.
Amcache est de la donnée de ruche du registre sur disque — pour
l'obtenir depuis la mémoire vous devez extraire la ruche elle-même,
ce qui est plus de travail.
« L'appraiser est désactivé sur cet hôte »#
Les endpoints durcis désactivent parfois le Compatibility Appraiser pour empêcher la télémétrie vers Microsoft. Ces hôtes n'ont aucune activité Amcache, mais le kernel maintient toujours ShimCache (il fait partie du loader, pas de l'appraiser).
« J'ai besoin d'une couverture Windows 10 pré-1709 »#
Le schéma moderne Inventory* dans Amcache n'a atterri que dans
Windows 10 build 1709. Pour les anciens builds 10/8.x, Amcache est
plus pauvre. ShimCache précède Amcache et est disponible de manière
cohérente sur Windows 7 et au-delà.
Quand Amcache gagne#
La plupart du temps. Les cas où Amcache est nettement meilleur :
« Quel est le SHA-1 de ce binaire ? »#
ShimCache : pas de réponse. Amcache : directement dans la colonne
Hash. À elle seule, c'est une raison de faire d'Amcache votre
premier arrêt sur la plupart des enquêtes.
« Qui a publié ce binaire ? »#
ShimCache : pas de réponse. Amcache : Publisher, PublisherName,
ProductName.
« Quand ce binaire est-il apparu pour la première fois sur cet hôte ? »#
ShimCache : un horodatage, mais c'est l'heure de modification du
fichier au moment de la touche du loader, pas l'heure de la touche
elle-même. Utile mais indirect.
Amcache : KeyLastWriteTimestamp est plus proche de « quand Amcache
a-t-il enregistré ceci », ce qui est plus proche de « quand
l'appraiser l'a-t-il vu pour la première fois ». Voir
Horodatages Amcache expliqués.
« Ce binaire est-il lié à une application installée ? »#
ShimCache : pas de données de relation. Amcache : ProgramId se
joint à InventoryApplication pour le contexte produit-installé
complet. Voir
ProgramId Amcache expliqué.
« Hunt cross-hôtes »#
ShimCache : 1024 entrées par hôte, pas de ProgramId, seulement des
chemins. Un hunt cross-hôtes basé sur le hash est impossible depuis
ShimCache seul. Amcache : Hash et ProgramId rendent les pivots
cross-hôtes triviaux. Voir
Mouvement latéral et pivot avec le ProgramId Amcache.
« Preuves de pilotes / périphériques »#
ShimCache : seulement les binaires PE que le loader a touchés.
Amcache : InventoryDriverBinary, InventoryDeviceContainer et
InventoryDevicePnp vous donnent un historique séparé et structuré
de pilotes et de périphériques. Essentiel pour les enquêtes BYOVD et
USB.
Comment ils se corroborent mutuellement#
Lorsque les deux artefacts ont une entrée pour le même binaire, vous obtenez une confirmation multi-source :
- ShimCache dit que le loader l'a touché.
- Amcache dit que l'appraiser l'a inventorié, avec un hash et des métadonnées.
- Prefetch (si présent) dit qu'il s'est réellement exécuté, avec des heures de run.
Si un seul artefact a le binaire, l'absence dans l'autre est elle-même un signal :
- ShimCache seul : le loader l'a touché mais l'appraiser ne l'a jamais inventorié. Raisons possibles : fichier supprimé avant le passage suivant de l'appraiser, fichier dans un chemin que l'appraiser ne scanne pas, appraiser désactivé.
- Amcache seul : l'appraiser l'a inventorié mais le loader ne l'a jamais touché (dans la fenêtre temporelle couverte par le ShimCache actuel). Raisons possibles : fichier présent mais jamais chargé, touche du loader évincée de la limite de 1024 entrées de ShimCache, ShimCache effacé.
Workflow conjoint standard#
- Analyser ShimCache avec
AppCompatCacheParser.exe(Zimmerman). - Analyser Amcache avec
AmcacheParser.exe(Zimmerman). - Charger les deux dans Timeline Explorer.
- Pour chaque entrée du filtre de triage Amcache « PE non signé dans chemin inscriptible par l'utilisateur », vérifier ShimCache pour le même chemin. Si présent, le loader l'a touché ; si absent, présence seule.
- Pour chaque entrée dans ShimCache avec le drapeau executed activé, vérifier Amcache pour les métadonnées hash / éditeur.
- Recroiser les deux avec Prefetch pour la preuve d'exécution.
Table de décision rapide#
| Votre question | ShimCache | Amcache |
|---|---|---|
| Le binaire X était-il sur cet hôte ? | ✓ (chemin uniquement, derniers 1024) | ✓✓ (chemin + métadonnées) |
| Quel est le SHA-1 du binaire X ? | ✗ | ✓ |
| Le binaire X s'est-il exécuté ? | partiel (drapeau executed) | ✗ |
| Quand le binaire X est-il apparu pour la première fois ? | partiel | ✓ |
| Hunt cross-hôtes par contenu ? | ✗ | ✓ |
| Hunt cross-hôtes par application ? | ✗ | ✓ (ProgramId) |
| Preuves pilote / périphérique ? | ✗ | ✓ |
| Couverture sur hôtes durcis/sans appraiser ? | ✓ | ✗ |
| Couverture sur pré-Win10 1709 ? | ✓ | partiel |
| Disponible frais sur système actif ? | ✗ (besoin d'arrêt) | ✓ |
Voir aussi#
- Référence complète Amcache — l'artefact en intégralité.
- Amcache vs Prefetch — l'autre grande comparaison de preuve d'exécution.
- Amcache vs SRUM — preuve d'exécution sur fenêtre longue.
- Amcache pour l'investigation de malware — comment les trois artefacts se combinent dans un playbook réel.
Pour explorer votre propre ruche en parallèle de votre analyse ShimCache, déposez le fichier sur la page d'accueil de l'analyseur — il s'exécute entièrement dans votre navigateur.
Articles liés
- Amcache vs SRUM : présence vs usage de ressources sur fenêtre longue
SRUM suit l'usage de ressources par application sur 30 jours et plus ; Amcache inventorie chaque binaire présent sur disque. Voici comment ils se complètent dans une timeline DFIR Windows.
- Amcache vs Prefetch : ce que chacun prouve vraiment
Amcache enregistre la présence ; Prefetch enregistre l'exécution. Une référence pratique pour savoir quand utiliser chacun, sur quoi ils se recoupent, et comment les combiner dans une timeline DFIR.
- Quelle est la différence entre Amcache et AppCompatCache ?
Amcache est une ruche du registre plus riche, maintenue par l'appraiser, avec hashes et métadonnées. AppCompatCache (ShimCache) est un blob de registre plus petit, maintenu par le loader, avec chemins et horodatages uniquement.
- Comparatif des analyseurs Amcache : AmcacheParser CLI, outil navigateur, Volatility, RegRipper
Comparaison côte à côte des quatre façons d'analyser une ruche Windows Amcache.hve en 2026 — AmcacheParser CLI d'Eric Zimmerman, outil navigateur, Volatility 3 et RegRipper.