C/C++实现蓝屏2.0
🚀欢迎互三👉:程序猿方梓燚 💎💎
🚀关注博主,后期持续更新系列文章
🚀如果有错误感谢请大家批评指出,及时修改
🚀感谢大家点赞👍收藏⭐评论✍
前情提要
上次的文章C/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("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,表示程序正常结束。
}
代码详解
首先,通过
#include <Windows.h>
语句引入了 Windows 编程所需的头文件。此头文件不仅广泛而且详尽地涵盖了与 Windows 操作系统进行交互所必需的各种函数、数据结构和常量定义。它就如同构建摩天大楼的基石,为后续程序的开发精心搭建了稳固且不可或缺的基础架构。无论是处理图形界面、文件操作,还是进行网络通信等,都能在此头文件中找到相应的支持。
WinMain
函数作为 Windows 应用程序的关键入口点,具备以下至关重要的参数:
HINSTANCE hInstance
:此参数独特且精确无误地标识了当前应用程序的实例句柄。在 Windows 系统那复杂而精细的运行机制中,它宛如一把万能钥匙,对于资源的有效管理、窗口的精心创建以及众多相关操作起着决定性作用。其重要性不可小觑,是确保应用程序稳定运行和系统资源合理管理的关键标识符。无论是资源的分配、释放,还是窗口的样式、位置等设置,都离不开这个标识符的准确运用。
HINSTANCE hPrevInstance
:在 32 位 Windows 环境中已被确切地废弃,并且始终毫无例外地呈现为NULL
的状态。这意味着它如同一件被时代淘汰的工具,不再具备任何实际的功能和作用。开发者在编写代码时,无需对其进行关注和处理。
LPSTR lpCmdLine
:这一参数用于细致入微且全面地获取用户在命令行中输入的具体参数。它就像一个灵敏的触角,能够捕捉到用户输入的每一个字符和指令。通过对这些参数进行深入透彻的解析和精心巧妙的处理,程序能够依据用户的输入灵活多变且精准无误地执行多样化的逻辑流程或特定操作。从而实现与用户高效且顺畅的交互,满足用户的个性化需求,提供更加智能和便捷的使用体验。
int nCmdShow
:其核心功能是严谨细致地决定应用程序窗口的初始显示方式。它仿佛是一位精准的调度员,能够将窗口的初始状态精准设置为最大化、最小化、正常显示等各种不同的状态。为用户提供了丰富多样的初始窗口展示效果选择,满足不同用户的偏好和使用场景需求。在函数内部,通过一系列复杂而关键的操作与系统底层进行深度且全面的交互:
使用
LoadLibrary
函数动态加载了ntdll.dll
库。ntdll.dll
作为 Windows 内核至关重要且不可或缺的核心组成部分,承载着数量众多且功能强大的底层系统函数。它犹如一座神秘的宝库,蕴含着无尽的系统核心功能。这一加载操作使得程序得以畅通无阻且高效地访问和充分利用这些底层的核心功能,为实现特定的高级且复杂的操作奠定了坚实的基础和创造了可能。紧接着,巧妙且精准地运用
GetProcAddress
函数准确无误地获取了ntdll.dll
库中RtlAdjustPrivilege
和NtRaiseHardError
这两个关键函数的地址。这一过程就像是在茫茫大海中精准定位到珍贵的宝藏坐标,为后续的操作找到了关键的钥匙。随后,精确无误地定义了
unsigned char
类型的变量ErrKill
和无符号长整型变量HDErr
,旨在周密细致地存储后续函数调用过程中可能涉及和产生的各种数据。这些变量如同精心准备的容器,等待着数据的填充和使用。接下来,进行了两次精准且无偏差的函数指针的类型转换,并顺利且高效地执行了相应的函数调用:
对于
RtlAdjustPrivilege
函数,极其准确且恰到好处地传递了参数0x13
、true
、false
和ErrKill
的地址,以实现特定且精细入微的权限调整操作。每一个参数的传递都像是在精心编排一场精密的舞蹈,不容有丝毫差错。对于
NtRaiseHardErr
函数,精心且严谨无误地传递了参数0xc0000233
等以及HDErr
的地址,从而精准且有效地触发相应的硬件错误处理机制。每一个数据的传递都像是在触发一个复杂而精密的机关,必须确保准确无误。最后,通过
return 0;
语句清晰明确且毫无歧义地表示程序正常结束,圆满且顺利地完成了整个应用程序的运行流程。就如同一场精彩演出的完美落幕,给整个程序的执行画上了一个圆满的句号。
好了今天就到这了ByeBye!!!
相关文章:

