TL;DR. Der ShimCache liegt unter HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\AppCompatCache\AppCompatCache. Windows baut ihn in jeder Session neu im Speicher auf und flusht ihn nur beim sauberen Shutdown in die SYSTEM-Hive — ein harter Neustart kann jüngste Einträge komplett verlieren. Vergessen Sie nicht, SYSTEM.LOG1 / SYSTEM.LOG2 abzuspielen.
Viele ShimCache-Missgeschicke gehen auf ein einziges Missverständnis zurück: Ermittler nehmen an, der Cache werde wie eine Logdatei aktualisiert, mit Einträgen, die im Zuge ihres Entstehens auf die Festplatte geschrieben werden. So funktioniert er nicht. Hier ist genau, wo der ShimCache lebt und wann Windows in ihn schreibt.
Der Registry-Pfad
Der ShimCache lebt in der SYSTEM-Hive unter:
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\AppCompatCache\AppCompatCache
Das letzte AppCompatCache ist ein Wert, kein Unterschlüssel. Seine Daten sind ein einzelner Binär-Blob, dessen Schema je nach Windows-Version variiert — XP, 7, 8, 8.1, 10 und 11 verwenden jeweils ein leicht anderes Layout. Der Binärformat-Walkthrough deckt das moderne Windows-10/11-Schema ausführlich ab.
Sie können denselben Wert offline lesen, indem Sie die SYSTEM-Hive extrahieren — sie liegt unter C:\Windows\System32\config\ — und einen Parser darauf ansetzen. Der Shimcache Parser tut genau das, in Ihrem Browser, ohne die Datei irgendwohin hochzuladen.
Der Trick mit dem „Current"-ControlSet
Windows verwaltet tatsächlich mehrere ControlSets (ControlSet001, ControlSet002, manchmal mehr). Zu jedem Zeitpunkt ist genau einer der aktive, angezeigt durch den Wert HKLM\SYSTEM\Select\Current. CurrentControlSet ist ein Laufzeit-Alias auf den jeweils aktiven.
Beim Offline-Parsen sollten Sie:
HKLM\SYSTEM\Select\Currentlesen (ein DWORD, typischerweise 1 oder 2),- den entsprechenden
ControlSetXXX\Control\Session Manager\AppCompatCache\AppCompatCache-Wert durchgehen, - auf
ControlSet001undControlSet002zurückfallen, fallsSelect\Currentnicht lesbar ist.
Die meisten Parser — dieser Tool inklusive — erledigen das automatisch.
Wann der Cache geschrieben wird
Hier ist der Teil, der überrascht: Während das System läuft, lebt der ShimCache im Arbeitsspeicher. Windows schreibt ihn nur beim sauberen Herunterfahren in die SYSTEM-Hive. Also:
- Ein harter Neustart, Stromausfall, BSOD oder VM-Kill auf Hypervisor-Ebene wirft alle jüngsten Einträge weg, die noch nicht persistiert wurden.
- Eine Live-Triage eines laufenden Systems mit
reg.exeoder RegRipper sieht den zuvor persistierten ShimCache — nicht den, der gerade im Speicher gebaut wird. - Memory-Forensik (z. B. Volatilitys
shimcachemem-Plugin) kann den aktuellen In-Memory-Cache retten, bevor er verloren geht.
Dieses Timing ist der Grund, warum die Dead-Box-Analyse einer Hive die aktuellste Aktivität oft verpasst — und warum Ermittler zu AmCache greifen (der kontinuierlich schreibt — siehe ShimCache vs. AmCache), um die Lücke zu füllen.
Was ist mit dem Registry-Transaktionslog?
Die SYSTEM-Hive wird von Transaktionslog-Dateien begleitet (SYSTEM.LOG1, SYSTEM.LOG2). Sie können ungeflushte Schreiboperationen enthalten, die nie in die Haupt-Hive gelangt sind. Robuste Offline-Parser spielen diese Logs vor dem Lesen des ShimCache ab; wenn Sie Ihre eigene Analyse bauen, berücksichtigen Sie sie — oder nutzen Sie einen Parser, der das tut.
Schnelle Checkliste
- ShimCache-Wert:
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\AppCompatCache\AppCompatCache - Aktives ControlSet ausgewählt via
HKLM\SYSTEM\Select\Current - Im Speicher gehalten, nur beim sauberen Herunterfahren geschrieben — für jüngste Aktivität mit AmCache bestätigen
SYSTEM.LOG*-Transaktionslogs vor dem Parsen abspielen für das aktuellste Bild
Weiterführende Quellen
- Microsoft Learn — Registry hives — kanonische Referenz zu Hive-Dateien und ControlSets.
- Mandiants ShimCacheParser — der ursprüngliche Python-Parser, nützlich als Format-Referenz.
- Velociraptor
Windows.Registry.AppCompatCache— Live-System-Sammlungslogik.