标签:存储 Dump THREAD MINIDUMP DESCRIPTOR 线程 MEMORY 格式 ULONG32
七、线程列表流(ThreadListStream)
ThreadListStream流包含线程核心信息。它紧挨着异常信息流(ExceptionStream)。
异常信息流如下
0x678+0n168=0x720。而线程列表流如下
可知偏移是0x720,即证明杂项信息流是紧挨着系统信息流,大小有3796字节。
ThreadListStream包含的数据结构如下:
typedef struct _MINIDUMP_THREAD_LIST { ULONG32 NumberOfThreads; MINIDUMP_THREAD Threads[0]; } MINIDUMP_THREAD_LIST, *PMINIDUMP_THREAD_LIST;
成员如下:
NumberOfThreads
线程数量的个数
Threads
一个 MINIDUMP_THREAD 结构的数组.
我们可知,线程列表流就是MINIDUMP_THREAD的数组流。而MINIDUMP_THREAD结构如下
typedef struct _MINIDUMP_THREAD { ULONG32 ThreadId; ULONG32 SuspendCount; ULONG32 PriorityClass; ULONG32 Priority; ULONG64 Teb; MINIDUMP_MEMORY_DESCRIPTOR Stack; MINIDUMP_LOCATION_DESCRIPTOR ThreadContext; } MINIDUMP_THREAD, *PMINIDUMP_THREAD;
这个结构包含特定线程的信息。成员如下:
ThreadId
线程标识
SuspendCount
线程的挂起计数。如果挂起计数大于零,则线程被挂起;否则,线程不挂起。最大值为MAXIMUM_SUSPEND_COUNT。
PriorityClass
线程的优先级类别
Priority
线程的优先级。
Teb
Stack
一个MINIDUMP_MEMORY_DESCRIPTOR 结构,指向线程栈.
ThreadContext
一个 MINIDUMP_LOCATION_DESCRIPTOR 结构.指向线程上下文
MINIDUMP_MEMORY_DESCRIPTOR结构是描述一定范围的内存。如下
typedef struct _MINIDUMP_MEMORY_DESCRIPTOR { ULONG64 StartOfMemoryRange; MINIDUMP_LOCATION_DESCRIPTOR Memory; } MINIDUMP_MEMORY_DESCRIPTOR, *PMINIDUMP_MEMORY_DESCRIPTOR;
成员如下:
StartOfMemoryRange
内存范围的起始地址。
Memory
一个MINIDUMP_LOCATION_DESCRIPTOR 结构.指向栈信息在文件里的偏移
从以上信息,我们可知,平时我们调试时,执行~*kb等指令的展示的数据主要就来源这个流了。
标签:存储,Dump,THREAD,MINIDUMP,DESCRIPTOR,线程,MEMORY,格式,ULONG32 来源: https://www.cnblogs.com/yilang/p/13850980.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。