C/C++实现蓝屏2.0
🚀欢迎互三👉:程序猿方梓燚 💎💎 🚀关注博主,后期持续更新系列文章 🚀如果有错误感谢请大家批评指出,及时修改 🚀感谢大家点赞👍收藏⭐评论✍ 前…...

Unity音频管理器插件AudioToolKit
Unity音频管理器插件AudioToolKit 介绍AudioToolKit介绍具体用法总结 介绍 最近在自己写音频管理器的时候在网上发现了一款比较好用并且功能很全的一个音频管理插件,叫做AudioToolKit的插件。 如果需要的可以直接从我资源中找AudioToolKit。 AudioToolKit介绍 A…...

搜维尔科技:驾驶模拟器背后的技术: Varjo的虚拟/混合现实 (VR/XR)提供独特的优势,最终加快汽车开发创新的步伐
专业驾驶模拟器广泛应用于车辆开发,帮助汽车行业在开发过程的早期做出更好的设计决策。总体目标是为测试驾驶员提供最真实的驾驶体验,包括动态动作和声音,并测试控制算法或辅助系统等功能。环境越真实,驾驶员的体验就越接近最终车…...

OSL 冠名赞助Web3峰会 “FORESIGHT2024”圆满收官
OSL 望为香港数字资产市场发展建设添砖加瓦 (香港,2024 年 8 月 13 日)- 8 月 11 日至 12 日, 由 香港唯一专注数字资产的上市公司 OSL 集团(863.HK)冠名赞助,Foresight News、 Foresight Ventu…...

LeetCode 3148.矩阵中的最大得分:每个元素与其左或上元素之差的最大值(原地修改O(1)空间)
【LetMeFly】3148.矩阵中的最大得分:每个元素与其左或上元素之差的最大值(原地修改O(1)空间) 力扣题目链接:https://leetcode.cn/problems/maximum-difference-score-in-a-grid/ 给你一个由 正整数 组成、大小为 m x n 的矩阵 g…...

主流的开源大型语言模型
本期我们来聊聊目前主流的开源大型语言模型。这些模型就像是AI界的超级英雄,各具特色,为我们的研究和开发提供了强大的力量。🚀 GPT-Neo:这是EleutherAI的杰作,它模仿了OpenAI的GPT-3。GPT-Neo虽然规模小一些…...

【自动驾驶】话题通信
目录 构建发布者构建订阅者编写lanch文件自动启动节点测试运行ROS的目录结构 切换到工作空间的src目录下: 构建发布者 catkin_create_pkg publisher std_msgs rospy roscpp编写发布者程序: // 1.包含头文件 #include "ros/ros.h" #include &…...

【Linux】中的软件安装:深入探索RPM、SRPM与YUM
🐇明明跟你说过:个人主页 🏅个人专栏:《Linux :从菜鸟到飞鸟的逆袭》🏅 🔖行路有良友,便是天堂🔖 目录 一、引言 1、Linux的起源与发展 2、RPM、SRPM与YUM的简要介…...

uniapp自定义请求头信息header
添加请求头:uniapp自定义请求头信息header,如下:添加tenant-id参数 代码...

