工作中遇到一个问题,还请大佬们讲解下是什么原理。
我使用一个64位进程去采集一个32位进程,一开始希望采集到体积小的mini dump,type组合如下
MINIDUMP_TYPE dumpType = static_cast<MINIDUMP_TYPE>(
MiniDumpWithDataSegs |
MiniDumpWithHandleData |
MiniDumpWithProcessThreadData |
MiniDumpWithFullMemoryInfo |
MiniDumpWithThreadInfo |
MiniDumpWithAvxXStateContext
//MiniDumpNormal
); 使用windbg (64 or 32)打开后,有如下错误
Cannot read PEB32 from WOW64 TEB32 00208000 - Win32 error 0n30
0:000> .load wow64exts
0:000> !sw
The current thread doesn't have a guest (WoW) context. 尝试其他的dump type,发现至少得有
MiniDumpWithPrivateReadWriteMemory 使用wow64exts才能成功解析到32位模式下的堆栈。
我还测试了其他组合,例如如果用32位进程去采集32位进程的dump,不需要wow64exts即可分析堆栈。
这其中蕴含的原理是什么呢?32位的进程信息是怎么在dump内存储的?
传播安全知识、拓宽行业人脉——看雪讲师团队等你加入!