1

我花了很多时间对 Win32 应用程序进行崩溃调试。我非常想知道的一件事是,如何查找任何地址是否属于堆栈/堆或程序代码部分。是否有可用于此目的的 windbg/ollydbg 插件?或者我必须从内存映射手动到它?前任:

0:000> r
eax=00930264 ebx=008e0000 ecx=41414592 edx=00930000 esi=41414141 edi=008e0441
eip=00407289 esp=0012fae0 ebp=0012faf4 iopl=0         nv up ei pl nz na pe nc
cs=001b  ss=0023  ds=0023  es=0023  fs=0038  gs=0000             efl=00010206
MyApp+0x7289:
00407289 8b1437          mov     edx,dword ptr [edi+esi] ds:0023:41cf4582=????????
0:000> u eip
MyApp+0x7289:
00407289 8b1437          mov     edx,dword ptr [edi+esi]
0040728c 8b4c3704        mov     ecx,dword ptr [edi+esi+4]
00407290 57              push    edi
00407291 e89ae8ffff      call    MyApp+0x5b30 (00405b30)
00407296 897d14          mov     dword ptr [ebp+14h],edi
00407299 5f              pop     edi
0040729a 85c0            test    eax,eax
0040729c 741e            je      MyApp+0x72bc (004072bc)

在这种情况下,我想知道哪个寄存器指向哪个部分(代码/堆栈/堆),以便我可以进一步解决根本原因。

提前致谢。

4

1 回答 1

2
0:000> ?@esi+@edi
Evaluate expression: 36278408 = 02299088
0:000> !address 02299088
 ProcessParametrs 00311020 in range 00310000 00410000
 Environment 02294848 in range 02290000 02390000
    02290000 : 02290000 - 00100000
                    Type     00020000 MEM_PRIVATE
                    Protect  00000004 PAGE_READWRITE
                    State    00001000 MEM_COMMIT
                    Usage    RegionUsageHeap
                    Handle   00310000
于 2013-06-06T17:40:49.327 回答