SpringBoot整合Liquibase
1、是什么? Liquibase官网 Liquibase是一个开源的数据库管理工具,可以帮助开发人员管理和跟踪数据库变更。它可以与各种关系型数据库和NoSQL数据库一起使用,并提供多种数据库任务自动化功能,例如数据库迁移、版本控制和监控。Li…...

虚幻5|给武器添加碰撞检测与伤害
本章内容衔接上两章,需要完成上两章才能用本章内容 虚幻5|角色武器装备的数据库学习(不只是用来装备武器,甚至是角色切换也很可能用到)-CSDN博客虚幻5|普通攻击,使用接口更方便-CSDN博客 如有疑问,可访问…...

RESTful API设计指南:构建高效、可扩展的Web服务
目录 引言 一.RESTful API概述 二.设计原则 2.1. 资源导向 2.2. 使用标准的HTTP方法 2.3. 无状态通信 2.4. 可缓存响应 2.5. 分层系统 2.6. 按需加载代码(可选) 2.7. HATEOAS 三.最佳实践 3.1. 明确资源和子资源 3.2. 使用合适的HTTP状态码 …...

黑马头条vue2.0项目实战(九)——编辑用户资料
目录 1. 创建组件并配置路由 2. 页面布局 3. 展示用户信息 4. 修改昵称 5. 修改性别 6. 修改生日 7. 修改头像 7.1 图片上传预览 7.2 使用纯客户端的方式处理用户头像上传预览 7.3 头像裁切 7.4 纯客户端的图片裁切上传流程 7.5 Cropper.js 图片裁剪器的基本使用 …...

43.【C语言】指针(重难点)(F)
目录 15.二级指针 *定义 *演示 16.三级以及多级指针 *三级指针的定义 *多级指针的定义 17.指针数组 *定义 *代码 18.指针数组模拟二维数组 往期推荐 15.二级指针 *定义 之前讲的指针全是一级指针 int a 1; int *pa &a;//一级指针 如果写成 int a 1; int *pa &a…...

【STM32+HAL】杆球控制系统
一、前言 2017年电赛出了道板球控制系统题目,现写一个简化版本——杆球控制系统,以此记录电赛集训生活。 二、题目分析 最终采取的方案是:OpenMV读取小球的当前位置,并将坐标值传给STM32端,再由32通过电机改变杆的位置…...
用Python实现9大回归算法详解——04. 多项式回归算法
多项式回归 是线性回归的一种扩展,它通过将输入特征的多项式项(如平方、立方等)引入模型中,以捕捉数据中非线性的关系。虽然多项式回归属于线性模型的范畴,但它通过增加特征的多项式形式,使得模型能够拟合非…...

vue打包更新packge.json版本号
VUE项目打包自动更新版本号 此方法只针对 Vue 如果使用其他框架,可以此参照作为参考 一、先看效果 二、创建 buildVersion.js 文件 文件内容 目前只针对3位版本号 递增规则是 每次更新 加一次小版本,10次小版本向前递增一个版本。如:1.0.9 递…...

计算机视觉技术解析:从基础到前沿
第一部分:计算机视觉基础与基本原理 计算机视觉是人工智能领域的一个重要分支,旨在使计算机能够理解和处理图像和视频数据。随着深度学习技术的飞速发展,计算机视觉已经在许多实际应用场景中取得了显著的成果,如图像识别、目标检…...

unity游戏开发003:深入理解Unity中的坐标系
Unity游戏开发 “好读书,不求甚解;每有会意,便欣然忘食。” 本文目录: Unity游戏开发 Unity游戏开发深入理解Unity中的坐标系前言1. 坐标轴2. 左手坐标系3. 世界坐标系 vs. 局部坐标系4. 坐标变换5. 注意事项 总结 深入理解Unity中…...

