2

我想确定 eax 寄存器实际指向的位置[堆栈或堆]。在下面的 windbg 输出 !address 输出显示它未分类。

0:014> r
eax=01198ce8 ebx=00000000 ecx=01198bf8 edx=00000000 esi=01196ed8 edi=01198160
eip=0710a501 esp=01e8fdc8 ebp=01e8fe28 iopl=0         nv up ei pl nz na po nc
cs=001b  ss=0023  ds=0023  es=0023  fs=0038  gs=0000             efl=00000202
libmp4v2!MP4GetVideoProfileLevel+0x3bbb:
0710a501 e83eec0000      call    libmp4v2!MP4PrintVideoInfo+0xca2e (07119144)

0:014> d eax
01198ce8  76 69 64 65 00 04 38 00-04 00 02 00 cd 01 09 01  vide..8.........
01198cf8  47 50 41 43 20 49 53 4f-20 56 69 64 65 6f 20 48  GPAC ISO Video H
01198d08  61 6e 64 6c 65 72 00 00-0f 00 04 00 f1 01 08 01  andler..........
01198d18  e8 10 12 07 68 04 38 00-d8 6e 19 01 00 00 00 00  ....h.8..n......
01198d28  64 01 00 00 00 00 00 00-2c 1f 00 00 00 00 00 00  d.......,.......
01198d38  c0 1d 00 00 00 00 00 00-6d 69 6e 66 00 00 38 00  ........minf..8.
01198d48  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
01198d58  f0 86 19 01 ff 00 00 00-00 00 00 00 00 00 00 00  ................

0:014> !address eax


Failed to map Heaps (error 80004005)
Usage:                  <unclassified>
Allocation Base:        01130000
Base Address:           01130000
End Address:            011a1000
Region Size:            00071000
Type:                   00020000    MEM_PRIVATE
State:                  00001000    MEM_COMMIT
Protect:                00000004    PAGE_READWRITE

我想知道这是什么意思??

提前致谢,

4

1 回答 1

0

对我来说,这听起来像是一个将 MP4 视频读入内存的应用程序。有几个指标:

  1. 在内存转储中,我们看到一个“vide”(视频)部分和一个“minf”(媒体信息)部分。MP4 文件后面也可能有“声音”(声音)。

  2. 调用堆栈说明了libmp4v2DLL

关于<unclassified><unknown>在较新版本的 WinDbg 中),我看到以下潜在原因:

  1. 视频文件大于 512 kB,因此通过 Windows 堆管理器进行分配(例如从 C++ 分配)不被认为比直接调用VirtualAlloc(). Sasha Goldshtein 对此进行了描述。
  2. 内存是由 .NET 分配的,它有自己的堆管理器,建立在VirtualAlloc().

另请参阅 SO:什么<unclassified>意思?

于 2017-05-30T20:30:49.327 回答