I've noticed that on an unpatched Windows 7 x64 SP1 machine, the _KTHREAD structure ends as follows:

+350 ThreadCounters  : Ptr64 _KTHREAD_COUNTERS
+358 XSaveState       : Ptr64 _XSAVE_STATE

On a version of the machine that is up to date on patches, I see _KTHREAD ending like this:

+350 ThreadCounters  : Ptr64 _KTHREAD_COUNTERS
+358 StateSaveArea   : Ptr64 _XSAVE_FORMAT
+360 XSaveState       : Ptr64 _XSAVE_STATE

The result is that fields in the _ETHREAD structure are shifted by 8 bytes. on the patched machine.

I can't be certain that it was a Microsoft Update (I'm only assuming), but does anyone know which patch causes the update?

At the very least, is there a good method for detecting if a memory image uses one version of KTHREAD or the other?

Any information would be helpful.

Thanks!