【问题标题】:Simulating a BlueScreen模拟蓝屏
【发布时间】:2023-03-21 09:02:01
【问题描述】:

我正在尝试制作一个定期记录一大堆东西的程序。 具体原因是,如果蓝屏,开发人员可以返回并检查大量环境,看看当时发生了什么。

我的问题,他们是导致蓝屏的方法吗? 也许通过 windowsAPI 调用(也许是零内存?)。

Anywhoo,如果您能想出一种方法来导致蓝屏待命,我将不胜感激。

我正在测试这个的计算机被设计成可以接受这样的东西哈哈。

顺便说一句,我使用的语言是 C\C++。 谢谢

【问题讨论】:

  • 加载一个能及时执行非法指令的设备驱动?

标签: c++ windows crash bsod


【解决方案1】:

您可以将机器配置为在击键时崩溃 (Ctrl-ScrollLock)

由于有时这在某些带有 USB 键盘的系统上不起作用,您还可以获取 Windows 调试工具,安装内核调试器,并使用“.crash”命令强制错误检查。

【讨论】:

  • 唯一的缺点是它是一个“假”蓝屏。我不是说假的,因为你可以恢复,但是当你按下键或使用内核调试器时,Windows 中有一个代码路径会特别蓝屏,杀死 csrss 实际上是一个崩溃。
  • 对于键盘选项,崩溃发生在处理中断的驱动程序中——没有比这更不确定的了。 kd 崩溃非常相似 - 使用 Ctrl-C 进入 kd 并且系统可以处于任何状态。 CSRSS 崩溃实际上是由 Windows 中的特定代码引起的。
  • @Michael,它比 CSRSS 更暴力,但仍然不会导致内存损坏等,因此可能对测试不太有效。虽然如果一个人想要变得非常暴力,拔掉插头是有效的:)
【解决方案2】:

为了导致 BSOD,运行在内核模式下的驱动程序需要导致它。如果你真的想这样做,你可以编写一个驱动程序,将 KeBugCheck 暴露给用户模式。

http://msdn.microsoft.com/en-us/library/ms801640.aspx

感谢下面的 Andrew 指出这个实用程序:

http://download.sysinternals.com/files/NotMyFault.zip

【讨论】:

  • SysInternals 提供了一个名为“NotMyFault”的实用程序,如果您不想自己编写,它可以生成崩溃(通过调用KeBugCheckEx 和各种其他方式)。
【解决方案3】:

如果你终止 csrss 进程,你会很快蓝屏。

【讨论】:

  • 每次都会这样吗?还是有点像抛硬币?
  • CSRSS 是一个关键进程 - 系统崩溃时总是会进行错误检查。
【解决方案4】:

如果您想模拟蓝屏等硬崩溃,您几乎必须拔掉电源线。不推荐。

如果发生崩溃,任何未保存到持久性存储的内容都将丢失。如果您想模拟崩溃以记录日志,请在您的记录器中写入一个“终止开关”,以停止日志记录。现在,您可以通过终止日志记录来模拟崩溃,并确保您拥有在发生实际崩溃时想要的数据。

【讨论】:

  • 他们真的不会在计算机上运行其他程序,但我的,所以我不担心数据丢失。我正在使用这台计算机专门进行压力测试。我想要一个真正的蓝屏来保证准确性。
【解决方案5】:

首先,我建议你使用虚拟机来测试这个BSOD。这将允许您保留备份,以防 BSOD 对系统造成一些损害。这里有一个关于如何生成 BSOD simply by pressing CTRL+SCROLLLOCK+SCROLLLOCK 的提示。

是否有一个 Windows API 可以生成一个?不,根据this article。尽管如此,如果您使用无效数据调用某些 API,它们仍然可能导致内核内部崩溃,从而导致您的 BSOD。

【讨论】:

    【解决方案6】:

    我不确定你到底要测试什么。由于您的程序定期运行,因此在系统运行时检查信息是否以您指定的频率转储就足够了?您是否在检查蓝屏后信息是否保留?根据您转储它的方式(以及是否刷新缓冲区),这可能不是必需的。

    【讨论】:

    • 我正在尝试制作一个程序,让开发人员了解导致蓝屏的原因。它通过在特定时间存储大量运行时信息来工作。
    • @dafis -- 我的意思是程序存储信息。由于它是定期存储的,而不是在蓝屏时存储,因此应该足以测试信息是否已存储。我不确定您会从导致蓝屏中获得什么额外好处。
    • @tvan,也许他想看看这些信息是否有助于确定蓝屏的原因?
    【解决方案7】:

    如果您不想编写代码(驱动程序、IOCTL...),您可以使用DiskCryptor。请注意,不需要磁盘加密。

    只需要安装驱动:

    dcinst.exe -设置

    然后使用DC控制台生成一个bsod:

    dccon.exe -bsod

    【讨论】:

      【解决方案8】:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-05-09
        • 1970-01-01
        • 2012-06-02
        • 2021-10-30
        • 2011-07-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多