【科普】关于蓝屏二三事

趣味阅

蓝屏这玩意,无论有意无意,相信各位肯定遇到过,而且不止一次。但是!我在下面问你几个问题,你能回答吗?

  1. 蓝屏是啥?
  2. 那行xxoo的代码又是啥意思?
  3. 蓝屏的英文写的是什么玩意?
  4. 能来点有激情的蓝屏吗?

无论你能不能答出来,跟我下去看看吧。

1.什么是蓝屏?

我相信你在读这行问题时,心中一定在呐喊:“编辑又抽了,蓝屏都不知道??”但谁抽了呢,我还真不知道。

  电脑蓝屏,也称蓝屏死机(Blue Screen of Death,简称BSoD)。是指微软Windows系列操作系统在无法从一个灾难性的系统错误中恢复过来时所显示的蓝色屏幕图像。此时用户唯一能做的就是重启系统,这将丢失所有未储存的工作,还有可能破坏文件系统的稳定性。

——转自好搜百科

呐,好搜百科是这样解释的,我不知道你能不能听懂,反正我是醉了。那么,我们说的通俗一点,就是这个系统,遇到了某些不可逆转的错误(比如:打印机没有纸,代码0×0000001C),那咋办?系统为了顾全大局,保护数据,只好毅然自杀。但是你在什么都不知道的情况下,系统突然告诉你:我自杀了。你能接受吗?喂你为什么自杀啊?我们都不知道啊!!

