五、杂项信息流(MiscInfoStream
)
在系统信息流后紧挨着的就是杂项信息流。而系统信息流信息如下
0xEC+0n56=0x124
而杂项信息流如下:
可知偏移是0x124,即证明杂项信息流是紧挨着系统信息流,大小有1364字节。
MiscInfoStream
包含各种信息。数据结构如下:
typedef struct _MINIDUMP_MISC_INFO_5 { ULONG32 SizeOfInfo; ULONG32 Flags1; ULONG32 ProcessId; ULONG32 ProcessCreateTime; ULONG32 ProcessUserTime; ULONG32 ProcessKernelTime; ULONG32 ProcessorMaxMhz; ULONG32 ProcessorCurrentMhz; ULONG32 ProcessorMhzLimit; ULONG32 ProcessorMaxIdleState; ULONG32 ProcessorCurrentIdleState; ULONG32 ProcessIntegrityLevel; ULONG32 ProcessExecuteFlags; ULONG32 ProtectedProcess; ULONG32 TimeZoneId; TIME_ZONE_INFORMATION TimeZone; WCHAR BuildString[MAX_PATH]; WCHAR DbgBldStr[40]; XSTATE_CONFIG_FEATURE_MSC_INFO XStateData; ULONG32 ProcessCookie; } MINIDUMP_MISC_INFO_5, *PMINIDUMP_MISC_INFO_5; typedef struct _TIME_ZONE_INFORMATION { LONG Bias; WCHAR StandardName[32]; SYSTEMTIME StandardDate; LONG StandardBias; WCHAR DaylightName[32]; SYSTEMTIME DaylightDate; LONG DaylightBias; } TIME_ZONE_INFORMATION, *PTIME_ZONE_INFORMATION, *LPTIME_ZONE_INFORMATION; typedef struct _XSTATE_CONFIG_FEATURE_MSC_INFO { ULONG32 SizeOfInfo; ULONG32 ContextSize; ULONG64 EnabledFeatures; XSTATE_FEATURE Features[MAXIMUM_XSTATE_FEATURES]; } XSTATE_CONFIG_FEATURE_MSC_INFO, *PXSTATE_CONFIG_FEATURE_MSC_INFO;
其实MINIDUMP_MISC_INFO_5是从MINIDUMP_MISC_INFO、MINIDUMP_MISC_INFO_1、MINIDUMP_MISC_INFO_2、MINIDUMP_MISC_INFO_3、MINIDUMP_MISC_INFO_4等结构随着版本的变化发展而来,下面简单介绍下MINIDUMP_MISC_INFO_5结构的成员,
SizeOfInfo
结构的大小,以字节为单位。
Flags1
指示此结构的有效成员的标志。此成员可以是以下一个或多个值。
Value | Meaning |
---|---|
|
ProcessId is used. |
|
ProcessCreateTime, ProcessKernelTime, and ProcessUserTime are used. |
|
ProcessorMaxMhz, ProcessorCurrentMhz, ProcessorMhzLimit, ProcessorMaxIdleState, and ProcessorCurrentIdleState are used. |
ProcessId
进程的标识符。如果Flags1未指定MINIDUMP_MISC1_PROCESS_ID,则此成员未使用。
ProcessCreateTime
进程的创建时间,采用time_t格式。如果Flags1未指定MINIDUMP_MISC1_PROCESS_TIMES,则此成员未使用。
ProcessUserTime
进程在用户模式下执行的时间,以秒为单位。确定进程的每个线程在用户模式下执行的时间,然后将所有这些时间相加以获得该值。如果Flags1未指定MINIDUMP_MISC1_PROCESS_TIMES,则此成员未使用。
ProcessKernelTime
进程在内核模式下执行的时间,以秒为单位。确定进程的每个线程在内核模式下执行的时间,然后将所有这些时间相加以获得该值。如果Flags1未指定MINIDUMP_MISC1_PROCESS_TIMES,则此成员未使用。
ProcessorMaxMhz
系统处理器的最大指定时钟频率,以MHz为单位。如果Flags1未指定MINIDUMP_MISC1_PROCESSOR_POWER_INFO,则此成员未使用。
ProcessorCurrentMhz
处理器时钟频率,以兆赫为单位。此数字是指定的最大处理器时钟频率乘以当前处理器限制。如果Flags1未指定MINIDUMP_MISC1_PROCESSOR_POWER_INFO,则此成员未使用。
ProcessorMhzLimit
处理器时钟频率的限制,以兆赫为单位。此数字是指定的最大处理器时钟频率乘以当前处理器热限制。如果Flags1未指定MINIDUMP_MISC1_PROCESSOR_POWER_INFO,则此成员未使用。
ProcessorMaxIdleState
处理器的最大空闲状态。如果Flags1未指定MINIDUMP_MISC1_PROCESSOR_POWER_INFO,则此成员未使用。
ProcessorCurrentIdleState
处理器的当前空闲状态。如果Flags1未指定MINIDUMP_MISC1_PROCESSOR_POWER_INFO,则此成员将未使用。
ProcessIntegrityLevel
对于属于普通身份验证用户的进程,Windows通常使用“SECURITY_MANDATORY_media_RID”(0x2000),对于提升的进程,通常使用“SECURITY_MANDATORY_HIGH_RID”(0x3000)。
ProcessExecuteFlags
简要说明进程的执行标志。这似乎是由“NtQueryInformationProcess()返回的
ProtectedProcess
进程是否受保护。
TimeZoneId
快照时系统所在位置是否夏令时。可取如下值
`0` if the location does not observe daylight saving time at all. The TIME_ZONE_INFORMATION::StandardName field of #TimeZoneId contains the time zone name.
`1` if the location observes daylight saving time, but standard time was in effect at the time of the snapshot. The TIME_ZONE_INFORMATION::StandardName field of #TimeZoneId contains the time zone name.
`2` if the location observes daylight saving time, and it was in effect at the time of the snapshot. The TIME_ZONE_INFORMATION::DaylightName field of #TimeZoneId contains the time zone name.
TimeZone
有关系统位置的时区的信息。
BuildString[MAX_PATH]
操作系统的“构建字符串”,标识操作系统的特定内部版本的字符串。这个字符串是UTF-16编码的,由UTF-16`NUL`代码单元终止。在Windows 8.1(NT 6.3)上,这是“6.3.9600.17031 (winblue_gdr.140221-1952)
DbgBldStr[40]
小型转储生产者的“构建字符串”,一个标识生成小型转储的模块的字符串文件。这个字符串是UTF-16编码的,并以UTF-16`NUL`代码结尾单位。开Windows 8.1(NT 6.3),可能“dbghelp.i386,6.3.9600.16520”或dbghelp.amd64,6.3.9600.16520“取决于CPU架构。
XStateData
有关存储在CPU特定上下文中的XSAVE托管状态的信息结构。这个信息可用于定位特定于CPU的上下文结构中的状态组件。
ProcessCookie
进程cookie