📌 Introduction
In Windows forensics, Amcache.hve has earned a reputation as a valuable artifact for tracking program executions. Many incident responders and forensic analysts quickly parse Amcache and assume that the timestamps reflect the exact moment a program was executed.
But what if I told you that this assumption is fundamentally wrong?
In this blog, we’ll dig deep into how Amcache actually works, how data gets populated into it, and why relying on Amcache timestamps alone can be misleading. I’ll also share a real-world test I conducted that shows exactly why Amcache should not be trusted for precise execution times.
📚 What is Amcache.hve?
Amcache.hve is a registry hive located at: C:\Windows\AppCompat\Programs\Amcache.hve
Its primary purpose is not forensic tracking, but application compatibility. Windows collects information about executed applications to:
Assess application behavior for OS upgrades.
Help with compatibility issues during Windows updates.
Inventory installed or run programs.
The key thing to remember is:
Amcache was designed for system performance and compatibility, not real-time execution monitoring.
⚙️ How Does Data Get Into Amcache?
Most people believe that when an executable is run, its details are instantly recorded into Amcache. That is not true.
Behind the scenes, Windows uses a scheduled task called Microsoft Compatibility Appraiser to scan the system and update the Amcache database.
Location in Task Scheduler:
Task Scheduler > Microsoft > Windows > Application Experience > Microsoft Compatibility Appraiser
How it works:
It runs on a scheduled basis (daily or during idle times).
It scans installed and executed programs.
It updates Amcache.hve based on its findings.
⚡ Important:
Until the Microsoft Compatibility Appraiser task runs, newly executed programs do not appear in Amcache.hve.
This introduces a delay — sometimes of hours, days, or even weeks — between the execution of a file and its entry into Amcache.
⚠️ Common Misconceptions About Amcache
Here are some misconceptions I’ve seen repeatedly: So if you are parsing Amcache and reporting exact execution times based on its fields like
FirstRunTime
or ProgramIdLastModifiedTime
, you might be misrepresenting the evidence.
🧪 Real-World Experiment: Proving the Flaw
To test how Amcache behaves, I conducted a controlled experiment:
Experiment:
April 15:
I executed a malicious EXE on a Windows machine.Before Midnight (April 15):
I manually shut down the system.
(Remember, the Compatibility Appraiser was scheduled to run at midnight.)April 27:
After a long time, I powered on the system and manually triggered the Compatibility Appraiser task.Observation:
The malicious EXE I had executed on April 15 showed up in Amcache with a timestamp of April 27.
No artifact tied it to the original execution date.
💥 Result:
Amcache timestamp reflected the time the Appraiser ran, not when the file was executed!
This clearly proves that Amcache cannot be used alone to determine the exact time of execution.
🛠️ How to Parse Amcache.hve
There are several tools available to parse Amcache:
But always remember:
⚡ “Timestamps reflect discovery time, not guaranteed execution time.”
✍️ Final Thoughts
Amcache is a valuable artifact — but like any tool, you must understand its limitations to use it correctly.
Blindly trusting Amcache timestamps can lead to wrong conclusions in forensic investigations.
Understanding the background process — the Microsoft Compatibility Appraiser — is crucial for accurate timeline analysis.
🎯Key takeaway:
Artifacts are storytellers — but not every storyteller tells the truth in the moment.
Amcache should be used as one puzzle piece, not the full story.