于是,机智的系统留下了一封遗书,告诉你,他为毛要自杀。(但是即便在某些时候,系统也不知道自己为毛要自杀,代码0x00000012

我为什么要告诉你这些?看看上面的图就知道了,一切尽在不言中。

2.那些xxoo的代码是啥意思?

问的好。我也不知道。

有人可能会说:小编你这是坑爹啊。这都不知道你写来作毛?放心,我不是来挑战你们的智商的。因为蓝屏代码这个东西,毕竟是没有什么规律可言。再说我们平常也不会刻意去背,出错了,就上网查呗。

如果你坚持要看的话,我还是让你看的。不过我最好弄一个跳过的按钮。

代码含义

1,0x0000000A:IRQL_NOT_LESS_OR_EQUAL

错误分析:主要是由问题的驱动程序、有缺陷或不兼容的硬件与软件造成的。从技术角度讲, 表

明在内核模式中有级别进程请求(IRQL)访问其没有权限访问的内存地址。

解决方案:请用前面介绍的解决方案中的2、3、5、8、9方案尝试排除,

2、0x00000012:TRAP_CAUSE_UNKNOWN

错误分析:如果遇到这个错误信息,那么很不幸, 因为KeBudCheck分析的结果是错误原因未知。

解决方案:既然微软都帮不上忙,就得靠自己了, 请仔细回想这个错误是什么时候出现的; 第一次

发生时你对系统做了哪些操作; 发生时正在进行什么操作, 从这些信息中找出可能的原因,从而选择相应解决方案尝试排除。

3、0x0000001A:MEMORY_MANAGEMENT

错误分析:这个内存管理错误往往是由硬件引起的, 比如: 新安装的硬件、内存本身有问题等,

解决方案:如果是在安装Windows时出现,有可能是由于你的电脑达不到安装Windows的最小内存和磁盘要求。

4、0x0000001E:KMODE_EXCEPTION_NOT_HANDLED

错误分析:Windows内核检查到一个非法或者未知的进程指令,这个停机码一般是由问题的内存

或是与前面0x0000000A相似的原因造成的,

解决方案:

⑴硬件兼容有问题:请对照前面提到的最新硬件兼容性列表, 查看所有硬件是否包含在该列表中。

⑵有问题的设备驱动、系统服务或内存冲突和中断冲突: 如果在蓝屏信息中出现了驱动程序的

名字,请试着在安装模式或者故障恢复控制台中禁用或删除驱动程序, 并禁用所有刚安装的驱

动和软件, 如果错误出现在系统启动过程中,请进入安全模式, 将蓝屏信息中所标明的文件重命名或者删除。

⑶如果错误信息中明确指出Win32K,sys: 很有可能是第三方远程控制软件造成的,需要从故障

恢复控制台中将对该软件的服务关闭。

⑷在安装Windows后第一次重启时出现:最大嫌疑可能时系统分区的磁盘空间不足或BIOS兼容有问题,

⑸如果是在关闭某个软件时出现的:很有可能时软件本生存在设计缺陷, 请升级或卸载它。

5、0x00000023:FAT_FILE_SYSTEM 0x00000024:NTFS_FILE_SYSTEM

错误分析:0x00000023通常发生在读写FAT16或者FAT32文件系统的系统分区时,而0x0

0000024则是由于NTFS,sys文件出现错误(这个驱动文件的作用是容许系统读写使用。

(NTFS文件系统的磁盘), 这两个蓝屏错误很有可

能是磁盘本身存在物理损坏, 或是中断要求封包(IRP)损坏而导致的。其他原因还包括:硬

盘磁盘碎片过多; 文件读写操作过于频繁,并且

数据量非常大或者是由于一些磁盘镜像软件或杀毒软件引起的, ◇解决方案:

第一步:首先打开命令行提示符,运行"Chkdsk /r"(注:不是CHKDISK,感觉象这个, 但是

它们所指的内容是不一样的)命令检查并修复硬盘错误,如果报告存在坏道(Bad Track),

请使用硬盘厂商提供的检查工具进行检查和修复。

第二步:接着禁用所有即使扫描文件的软件, 比如:杀毒软件、防火墙或备份工具,

第三步:右击C:winntsystem32driversfastfat,sys文件并选择"属性",查看其版本是否

与当前系统所使用的Windows版本相符合。(注:如果是XP,应该是

C:windowssystem32driversfastfat,sys)

第四步:安装最新的主板驱动程序,特别IDE驱动, 如果你的光驱、可移动存储器也提供有

驱动程序, 最好将它们升级至最新版。

6、0x00000027:RDR_FILE_SYSTEM

错误分析:这个错误产生的原因很难判断,不过Windows内存管理出了问题很可能会导致这个停机码的出现,

解决方案:如果是内存管理的缘故, 通常增加内存会解决问题。

7、0x0000002EATA_BUS_ERROR

错误分析:系统内存存储器奇偶校验产生错误,通常是因为有缺陷的内存(包括物理内存、

二级缓存或者显卡显存)时设备驱动程序访问不存在的内存地址等原因引起的, 另外, 硬

盘被病毒或者其他问题所损伤,以出现这个停机码。

解决方案:

⑴检查病毒

⑵使用"chkdsk /r"命令检查所有磁盘分区,

⑶用Memtest86等内存测试软件检查内存。

⑷检查硬件是否正确安装, 比如:是否牢固、金手指是否有污渍,

8、0x00000035:NO_MORE_IRP_STACK_LOCATIONS

错误分析:从字面上理解,应该时驱动程序或某些软件出现堆栈问题。其实这个故障的真正原因应该

时驱动程序本生存在问题, 或是内存有质量问题,

解决方案:请使用前面介绍的常规解决方案中与驱动程序和内存相关的方案进行排除。

9、0x0000003F:NO_MORE_SYSTEM_PTES

错误分析:一个与系统内存管理相关的错误,比如:由于执行了大量的输入/输出操作, 造成内存

管理出现问题:有缺陷的驱动程序不正确地使用内存资源; 某个应用程序(比如:备份软件)被分配了大量的内核内存等,

解决方案:卸载所有最新安装的软件(特别是哪些增强磁盘性能的应用程序和杀毒软件)和驱动程序。

10、0x00000044:MULTIPLE_IRP_COMPLIETE_REQUESTS

错误分析:通常是由硬件驱动程序引起的,

解决方案:卸载最近安装的驱动程序。这个故障很少出现,目前已经知道的是, 在使用这家公司

的某些软件时会出现,其中的罪魁就是Falstaff,sys文件。(作者难道不怕吃官司嘛, 把公司网址公布)

11、0x00000050: PAGE_FAULT_IN_NONPAGED+AREA

错误分析:有问题的内存(包括物理内存、二级缓存、显存)、不兼容的软件(主要是远程控制

和杀毒软件)、损坏的NTFS卷以及有问题的硬件(比如: PCI插卡本身已损坏)等都会引发这个错误,

解决方案:请使用前面介绍的常规解决方案中与内存、软件、硬件、硬盘等相关的方案进行排除。

如果电脑中安装有maxdos(或是用maxdos的启动盘)也可以在命令模式下直接删除C盘的页面文件。

12、0x00000051:REGISTRY_ERROR

错误分析:这个停机码说明注册表或系统配置管理器出现错误,由于硬盘本身有物理损坏或文件

系统存在问题, 从而造成在读取注册文件时出现输入/输出错误,

解决方案:使用"chkdsk /r"检查并修复磁盘错误。

13、0x00000058:FTDISK_INTERNAL_ERROR

错误分析:说明在容错集的主驱动发生错误,

解决方案:首先尝试重启电脑看是否能解决问题,如果不行, 则尝试"最后一次正确配置"进行解决。

14、0x0000005E:CRITICAL_SERVICE_FAILED

错误分析:某个非常重要的系统服务启动识别造成的,

解决方案:如果是在安装了某个新硬件后出新的,可以先移除该硬件, 并通过网上列表检查它是

否与Windows 2K/XP兼容,接着启动电脑, 如果蓝屏还是出现,请使用"最后一次正确配置"来

启动Windows,如果这样还是失败, 建议进行修复安装或是重装。

15、0x0000006F:SESSION3_INITIALIZATION-FAILED

错误分析:这个错误通常出现在Windows启动时,一般是由有问题的驱动程序或损坏的系统文

件引起的,

解决方案:建议使用Windows安装光盘对系统进行修复安装。

16、0x00000076ROCESS_HAS_LOCKED_PAGES

错误分析:通常是因为某个驱动程序在完成了一次输入/输出操作后, 没有正确释放所占有的内存

解决方案:

第一步:点击开始-->;运行:regedt32,找到[HKLMSYSTEMCurrentcontrol setcontrol

session managermemory management],在右侧新建双字节值"TrackLockedPages",值为

1, 这样Windows便会在错误再次出现时跟踪到是哪个驱动程序的问题。第二步:如果再次出

现蓝屏, 那么错误信息会变成:STOP:0x0000000CB(0xY,0xY,0xY,0xY)DRIVER_LEFT

_LOCKED_PAGES_IN_PROCESS其中第四个"0xY"会显示为问题驱动程序的名字, 接着对其

进行更新或删除,第三步:进入注册表,删除添加的"TrackLockedPages",

17、0x00000077:KERNEL_STACK_INPAGE_ERROR

错误分析:说明需要使用的内核数据没有在虚拟内存或物理内存中找到。这个错误常常是磁盘

有问题, 相应数据损坏或受到病毒侵蚀,

解决方案:使用杀毒软件扫描系统; 使用"chkdsk /r"命令检查并修复磁盘错误,如不行则使

用磁盘厂商提供的工具检查修复。

18、0x0000007A:KERNEL_DATA_INPAGE_ERROR

错误分析:这个错误往往是虚拟内存中的内核数据无法读入内存造成的, 原因可能是虚拟内

存页面文件中存在坏簇病毒、磁盘控制器出错、内存有问题。

解决方案:首先用升级为最新病毒库杀毒软件查杀病毒, 如果信息中还有0xC000009C或

0xC000016A代码,那么表示是坏簇造成的, 并且系统的磁盘检测工具无法自动修复,这

时要进入"故障恢复控制台",用"chkdsk /r"命令进行手动修复,

19、0x0000007B:INACESSIBLE_BOOT_DEVICE

错误分析:Windows在启动过程中无法访问系统分区或启动卷。一般发生在更换主板后第

一次启动时, 主要是因为新主板和旧主板的IDE控制器使用了不同芯片组造成的, 有时也

可能是病毒或硬盘损伤所引起的。

解决方案:一般只要用安装光盘启动电脑,然后执行修复安装即可解决问题, 对于病毒则

可使用DOS版的杀毒软件进行查杀(有kv2005DOS版下载), 如果是硬盘本身存在问题,

请将其安装到其他电脑中,然后使用"chkdsk /r"来检查并修复磁盘错误。如果是BIOS设置问题,

只要将BIOS设置IDE模式即可,

20、0x0000007E:SYSTEM_THREAD_EXCEPTION_NOT_HANDLED

错误分析:系统进程产生错误,但Windows错误处理器无法捕获。其产生原因很多, 包括:

硬件兼容性、有问题的驱动程序或系统服务、或者是某些软件,

解决方案:请使用"事件查看器"来获取更多的信息,从中发现错误根源。(发现好像不是解决哦, 看来这里大家要自力更生了!)

21、0x0000007F:UNEXPECTED_KERNEL_MOED_TRAP

错误分析:一般是由于有问题的硬件(比如:内存)或某些软件引起的, 有时超频也会产生这个错误。

解决方案:用检测软件(比如:Memtest86)检查内存,如果进行了超频, 请取消超频,

将PCI硬件插卡从主板插槽拔下来,或更换插槽。另外, 有些主板(比如:nForce2主板)

在进行超频后,南桥芯片过热也会导致蓝屏,

此时为该芯片单独增加散热片往往可以有效解决问题,

22、0x00000080:NMI_HARDWARE_FAILURE

错误分析:通常是有硬件引起的。(似乎蓝屏与硬件错误有不解之缘)

解决方案:如果最近安装了新硬件,请将其移除, 然后试试更换插槽和安装最新的驱动

程序,如果升级了驱动程序, 请恢复后原来的版本; 检查内存金手指是否有污染和损坏

; 扫描病毒; 运行"chkdsk /r"检查并修复磁盘错误;

检查所有硬件插卡已经插牢, 如果以上尝试都无效果,就得找专业的电脑维修公司请求帮助了。

23、0x0000008E:KERNEL_MODE_EXCEPTION_NOT_HANDLED

错误分析:内核级应用程序产生了错误, 但Windows错误处理器没有捕获, 通常是硬件兼容性错误。

解决方案:升级驱动程序或升级BIOS,

24、0x0000009C:MACHINE_CHECK_EXCEPTION

错误分析:通常是硬件引起的。一般是因为超频或是硬件存在问题(内存、CPU、总线、电

源),

解决方案:如果进行了超频,请降下CPU原来频率,检查硬件。

25、0x0000009DRIVER_POWER_STATE_FAILURE

错误分析:往往与电源有关系, 常常发生在与电源相关的操作,比如:关机、待机或休睡,

解决方案:重装系统, 如果不能解决,请更换电源。

26、0x000000A5:ACPI_BIOS_ERROR

错误分析:通常是因为主板BIOS不能全面支持ACPI规范,

解决方案:如果没有相应BIOS升级, 那么可在安装Windows 2K/XP时,当出现

"press F6 if you need to install a third-party SCSI or RAID driver"提示时, 按下F7键,

这样Windows便会自动禁止安装ACPI HAL,而安装Standard PC HAL,

27、0x000000B4:VIDEO_DRIVER_INIT_FAILURE

错误分析:这个停止信息表示Windows因为不能启动显卡驱动, 从而无法进入图形界面,

通常是显卡的问题,或者是存在与显卡的硬件冲突(比如:与并行或串行端口冲突),

解决方案:进入安全模式查看问题是否解决, 如果可以,请升级最新的显卡驱动程序,

如果还不行,则很可能是显卡与并行端口存在冲突, 需要在安全模式按下WIN+break

组合键打开"系统属性",在硬件-->;设备管理器中找到并双击连接打印的LPT1端口的选项

, 在"资源"选项卡中取消"使用自动配置"的勾选,然后将"输入/输出范围"的"03BC"改为"0378",

28、0x000000BE:ATTEMPTED_WRITE_TO_READONLY_MEMORY

错误分析:某个驱动程序试图向只读内存写入数据造成的。通常是在安装了

新的驱动程序, 系统服务或升级了设备的固件程序后,

解决方案:如果在错误信息中包含有驱动程序或者服务文件名称,请根据这

个信息将新安装的驱动程序或软件卸载或禁用。

29、0x000000C2:BAD_POOL_CALLER

错误分析:一个内核层的进程或驱动程序错误地试图进入内存操作,

通常是驱动程序或存在BUG的软件造成的。

解决方案:请参考前面介绍的常规解决方案相关项目进行排除,

30、0x000000CERIVER_UNLOADED_WITHOUT_CANCELLING_PENDING_OPERATIONS

错误分析:通常是由有问题的驱动程序或系统服务造成的。

解决方案:请参考前面介绍的常规解决方案相关项目进行排除,

31、0x000000D1RIVER_IRQL_NOT_LESS_OR_EQUAL

错误分析:通常是由有问题的驱动程序引起的(比如罗技鼠标的Logitech MouseWare 9,

10和9,24版驱动程序会引发这个故障), 同时,有缺陷的内存、损坏的虚拟内存文件、

某些软件(比如多媒体软件、杀毒软件、备份软件、

DVD播放软件)等也会导致这个错误。

解决方案:检查最新安装或升级的驱动程序(如果蓝屏中出现"acpi,sys"等类似文件名,

可以非常肯定是驱动程序问题)和软件; 测试内存是否存在问题; 进入"故障恢复控制台",

转到虚拟内存页面文件Pagefile,sys所在分区, 执行"

del pagefile,sys"命令,将页面文件删除; 然后在页面文件所在分区执行"chkdsk /r"命令;

进入Windows后重新设置虚拟内存。如果在上网时

遇到这个蓝屏, 而你恰恰又在进行大量的数据下载和上传(比如:网络游戏、BT下载),那

么应该是网卡驱动的问题, 需要升级其驱动程序,

32、0x000000EA:THREAD_STUCK_IN_DEVICE_DRIVER

错误分析:通常是由显卡或显卡驱动程序引发的。

解决方案:先升级最新的显卡驱动,如果不行, 则需要更换显卡测试故障是否依然发生,

33、0x000000ED:UNMOUNTABLE_BOOT_VOLUME

错误分析:一般是由于磁盘存在错误导致的,有时也建议检查硬盘连线是否接触不良, 或

是没有使用合乎该硬盘传输规格的连接线,例如ATA-100仍使用ATA-33的连接线, 对低

速硬盘无所谓,但高速硬盘(支持ATA-66以上)的

要求较严格, 规格不对的连线有时也会引起这类没办法开机的故障。如果在修复后,还

是经常出现这个错误, 很可能是硬盘损坏的前兆,

解决方案:一般情况下,重启会解决问题, 不管怎么样都建议执行"chkdsk /r"命令来检

查修复硬盘

34、0x000000F2:HARDWAREINTERRUPT_STORM

错误分析:内核层检查到系统出现中断错误,比如:某个设备在完成操作后没有释放所

占用的中断。通常这是由缺陷的驱动程序造成的,

解决方案:升级或卸载最新安装的硬件驱动程序。

35、0x00000135:UNABLE_TO_LOCATE_DLL

错误分析:通常表示某个文件丢失或已经损坏, 或者是注册表出现错误,

解决方案:如果是文件丢失或损坏,在蓝屏信息中通常会显示相应的文件名, 你可以

通过网络或是其他电脑找到相应的文件,并将其复制到系统文件夹下的SYSTEM32子

文件夹中。如果没有显示文件名, 那就很有可能是注册表损坏,请利用系统还原或是

以前的注册表备份进行恢复,

36、0x0000021A:STATUS_SYSTEM_PROCESS_TERMINATED

错误分析:用户模式子系统, 例如Winlogon或客服服务运行时子系统(CSRSS)已损坏,所

以无法再保证安全性, 导致系统无法启动。有时,当系统管理员错误地修改了用户帐号权限,

导致其无法访问系统文件和文件夹,

解决方案:使用"最后一次正确的配置",如果无效, 可使用安装光盘进行修复安装。

37、STOP 0xC0000221 or STATUS_IMAGE_CHECKSUM_MISMATCH

错误分析:通常是由于驱动程序或系统DLL文件损坏造成的, 一般情况下,在蓝屏中会出现文件名称。——转自好搜百科

 

嗯,大致如此。如果你真要研究,建议你抄在本子上,或者直接打印。

3.蓝屏的英文写的是什么玩意?

嘛,真也不废话了:

蓝屏英文翻译才中文是这样的:

A problem has been detected and windows has been shut down to

prevent damage to your computer.

一个问题已经被发现,并且为了防止伤害到你的电脑windows已经被关闭。

If this is the first time you've seen this stop error screen,restart your computer.

如果你是第一次看到此“停止错误”屏幕,重启你的电脑。

If this screen appears again,follow these steps:

如果此屏幕再一次出现,见下边的步骤:

Check to be sure you have adequate disk space,if a driver is identifi

ed in the stop message,disable the driver or check with the manufactu

rer for driver updates.Try changing video adapters.

检查并确定是否有足够的磁盘空间,如果在停止信息中检测到驱动器,

使驱动器报废或检查制造商的驱动更新。尝试更换显视适配器。

Check with your hardware vendor for any BIOS updates.Disable BIOS

memory options such as caching or shadowing.If you need to use safe Mod

e to remove or disable components,restart your computer,press F8 to select A

dvanced start up options,and then select safe Mode.

检查你的硬件供应商的BIOS(基本输入输出设置)是否有更新文件。使BIOS中的内存

选项为"disable"就如,缓存或..。 如果你要用安全模式来解决或使组成部分失去作用。

重启你的电脑按F8,选择高级启动选项,并选中安全模式。

Technical information

技术信息

***STOP:0X000000**(*** ***......)

--这是你没有提供的蓝屏停机代码。

Beginning dump of physical memory

开始从物理内存中释放

physical memory dump complete

物理释放完成
Contact your system administrator or technical support group for further assistance.

联系你的系统管理员或技术支持组进一步的协助。

===
***STOP:0X000000**(*** ***......)

--这是你没有提供的蓝屏停机代码

4.能来点有激情的蓝屏吗?

有!不过问题是标题得改一改,改成绿屏、红屏什么的

准备工作

我们要修改内核代码,首先就是要打开修改内存中的内核代码的功能。Windows在小于2GB内存的系统上用4KB的内存页来存储内核代码,这样比较方便设置合适的页保护属性。比如内核数据页应该允许读取和写入访问,而内核代码页就只应该允许读取和执行访问。为了提高虚拟地址翻译的速度,Windows在资源充足的系统上使用大内存页(4 MB)。这就是说如果有代码和数据同时存储在一个内存页里,这个内存页就必须允许读取、写入和执行访问。所以为了确保你可以编辑内存页,你可以建议Windows使用大内存页。如果你的系统是Windows XP或者Server 2003,并且内存小于256 MB,或者是Windows Vista或更高版本且内存小于2 GB,在HKLMSystemCurrentControlSetControlSession ManagerMemory Management下建立一个名为LargePageMinimum,类型为REG_DWORD,数据为1的注册表值:

image

为了让你不必在Windows自动重启前手忙脚乱地冲到朋友面前炫耀你的成果,你可以关闭自动重启。在Windows XP和Server 2003系统中,右键单击“我的电脑”,选择“高级”选项卡,单击“启动和故障恢复”中的“设置”按钮。在Windows Vista及更高版本中,右键单击开始菜单中的“计算机”选择“属性”,单击“高级系统设置”,选择“高级”选项卡,单击“启动和故障恢复”中的“设置”按钮。最后,取消选择“自动重新启动”复选框:

SNAGHTML5fc0cb41_thumb2

如果你在用64位 Windows Vista或更高版本,你需要用调试模式启动系统,这样才可以用内核调试器的“本地调试”模式。你可以在开机的时候按F8然后选择“调试模式启动”或者在“系统配置”工具中选择“调试”复选框:

image_thumb31

下面重启并以管理员身份运行调试器(如果开了UAC,以管理员身份运行)。在File菜单中打开“Symbol Search Path”对话框,输入这个字符串:srv*c:symbols*http://msdl.microsoft.com/download/symbols(c:symbols 可以是任意本地目录,用于给调试器存放缓存的符号),这样就可以将调试器符号路径指向微软符号服务器。下面在File菜单中打开“Kernel Debugging”对话框,单击“Local”选项卡,按“确定”按钮:

image_thumb33

接下来的步骤会因你的系统版本而有所不同。

32位Windows XP和Windows Server 2003

这些系统上显示蓝屏的函数是KeBugCheck2。你要找的是这个函数把颜色值传递给填充屏幕背景的函数InbvSolidColorFill的地方。输入“u kebugcheck2”命令来显示函数开头,然后继续输入“u”命令显示更多的内存页,直到你看到对InbvSolidColorFill的调用为止。 (在输入一次“u”之后,你只要一直按回车就可以重复这个命令了)。你大概要显示30-40个内存页才能看到这个调用:

image

在这个调用之前,你会看到一个带有参数4的指令(“push 4”),如上图。选择地址行并按下Ctrl+C以复制这个指令的地址。接下来在调试器命令窗口中输入“eb ”,然后按Ctrl+V粘贴这个地址,然后输入“+1”,然后按回车。调试器会进入内存编辑模式,并从那个颜色代码的地址开始编辑。现在你可以选颜色了,1是红色,2是绿色,你还可以试试别的颜色。只要输入数字然后按两次回车就可以保存修改并退出编辑模式。退出后你的屏幕应该是这个样子:

image_thumb38

64位Windows以及32位Windows Vista及更高版本

在这些版本的Windows里,画蓝屏的函数叫KiDisplayBlueScreen。输入“u kidisplaybluescreen”然后一直输入“u”命令显示函数的内存页,直到你找到对InbvSolidColorFill函数的调用为止。在32位Windows上,你可以按上一节给出的方法来编辑颜色值。在64位系统上,InvbSolidColorFill前的那个指令是传递颜色的指令,所以复制它的地址并输入“eb <地址>+4”进行编辑。调试器会进入内存编辑模式,然后你就可以修改它的值(比如1是红色,2是绿色):

image_thumb42

查看结果

你现在可以准备让系统蓝屏了。如果你用的是64位系统,那可能已经蓝屏了。这是因为Kernel Patch Protection会发现这些修改,然后使系统蓝屏。这样做可以避免一些第三方软件厂商考虑用修改内核代码的方式实现某些功能。不过,系统最多可能会延迟7分钟才蓝屏。要想随时蓝屏,可以运行Notmyfault工具(你可以从《Windows Internals》的相关页面中下载到),然后按下“Do Bug”按钮(为避免数据丢失,请确保你保存了所有文件并关闭了其它程序):

image_thumb45

然后你就会得到一个自选颜色的蓝屏了,比如我选的红屏:

image_thumb47

节日蓝屏

为了增添节日气氛,我还要生成一个节日主题的蓝屏:不仅要修改背景色,还要修改文字颜色。在64位Windows Vista及更高版本下,找到紧跟InvbSolidColorFill函数调用的InvbSetTextColor,并找到将文字颜色传给该函数的指令“move ecx, 0Fh”:

image

0Fh参数表示白色,但你可以用同样的方法改成别的颜色。使用“eb”命令,传入该指令的地址加1。在下图中我设置成了红色(也就是1):

image

这就是我弄出的很有喜庆气氛的蓝屏:

image

节日快乐!
FlowerCode 译自 Mark's Blog

那么,这节的科普也大致如此了。祝大家暑假天天蓝屏快乐

我还没有学会写个人说明!

3 条评论

  1. Qmario

    只看到那个精致的水印

    • A/B★

      :cool: 毫不精致

  2. HUOZO

    蓝个屏都这么逗 :smile:

Qmario进行回复 取消回复

电子邮件地址不会被公开。 必填项已用*标注