驱动保护 -- 通过PID保护指定进程
一、设计界面
1、添加一个编辑框输入要保护的进程PID,并添加两个按钮,一个保护进程,一个解除保护

2、右击编辑框,添加变量

二、驱动层代码实现
1、声明一个受保护的进程PID数组
static UINT32 受保护的进程PID[256] = { 0 };
2、添加PID到保护函数
void 添加PID到保护(UINT32 pid)
{for (size_t i = 0; i < 256; i++){if (受保护的进程PID[i]==0|| 受保护的进程PID[i]==pid){受保护的进程PID[i] = pid;break;}}
}
3、删除PID保护函数
void 删除PID保护(UINT32 pid)
{for (size_t i = 0; i < 256; i++){if (受保护的进程PID[i] == pid){受保护的进程PID[i] = 0;break;}}
}
4、清空PID保护函数
void 清空PID保护()
{memset(受保护的进程PID, 0, sizeof(受保护的进程PID));
}
5、PID是否受保护函数
BOOLEAN PID是否受保护(UINT32 pid)
{for (size_t i = 0; i < 256; i++){if (pid==0){return 0;}if (受保护的进程PID[i] == pid){return TRUE;}}return FALSE;
}
6、将函数在头文件声明一下
void 添加PID到保护(UINT32 pid);
void 删除PID保护(UINT32 pid);
void 清空PID保护();
int PID是否受保护(UINT32 pid);
7、获取PID
UINT32 当前进程PID = PsGetCurrentProcessId();HANDLE PID = PsGetProcessId((PEPROCESS)OperationInformation->Object);if (PID是否受保护(PID)==1){DbgPrint("nxyn:sys pEPROCESS=%p ", OperationInformation->Object);DbgPrint("nxyn:被保护的PID:%d \n", PID);ACCESS_MASK 获取权限 = OperationInformation->Parameters->CreateHandleInformation.OriginalDesiredAccess;ACCESS_MASK 获取新权限 = OperationInformation->Parameters->CreateHandleInformation.DesiredAccess;//将句柄权限清零//让结束进程的功能失效获取权限 &= ~PROCESS_TERMINATE;获取权限 &= ~PROCESS_VM_OPERATION;获取权限 &= ~PROCESS_VM_WRITE;获取权限 &= ~PROCESS_VM_READ;//返回我们修改过的权限 OpenProcessOperationInformation->Parameters->CreateHandleInformation.DesiredAccess = 获取权限;DbgPrint("nxyn:获取权限=%X 获取新权限=%X", 获取权限, 获取新权限);}
8、添加控制码
#define irp添加PID到保护 CTL_CODE(FILE_DEVICE_UNKNOWN, 0x804, METHOD_BUFFERED,FILE_ANY_ACCESS)
#define irp删除PID保护 CTL_CODE(FILE_DEVICE_UNKNOWN, 0x805, METHOD_BUFFERED,FILE_ANY_ACCESS)
9、通过控制码实现添加和删除保护
else if (控制码== irp添加PID到保护){IRP添加PID到保护(IRP指针);}else if (控制码 == irp删除PID保护){IRP删除PID保护(IRP指针);}
10、添加和删除的代码具体实现
void IRP添加PID到保护(PIRP IRP指针)
{ int* 缓冲区 = (int*)IRP指针->AssociatedIrp.SystemBuffer;int 计算结果 = 0;if (缓冲区){UINT32* pPID = (UINT32*)缓冲区;UINT32 pid = pPID[0];添加PID到保护(pid);IRP指针->IoStatus.Information = sizeof(int);//设置操作的字节数IRP指针->IoStatus.Status = STATUS_SUCCESS;//返回状态IoCompleteRequest(IRP指针, IO_NO_INCREMENT);//完成一个IRP请求KdPrint(("nxyn:PID已添加到保护"));}
}void IRP删除PID保护(PIRP IRP指针)
{int* 缓冲区 = (int*)IRP指针->AssociatedIrp.SystemBuffer;int 计算结果 = 0;if (缓冲区){UINT32* pPID = (UINT32*)缓冲区;UINT32 pid = pPID[0];删除PID保护(pid);IRP指针->IoStatus.Information = sizeof(int);//设置操作的字节数IRP指针->IoStatus.Status = STATUS_SUCCESS;//返回状态IoCompleteRequest(IRP指针, IO_NO_INCREMENT);//完成一个IRP请求KdPrint(("nxyn:PID已删除保护"));}
}
三、应用层代码实现
1、添加控制码
#define irp添加PID到保护 CTL_CODE(FILE_DEVICE_UNKNOWN, 0x804, METHOD_BUFFERED,FILE_ANY_ACCESS)
#define irp删除PID保护 CTL_CODE(FILE_DEVICE_UNKNOWN, 0x805, METHOD_BUFFERED,FILE_ANY_ACCESS)
2、双击保护进程按钮
UpdateData(TRUE);//将窗口的数据更新到变量char 缓存区[256];sprintf_s(缓存区, "nxyn:应用程序保护PID控制码为%X\n", irp添加PID到保护);OutputDebugStringA(缓存区);UINT32 输入数据 = m_PID;int 返回数据;DWORD 实际读取字节数;DeviceIoControl(设备句柄,irp添加PID到保护,&输入数据,sizeof(输入数据),&返回数据,sizeof(返回数据),&实际读取字节数,NULL);
3、双击解除进程保护按钮
UpdateData(TRUE);//将窗口的数据更新到变量char 缓存区[256];sprintf_s(缓存区, "nxyn:应用程序删除PID控制码为%X\n", irp删除PID保护);OutputDebugStringA(缓存区);UINT32 输入数据 = m_PID;int 返回数据;DWORD 实际读取字节数;DeviceIoControl(设备句柄,irp删除PID保护,&输入数据,sizeof(输入数据),&返回数据,sizeof(返回数据),&实际读取字节数,NULL);
四、测试应用

相关文章:
驱动保护 -- 通过PID保护指定进程
一、设计界面 1、添加一个编辑框输入要保护的进程PID,并添加两个按钮,一个保护进程,一个解除保护 2、右击编辑框,添加变量 二、驱动层代码实现 1、声明一个受保护的进程PID数组 static UINT32 受保护的进程PID[256] { 0 }; 2…...
spring常用注解(全)
一、前言 Spring的一个核心功能是IOC,就是将Bean初始化加载到容器中,Bean是如何加载到容器的,可以使用Spring注解方式或者Spring XML配置方式。 Spring注解方式减少了配置文件内容,更加便于管理,并且使用注解可以大大…...
Axios请求(对于ajax的二次封装)——Axios请求的响应结构、默认配置
Axios请求(对于ajax的二次封装)——Axios请求的响应结构、默认配置知识回调(不懂就看这儿!)场景复现核心干货axios请求的响应结构响应格式详解实际请求中的响应格式axios请求的默认配置全局axios默认值(了解…...
(三)【软件设计师】计算机系统—CPU习题联系
文章目录一、2014年上半年第1题二、2014年下半年第3题三、2017年上半年第1题四、2009年下半年第1题五、2010年上半年第5题六、2011年下半年第5题七、2011年下半年第6题八、2012年下半年第1题九、2019年上半年第1题十、2010年上半年第1题十一、2011年上半年第1题十二、2016年下半…...
win下配置pytorch3d
一、配置好的环境:py 3.9 pytorch 1.8.0 cuda 11.1_cudnn 8_0 pytorch3d 0.6.0 CUB 1.11.0 你可能觉得pytorch3d 0.6.0版本有点低,但是折腾不如先配上用了,以后有需要再说。 (后话:py 3.9 pytorch 1.12.1 cuda …...
JS字符串对象
、 JS字符串对象 1.1 内置对象简介 在 JavaScript 中,对象是非常重要的知识点。对象可以分为两种:一种是“自定义对象”外一种是“内置对象”。自定义对象,指的是需要我们自己定义的对象,和“自定义函数”是一些道理;内置对象,…...
Linux系统对文件及目录的权限管理(chmod、chown)
1、身份介绍 在linux系统中,对文件或目录来说访问者的身份有三种: ①、属主用户,拥有者(owner)文件的创建者 ②、属组用户,和文件的owner同组的用户(group); ③、其他用…...
半透明反向代理 (基于策略路由)
定义 半透明反向代理一般是指 代理本身对于客户端透明,对于服务端可见。 从客户端视角看,客户端访问的还是服务端,客户端不知道代理的存在。 从服务端视角看,服务端只能看到代理,看不到真实的客户端。 示意图 客户端…...
课前测5-超级密码
目录 课前测5-超级密码 程序设计 程序分析 课前测5-超级密码 【问题描述】 上次设计的“高级密码”被你们破解了,一丁小朋友很不服气! 现在,他又设计了一套更加复杂的密码,称之为“超级密码”。 说实话,这套所谓的“超级密码”其实也并不难: 对于一个给定的字符…...
QML控件--Menu
文章目录一、控件基本信息二、控件使用三、属性成员四、成员函数一、控件基本信息 二、控件使用 import QtQuick 2.10 import QtQuick.Window 2.10 import QtQuick.Controls 2.3ApplicationWindow{visible: true;width: 1280;height: 720;Button {id: fileButtontext: "Fi…...
002:Mapbox GL更改大气、空间及星星状态
第002个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+mapbox中更改大气、空间及星星状态 。 直接复制下面的 vue+mapbox源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方式示例源代码(共71行)相关API参考:专栏目标示例效果 配置方式 1)查看基础设置:…...
2022年第十三届蓝桥杯题解(全)C/C++
A题就是一个简单的进制转化,代码实现如下: #include <bits/stdc.h>using namespace std;const int N 1e5 10;int main() {int x 2022;int a 1;int res 0;while(x) {res (x % 10) * a;a a * 9;x / 10;}cout << res;return 0; } B题有…...
【cmake学习】find_package 详解
find_package 主要用于查找指定的 package,主要支持两种搜索方法: Config mode:查找 xxx-config.cmake或 xxxConfig.cmake的文件,如OpenCV库的OpenCVConfig.cmakeModule mode:查找Findxxx.cmake文件,如Ope…...
WEB攻防-通用漏洞PHP反序列化POP链构造魔术方法原生类
目录 一、序列化和反序列化 二、为什么会出现反序列化漏洞 三、序列化和反序列化演示 <演示一> <演示二> <演示二> 四、漏洞出现演示 <演示一> <演示二> 四、ctfshow靶场真题实操 <真题一> <真题二> <真题三> &l…...
Baumer工业相机堡盟工业相机如何通过BGAPISDK里的图像处理库进行图像转换(C++)
Baumer工业相机堡盟工业相机如何通过BGAPI SDK进行图像转换(C)Baumer工业相机Baumer工业相机的SDK里图像格式转换的技术背景Baumer工业相机通过BGAPI SDK进行图像转换调用BGAPI SDK的图像转换库ImageProcessor调用BGAPI SDK建立图像调用BGAPI SDK转换图像…...
JD开放平台接口(获得JD商品详情, 按关键字搜索商品,按图搜索京东商品(拍立淘), 获得店铺的所有商品,获取推荐商品列表, 获取购买到的商品订单列表)
参数说明 通用参数说明 url说明 https://api-gw.onebound.cn/平台/API类型/ 平台:淘宝,京东等, API类型:[item_search,item_get,item_search_shop等]version:API版本key:调用key,测试key:test_api_keysecret:调用secret,测试secret:(不用填写…...
上海亚商投顾:沪指震荡反弹 游戏、传媒概念股再度大涨
上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 市场情绪大小指数今日走势分化,沪指向上震荡反弹,创业板指一度跌近1%,黄白二线大幅背离。…...
C/C++ 玩转StoneValley库:从入门到精通
C/C 玩转StoneValley库:从入门到精通引言(Introduction)StoneValley库简介(Overview of StoneValley Library)为什么要学习StoneValley库(Why Learn StoneValley Library in C)StoneValley库安装…...
CentOS7-部署Tomcat并运行Jpress
1. 简述静态网页和动态网页的区别。 2. 简述 Webl.0 和 Web2.0 的区别。 3. 安装tomcat8,配置服务启动脚本,部署jpress应用。1、简述静态网页和动态网页的区别 静态网页: 请求响应信息,发给客户端进行处理,由浏览器进…...
菜鸟程序员的3年心酸逆袭之旅!今天你对我爱搭不理,明天我让你高攀不起!
多年前我以一个菜鸟的身份 进入了一家创业公司 我原本以为公司是这样的 但是实际上是这样的 我进去时 我们部门除开部门老大还有我 也只有我 所以我就这样开始了我的程序员生涯 开始了我的苦逼技术 公司是做电商网站的 因为我是一个菜鸟 所以我接到的第一个任务 就是做一个网页…...
别再只用#if DEBUG了!C#预处理器指令的5个实战妙用(含#warning、#pragma避坑)
别再只用#if DEBUG了!C#预处理器指令的5个实战妙用(含#warning、#pragma避坑) 在C#开发中,预处理器指令往往被简化为#if DEBUG的单一用途,这就像只把瑞士军刀当作开瓶器使用。实际上,这套工具能在代码质量管…...
手把手教你解决HarmonyOS项目中的hvigor版本冲突问题(含API8/9兼容方案)
HarmonyOS开发实战:彻底解决hvigor版本冲突与API兼容性问题 上周团队新来的工程师小王在调试P40设备时突然惊呼:"这报错太诡异了!明明代码没问题,为什么安装包死活装不上?"我凑近一看,控制台正显…...
「码动四季·开源同行」golang:负载均衡如何提高系统可用性?
负载均衡能够将大量的请求,根据负载均衡算法,分发到多台服务器上进行处理,使得所有服务器负载都维持在高效稳定的状态,以提高系统的吞吐量。此外,多个服务实例组成的服务集群,消除了单点问题,当…...
Unity 6升级后频繁闪退?别慌,这8个D3D11崩溃的修复方法亲测有效
Unity 6升级后D3D11崩溃全攻略:从快速修复到深度优化 刚升级到Unity 6的开发者们,是否正被突如其来的编辑器崩溃搞得焦头烂额?那些令人抓狂的"D3D11设备丢失"弹窗,不仅打断工作流,还可能让宝贵项目进度陷入停…...
TradingAgents-CN本地化部署实战指南:多智能体金融框架避坑策略
TradingAgents-CN本地化部署实战指南:多智能体金融框架避坑策略 【免费下载链接】TradingAgents-CN 基于多智能体LLM的中文金融交易框架 - TradingAgents中文增强版 项目地址: https://gitcode.com/GitHub_Trending/tr/TradingAgents-CN 一、问题发现&#x…...
OpenCode效果实测:基于Qwen3-4B的代码生成质量与速度展示
OpenCode效果实测:基于Qwen3-4B的代码生成质量与速度展示 1. 项目概览与技术背景 OpenCode是2024年开源的AI编程助手框架,采用Go语言开发,主打"终端优先、多模型、隐私安全"的设计理念。该项目将大语言模型(LLM)包装成可插拔的Ag…...
Qwen2.5-14B-Instruct+Pixel Script Temple:高校戏剧系AI辅助教学实战案例
Qwen2.5-14B-InstructPixel Script Temple:高校戏剧系AI辅助教学实战案例 1. 项目背景与价值 在高校戏剧教育领域,剧本创作一直是教学难点。传统教学模式下,学生需要花费大量时间在格式规范、基础场景构建等基础性工作上,而教师…...
主体代码分析
一、整体架构分析这个程序是一个图片管理工具,采用MVC模式的变体,分为:UI层:界面定义(ui_image_manager.py,由Qt Designer生成)逻辑层:当前文件的业务逻辑业务层:busines…...
2026年实测10款降AI工具:毕业论文降AIGC哪款最靠谱?
2026年毕业季临近,降低论文AI生成痕迹、通过学校AIGC检测已经成为所有毕业生的必过关卡。但当前降AI工具市场鱼龙混杂:不少用户花了高价处理,AI率却纹丝不动;还有的工具改完的论文语句生硬、逻辑混乱,反而过不了答辩。…...
CLIP ViT-H-14多场景适配方案:教育题库图像索引、医疗报告配图推荐、设计素材库检索
CLIP ViT-H-14多场景适配方案:教育题库图像索引、医疗报告配图推荐、设计素材库检索 1. 项目概述 CLIP ViT-H-14图像编码服务是基于CLIP ViT-H-14(laion2B-s32B-b79K)模型的图像特征提取解决方案。这项服务通过RESTful API和Web界面两种方式,为不同行业…...
