2023驱动保护学习 -- 通过代码实现驱动加载

简介: 2023驱动保护学习 -- 通过代码实现驱动加载

一、新建一个cpp文件驱动管理

1、通过OpenSCManager获取管理器句柄

管理器句柄 = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);

第一个参数,指向计算机名称,此处为NULL表示指向本机

第二个参数,SCM数据库名称,此用为NULL表示使用默认

第三个参数,使用权限,一般设置为SC_MANAGER_ALL_ACCESS表示所有使用权

2、通过CreateServiceA创建驱动服务

1. 驱动服务句柄 = CreateServiceA(管理器句柄,
2.     驱动名称,
3.     驱动名称,
4.     SERVICE_START,
5.     SERVICE_KERNEL_DRIVER,
6.     SERVICE_DEMAND_START,
7.     SERVICE_ERROR_NORMAL,
8.     完整驱动路径,
9.     NULL,
10.     NULL,
11.     NULL,
12.     NULL,
13.     NULL);

第一个参数,管理器句柄

第二个参数,第三个参数,一般就是驱动的名字

第四个参数,访问权限

第五个参数,加载的服务是驱动程序

第六个参数,驱动程序的start值

第七个参数,驱动程序ErrorControl值

第八个参数,开启服务的用户组

第九个参数,输出验证标签

第十个参数,依赖的服务的名称

第十一个参数,用户账户名称

第十二个参数,用户口令

3、如果驱动已经加载,只需打开即可

if (GetLastError() == ERROR_SERVICE_EXISTS) //如果服务已经存在,直接打开
  {
    驱动服务句柄 = OpenServiceA(管理器句柄, 驱动名称, SERVICE_START);
  }

4、关闭上面的服务

if (驱动服务句柄)
  {
    CloseServiceHandle(驱动服务句柄);
  }
  if (管理器句柄)
  {
    CloseServiceHandle(管理器句柄);
  }

二、新建驱动管理头文件,将上面函数的声明函数,添加进去

BOOL LoadDriver(const  char* 驱动名称, const  char* 驱动路径);

三、添加按钮,并调用该函数,实现加载驱动

void CtestDlg::OnBnClickedButtonJzqd()
{
  LoadDriver("123","123.sys");
}

四、运行效果


目录
相关文章
|
缓存 中间件 流计算
如何解决 Netty Channel.isWritable 返回 false
在 Netty 里,有4个方法用来查询 Channel 的状态:isOpen,isRegistered,isActive,isWritable,其中,isWritable 在并发量很高时会返回很多 false。 isWritable 是什么含义? isWritable:Returns true if and only if the I/O thread will perform the req
3058 0
如何解决 Netty Channel.isWritable 返回 false
Mgo
|
存储 SQL Kubernetes
可观测性革命 - 揭秘OpenObserve开源高性能云原生平台
本文分析OpenObserve 以及其在可观测性方面如何帮助您构建更好的软件并节省观测成本
Mgo
2171 0
|
弹性计算 安全 数据安全/隐私保护
2024年阿里云幻兽帕鲁Palworld联机服务器搭建部署指南,图文教程
近年来,幻兽帕鲁以其独特的游戏魅力,迅速成为玩家们的热门选择。对于许多想要与好友一起体验这款游戏的玩家来说,如何搭建一个稳定的联机服务器成为了他们关注的焦点。今天,我将为大家带来一篇简单易懂的图文教程,让你轻松搭建幻兽帕鲁的联机服务器,与好友们畅快游戏。
|
9月前
|
弹性计算 运维 Cloud Native
认证故事|阿里云新版ACE全球第一人考试经历回顾
认证故事|阿里云新版ACE全球第一人考试经历回顾
|
9月前
|
Oracle 关系型数据库 数据库
【赵渝强老师】Oracle数据库的闪回查询
本文介绍了Oracle数据库的闪回查询(Flashback Query)功能及其实际应用。闪回查询通过`AS OF`子句,结合时间戳或SCN号,可查询历史数据状态,帮助分析数据差异。文中通过具体示例演示了如何使用闪回查询:创建测试表、记录当前SCN号、更新数据并提交事务,最后通过闪回查询获取历史数据。附带的视频和代码块详细展示了操作步骤与结果。
408 4
|
10月前
|
存储 人工智能 算法
《探秘AI绿色计算:降低人工智能硬件能耗的热点技术》
在人工智能快速发展的背景下,硬件能耗问题日益突出。为实现绿色计算,降低能耗成为关键课题。新型硬件架构如CRAM、自旋电子器件和量子计算硬件,以及优化的低功耗芯片设计、3D集成技术和液冷散热技术等,正崭露头角。同时,硬件与软件协同优化,通过模型压缩、算法适配等手段,进一步提升能效。这些技术将推动AI向更绿色、高效的方向发展,助力应对全球气候变化。
548 19
|
11月前
|
机器学习/深度学习 编解码 弹性计算
【实践】操作系统智能助手OS Copilot新功能测评
OS Copilot 是一款致力于深度融合于操作系统的智能助手,它旨在成为用户与操作系统交互的得力助手。通过先进的自然语言处理技术和机器学习算法,OS Copilot 能够理解用户多样化的指令,将复杂的操作系统操作简单化。在日常使用场景中,无论是文件管理、应用程序的操作,还是系统设置的调整,OS Copilot 都能提供高效的支持。例如,在文件管理方面,用户无需手动在层层文件夹中查找文件,只需通过描述文件的大致信息,如创建时间、文件内容关键词等,就能快速定位到目标文件。然而,也存在一些不足,如代码生成时未使用正确后缀名、部分响应时间较长等问题。
284 8
【实践】操作系统智能助手OS Copilot新功能测评
|
10月前
|
JavaScript 前端开发 数据安全/隐私保护
Vue Router 简介
Vue Router 是 Vue.js 官方的路由管理库,用于构建单页面应用(SPA)。它将不同页面映射到对应组件,支持嵌套路由、路由参数和导航守卫等功能,简化复杂前端应用的开发。主要特性包括路由映射、嵌套路由、路由参数、导航守卫和路由懒加载,提升性能和开发效率。安装命令:`npm install vue-router`。
|
达摩院 BI 索引
切割问题【数学规划的应用(含代码)】阿里达摩院MindOpt
本文主要讲述了使用MindOpt工具对切割问题进行优化的过程与实践。切割问题是指从一维原材料(如木材、钢材等)中切割出特定长度的零件以满足不同需求,同时尽可能减少浪费的成本。文章通过实例详细介绍了如何使用MindOpt云上建模求解平台及其配套的MindOpt APL建模语言来解决此类问题,包括数学建模、代码实现、求解过程及结果分析等内容。此外,还讨论了一维切割问题的应用场景,并对其进行了扩展,探讨了更复杂的二维和三维切割问题。通过本文的学习,读者能够掌握利用MindOpt工具解决实际切割问题的方法和技术。
|
SQL 分布式计算 DataWorks
DataWorks操作报错合集之如何解决datax同步任务时报错ODPS-0410042:Invalid signature value
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。