程序化触发BSOD

本文关键字:BSOD 程序化 | 更新日期: 2023-09-27 17:50:38

纯粹是学术原因。

是否有可能在c#/. net中以编程方式导致windows xp/windows 7下的BSOD发生?

我的意思是一定有一些肮脏的黑客,或者一些容易被滥用的漏洞导致了这种情况。

我正在寻找一个代码片段运行,保证在有限的时间内BSOD

程序化触发BSOD

杀死进程"csrss.exe"导致蓝屏。

但是您需要管理员权限才能执行此操作。我不确定是否有一种方法可以在受限的权限下做到这一点。

编辑:

是的,它工作得很好。我给自己做了一个漂亮的小BSOD:)

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。终止程序。由微软的tcpip提供的即时bsod。.net 4中的系统。

您将得到一个进程已锁定页面。:)

对于所有版本的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过载,导致bsod。