【问题标题】:Can a user mode fault cause a Blue Screen of Death?用户模式故障会导致蓝屏死机吗?
【发布时间】:2013-07-31 07:50:16
【问题描述】:

用户模式故障会导致Blue Screen of Death (BSOD) 吗?是否有可能像双重释放内存这样的内存访问冲突导致蓝屏或仅内核模式异常(如驱动程序异常)导致 Windows 崩溃?

【问题讨论】:

  • "注意 Notmyfault 可执行文件和驱动程序的名称突出了一个事实,即用户模式不能直接导致系统崩溃。Notmyfault 可执行文件只能通过加载驱动程序执行非法操作来导致崩溃它在内核模式下。”来自 windows 内书六版页面 564 notmyfaults 是一个测试应用程序,使用 Myfault.sys 导致蓝屏。

标签: windows debugging bsod


【解决方案1】:

不直接。

直接故障会导致异常和程序崩溃。要导致 BSOD,用户模式应用程序必须直接或间接与内核模式驱动程序通信,该驱动程序可能不够健壮,无法保护自己免受无效用户模式输入的影响。

【讨论】:

    【解决方案2】:

    大多数时候没有,但有一个例外。

    只有在内核模式出现问题(例如,driver page faults at DISPATCH_LEVEL)或硬件错误时才会出现蓝屏(也称为 错误检查)。

    用户模式代码通常不能关闭整个系统(通常做一些不允许的事情会导致程序崩溃或产生某种错误)。

    但是,bug check 0xED 可以直接由用户模式进程引起。如果csrss.exe 进程被杀死(在Windows Vista 及更高版本中wininit.exe 也被杀死),它将蓝屏计算机。

    正如 Mark Russinovich 在 2005 年的文章 Running Windows with No Services 中解释的那样,首先杀死 smss.exe 可以杀死 winlogon.exe 而不会导致 bug check 0xC000021A

    我们使用 Smss.exe 启动 [杀死进程] 的原因是 Smss.exe 会监视 Winlogon 的背面,即它在启动期间创建的进程,因此如果您先终止 Winlogon,Smss.exe 会感到不安并蓝屏机器出现错误,表明 Windows 登录过程意外终止。

    这是用户模式应用程序直接导致蓝屏的唯一情况。

    【讨论】:

      猜你喜欢
      • 2022-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-17
      • 1970-01-01
      • 2016-08-07
      相关资源
      最近更新 更多