Skip to content

Execution

Amcache.hve

Amcache.hve cheat sheet: file and program inventory keys, SHA-1 hashes, PE metadata, timestamps and why an entry alone does not prove execution.

Location
C:\Windows\AppCompat\Programs\Amcache.hve
Proves
A binary was present (path, SHA-1, PE metadata); often, but not always, that it ran
Timestamps
Entry key LastWrite as FILETIME, UTC; PE LinkDate (compile time, UTC); InstallDate string whose format varies by build
Retention
No fixed entry limit; entries age out once the file is gone and a later inventory run refreshes the hive; scheduled tasks bulk-update LastWrite
Access
Administrator; hive locked live: collect with its .LOG files via raw NTFS (KAPE) or a shadow copy
Evidence of
Execution
Type
Registry
Windows
Vista / 78 / 8.11011
KAPE target
Amcache
Velociraptor
Windows.Triage.Targets:Amcache

What it is

Amcache.hve is a standalone registry hive maintained by the Application Experience components (the Microsoft Compatibility Appraiser and related inventory tasks). It keeps an inventory of executables, installed programs, drivers, shortcuts and devices that Windows has seen. Its killer feature for investigators is the SHA-1 hash of each inventoried executable, which survives even when the binary itself has been deleted.

It replaced RecentFileCache.bcf: Windows 8 introduced it, and Windows 7 received it through compatibility updates.

Location

Windows versionPathNotes
7 (with compatibility updates) / 8 / 8.1C:\Windows\AppCompat\Programs\Amcache.hveOlder layout: Root\File\{Volume GUID}\<file reference> and Root\Programs
10 / 11C:\Windows\AppCompat\Programs\Amcache.hveNewer builds use the Root\Inventory* layout
AllAmcache.hve.LOG1, Amcache.hve.LOG2Transaction logs; replay them for a consistent hive

The hive is locked while Windows runs: collect it with raw NTFS access or from a shadow copy.

What it proves

  • Presence of a specific binary at a specific path, with its SHA-1, size, version information and PE link (compile) date.
  • Installed programs (InventoryApplication) with publisher, install date and uninstall string, including software removed since.
  • Drivers (InventoryDriverBinary) with signing status: useful for rootkits and vulnerable-driver abuse.
  • Execution only with corroboration. Research (notably ANSSI's 2019 Amcache analysis) showed that entries are also created by inventory scans of installed software, so an Amcache entry alone is not proof that the file ran. Pair it with Prefetch, BAM or event logs.

Key fields

Newer layout (Root\InventoryApplicationFile\<name|id>):

ValueMeaning
LowerCaseLongPathFull path of the file, lower-cased
FileId0000 followed by the SHA-1 of the file
Name, OriginalFileNameOn-disk name and the PE version-info name (renamed tools stand out)
Publisher, Version, BinFileVersion, ProductNameVersion-information strings
SizeFile size in bytes
LinkDatePE header compile time (attacker-controllable)
ProgramIdLinks the file to an InventoryApplication entry
IsOsComponentWhether Windows considers it part of the OS

Other useful keys: InventoryApplication (installed programs), InventoryApplicationShortcut (Start menu shortcuts), InventoryDriverBinary and InventoryDriverPackage (drivers), InventoryDevicePnp (plug-and-play devices, including USB).

Older layout (Root\File\...): numbered values, for example 15 = full path, 101 = SHA-1, 0 = product name, 1 = company name.

Timestamps

TimestampSet whenFormatPitfalls
Key LastWrite of each file entryEntry created or updated by an inventory passFILETIME, UTCOften close to first execution, but also moves on re-inventory; treat as "seen by Windows at"
LinkDateCompile time in the PE headerUTC stringCan be forged or zeroed; not a file-system time
InstallDate (InventoryApplication)Program installation recordedString, local-time format varies by buildVerify against the SOFTWARE hive Uninstall key
DriverLastWriteTimeLast modification of the driver fileUTCDescribes the driver file, not a load time

Retention and clearing

  • There is no fixed entry limit; entries age out when the corresponding file or program disappears and a later inventory run refreshes the hive, so deleted binaries may persist for a while but not forever.
  • The hive is rewritten by scheduled compatibility tasks, which can update LastWrite times in bulk.
  • The SHA-1 is computed over the first 31,457,280 bytes (30 MB) of the file. For larger files the hash will not match a full-file SHA-1.
  • Deleting or replacing Amcache.hve is possible with administrative rights; look for gaps and for the deletion in the USN journal.

Collection

  • KAPE target: Amcache (hive, .LOG* files and the adjacent *.db files)
  • Velociraptor (Windows.Triage.Targets): Amcache
  • Built-in: the file is locked, so copy it from a shadow copy.
vssadmin list shadows
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\AppCompat\Programs\Amcache.hve* E:\case\

Parsing tools

  • AmcacheParser (Eric Zimmerman): AmcacheParser.exe -f Amcache.hve --csv E:\out -i exports every inventory key to CSV; -i includes entries associated with programs.
  • Registry Explorer (Eric Zimmerman): interactive view with transaction-log replay.
  • RegRipper: amcache plugin for a quick text report.
  • Velociraptor: Windows.Forensics.Amcache and Windows.Detection.Amcache on live endpoints.

Investigation tips

  • Pivot on SHA-1: search the hash in threat-intel sources and across the fleet; the same hash under a different name reveals renamed tools.
  • Compare Name with OriginalFileName: svchost.exe whose original name is procdump is a strong lead.
  • Look for executables in user-writable paths (\Users\Public\, \ProgramData\, \AppData\Local\Temp\) and unsigned drivers in InventoryDriverBinary.
  • Amcache has no user attribution; combine it with BAM/DAM or UserAssist to identify the account.
  • When the binary is gone, the SHA-1 and path still let you tie the case to a file recovered elsewhere ($MFT, Recycle Bin).

Related artifacts

Glossary terms

Guides

All artifacts on one page: cheat sheet