是啥让 NTDLL!_KiUserApcDispatcher 跳转到不属于进程中模块的地址?
Posted
技术标签:
【中文标题】是啥让 NTDLL!_KiUserApcDispatcher 跳转到不属于进程中模块的地址?【英文标题】:What makes NTDLL!_KiUserApcDispatcher jump to an address which doesn't belong to a module in a process?是什么让 NTDLL!_KiUserApcDispatcher 跳转到不属于进程中模块的地址? 【发布时间】:2015-03-13 22:40:21 【问题描述】:我正在调试一个崩溃转储,它出现访问冲突异常 (0xC0000005)。 AVE 来自跳转到不属于进程中任何 2 个已加载模块的地址:
在这个过程中这么早会导致这种情况的原因是什么?
似乎该进程正在映射内存 (_ZwCreateSection
) 以加载模块...模块是否以某种方式加载失败,LoadLibrary
成功但模块实际上并未加载?
【问题讨论】:
代码正忙于调度异常。当那个炸弹也爆炸时,你会得出“完全损坏的进程状态”的结论。 调用堆栈的第二部分正在调度,但第一部分在哪里,我猜是什么,映射一个可执行部分? 您的代码是否在崩溃时开始运行?假设它没有,我认为下一个诊断步骤是使用进程监视器在崩溃前检查文件系统和注册表活动。可能是带有损坏的标头的 DLL,或类似的东西。 (或者可能是可执行文件格式的损坏,我猜。) 我认为还没有,但我不确定,因为我只依赖于我对 Windows 上的进程加载和执行的理解。 Procmon 是一个很好的建议,因为它看起来确实是一个外部原因。 【参考方案1】:此行为的原因是防病毒软件 (Norton) 劫持了 DLL 负载。运行GFlags 到debug LoadLibrary 表明mscorlib.dll 库被阻止加载。
【讨论】:
以上是关于是啥让 NTDLL!_KiUserApcDispatcher 跳转到不属于进程中模块的地址?的主要内容,如果未能解决你的问题,请参考以下文章