伊索寓言两则
马和驴 马为自己精美的马具感到骄傲,在大马路上遇见了驴子子正驮着重担挪着步子,挡了路,马儿没法过去,就不耐烦叫道:真想踢你两脚,好让你走快点。驴子沉默不语,但没忘马儿的傲慢。不久后马儿患…...

嵌入式硬件产品开发:编码文件规则
目录 简介 文件内容的一般规则 文件名命名的规则 简介 一个工程是往往由多个文件组成。 这些文件怎么管理、怎么命名都是非常重要的。 文件内容的一般规则 【规则1】每个头文件和源文件的头部必须包含文件头部说明和修改记录。 源文件和头文件的头部说明必须包含的内容和次…...

设计模式 - 组合模式
💝💝💝首先,欢迎各位来到我的博客!本文深入理解设计模式原理、应用技巧、强调实战操作,提供代码示例和解决方案,适合有一定编程基础并希望提升设计能力的开发者,帮助读者快速掌握并灵活运用设计模式。 💝💝💝如有需要请大家订阅我的专栏【设计模式】哟!我会定…...

打靶记录11——Billu_b0x
靶机: https://download.vulnhub.com/billu/Billu_b0x.zip难度: 中(两种攻击路线) 目标: 取得root权限 涉及的攻击方法: 主机发现端口扫描Web信息收集SQL注入(Sqlmap跑不出来)…...

一、在cubemx上配置sd和fatfs示例演示
一、sd和fatfs的配置流程界面 1、选择sd4bits 根据自己的sd卡的硬件插槽进行选择。 2、fatfs配置由于使用的是sd卡所以直接选择sd选项 3、程序中对sd卡的初始化需要进行改动,直接使用默认的参数sd卡是挂载不上的。 4、在sd卡挂载好后,就可以使用文件系统…...

C++ 语言特性02 - 命名空间
一:概述 现代C中的命名空间是什么? C中的命名空间允许用户在命名空间范围内对类、方法、变量和函数等实体进行分组,而不是在全局范围内使用。这可以防止大型项目中的类、方法、函数和变量之间发生命名冲突。命名空间将开发人员编写的代码组织…...

drools规则引擎 规则配置文件drl语法使用案例
前提:环境搭建,参考博文springboot整合drools规则引擎 示例入门-CSDN博客案例1,商城系统消费赠送积分 100元以下, 不加分 100元-500元 加100分 500元-1000元 加500分 1000元 以上 加1000分订单pojo编写 package cn.beijing.model;import lom…...

C++编程:高性能通信组件Capnproto与Protobuf的对比分析
文章目录 0. 概要1. 测试环境2. 测试方法3. 测试结果及分析3.1 延迟测试3.2 吞吐量测试3.3 稳定性测试3.4 一对二测试记录3.5 二对一测试记录3.6 Inter-process 单个点开销分析 4. CapnProto 与 Protobuf 的对比测试总结 0. 概要 本文主要探讨了两种高性能通信组件:…...

【Python读书数据,并计算数据的相关系数、方差,均方根误差】
为了处理Python中的读书数据(假设这里指的是一系列关于书籍阅读量或评分的数据),并计算这些数据的相关系数、方差以及均方根误差(RMSE),我们首先需要明确数据的结构。这里,我将假设我们有一组关…...

垃圾收集器G1ZGC详解
G1收集器(-XX:UseG1GC) G1 (Garbage-First)是一款面向服务器的垃圾收集器,主要针对配备多颗处理器及大容量内存的机器. 以极高概率满足GC停顿时间要求的同时,还具备高吞吐量性能特征. G1将Java堆划分为多个大小相等的独立区域(Region),JVM目…...

AI芯片:高性能卷积计算中的数据复用
随着深度学习的飞速发展,对处理器的性能要求也变得越来越高,随之涌现出了很多针对神经网络加速设计的AI芯片。卷积计算是神经网络中最重要的一类计算,本文分析了高性能卷积计算中的数据复用,这是AI芯片设计中需要优化的重点之一&a…...