2

我的应用程序在 MSHTML 工作线程中启动时崩溃了。EXCEPTION_RECORD 给出:

0:066> .exr 0e11f668 
ExceptionAddress: 732019ab (rtutils!AcquireWriteLock+0x00000010)
   ExceptionCode: c0000005 (Access violation)
  ExceptionFlags: 00000000
NumberParameters: 2
   Parameter[0]: 00000008
   Parameter[1]: 732019ab
Attempt to execute non-executable address 732019ab

但是!address显示地址 732019ab 确实是可执行的:

0:066> !address 732019ab
Usage:                  Image
Base Address:           73201000
End Address:            7320a000
Region Size:            00009000
State:                  00001000    MEM_COMMIT
Protect:                00000020    PAGE_EXECUTE_READ
Type:                   01000000    MEM_IMAGE
Allocation Base:        73200000
Allocation Protect:     00000080    PAGE_EXECUTE_WRITECOPY
Image Path:             C:\Windows\SysWOW64\rtutils.dll
Module Name:            rtutils
Loaded Image Name:      rtutils.dll
Mapped Image Name:      
More info:              lmv m rtutils
More info:              !lmi rtutils
More info:              ln 0x732019ab
More info:              !dh 0x73200000

732019ab 的指令是:

0:066> u 732019ab l1
rtutils!AcquireWriteLock+0x10:
732019ab 8d4618          lea     eax,[esi+18h]

为什么在页面标记为 PAGE_EXECUTE_WRITECOPY 的地址上报告 DEP 违规?

4

1 回答 1

0

是的,这似乎不太可能。我没有答案,但可能性列表太长,无法发表评论。

如果我猜的话,我会说某些东西正在使用该页面上的保护标志,但是PAGE_EXECUTE_READ在引发异常之后(或同时)将其放回。首先查看您的代码(或您使用的任何库)是否与VirtualProtect.

如果这没有透露任何信息,我们可以转向其他一些可能性:

  1. 恶意软件

    一些恶意软件喜欢使用钩子/热补丁,并且已知会导致类似的问题。

  2. 有缺陷的防病毒软件

    防病毒应用程序使用许多与恶意软件相同的技巧。如果禁用后问题停止,您已经找到了罪魁祸首,可以考虑更新/更换它。

  3. 一个糟糕的内核驱动程序

    在内核模式下,你可以意外地实现不可能,但绝不会故意。:)

  4. 有故障的 CPU

    超频或冷却不良的 CPU 可能会导致许多不可预知的事情发生。不太可能,但可能。

于 2013-10-21T23:04:53.280 回答