纯粹出于学术原因。
是否可以在 C#/.NET 的 windows xp/windows 7 下以编程方式导致 BSOD 发生。
我建议一定有一些肮脏的黑客,或者一些容易被滥用的漏洞来导致这种情况。
我正在寻找一段代码来运行,以保证在有限的时间内出现 BSOD。
杀死进程“csrss.exe”会导致蓝屏死机。
但是您需要管理员权限才能执行此操作。我不确定是否有一种方法可以纯粹使用受限权限来做到这一点。
编辑:
是的,它工作正常。我给自己煮了一个漂亮的小蓝屏:)
System.Diagnostics.Process.GetProcessesByName("csrss")[0].Kill();
用于Process.Start
运行导致 BSOD 的SysInternals NotMyFault工具(它使用潜水员来执行此操作,这是唯一的方法)。
杀死 csrss.exe 目前也可以工作,但这是一种未记录的方式,可能会在未来版本的 Windows 中消失。NotMyFault 使用记录在案且干净的方式来执行此操作。
我曾经在 Windows 7 下遇到“问题”,在调试过程中使用 Ping::Send 方法时导致 BSOD。所以 Debugger::Attach 然后 ping 也可能对你有用。:)
创建一个 ping。杀死程序。即时蓝屏死机由 .net 4 中的 microsoft tcpip.sys 提供。
你会得到一个进程已锁定页面。:)
对于所有版本的 Windows,您可以杀死 svchost.exe,您将看到带有 Critical_Process_Died 的 BSoD
您可以使该过程变得至关重要,然后将其杀死
using System;
using System.Runtime.InteropServices;
然后:
[DllImport("ntdll.dll", SetLastError = true)]
private static extern void RtlSetProcessIsCritical(UInt32 v1, UInt32 v2, UInt32 v3);
System.Diagnostics.Process.EnterDebugMode();
RtlSetProcessIsCritical(1, 0, 0);
System.Diagnostics.Process.GetCurrentProcess().Kill();
通过 ping 本地主机,它会使您的 CPU 过载,从而导致蓝屏死机。