2023驱动保护学习 -- 应用层与驱动层交互操作

简介: 2023驱动保护学习 -- 应用层与驱动层交互操作

一、在驱动入口函数里注册IRP处理函数

  //注册派遣函数,可以用相同的IRP函数处理,也可以单独处理
  驱动对象->MajorFunction[IRP_MJ_CREATE] = IRP处理函数;//相当于应用层CreatFile()操作
  驱动对象->MajorFunction[IRP_MJ_CLOSE] = IRP处理函数;//相当于应用层CloseHandle()操作
  驱动对象->MajorFunction[IRP_MJ_DEVICE_CONTROL] = IRP处理函数;//相当于应用层DeciveIoControl()操作

二、创建IRP处理函数

1、获取栈指针,也就应用层传过来的参数

PIO_STACK_LOCATION irpStackL;
  irpStackL = IoGetCurrentIrpStackLocation(IRP指针);

2、通过switch语句判断进行是什么IRP操作

switch (irpStackL->MajorFunction)
  {
  case IRP_MJ_CREATE: 
  {
    KdPrint(("nxyn:CreateFile操作!!!\n"));
    break;
  }
  case IRP_MJ_CLOSE: 
  {
    KdPrint(("nxyn:CloseHandle操作!!!\n"));
    break;
  }
  }

3、IRP请求的相应处理

IRP指针->IoStatus.Information = 4;//设置操作的字节数
  IRP指针->IoStatus.Status = STATUS_SUCCESS;//返回状态
  IoCompleteRequest(IRP指针, IO_NO_INCREMENT);//完成一个IRP请求
  KdPrint(("nxyn:IRP函数处理完毕"));
  return STATUS_SUCCESS;

三、新建一个MFC程序进行交互

1、设置MFC界面

2、打开驱动代码

设备句柄 = CreateFileW(
    L"\\??\\bucuo",
    GENERIC_READ | GENERIC_WRITE,
    FILE_SHARE_READ | FILE_SHARE_WRITE,
    NULL,
    OPEN_EXISTING,
    FILE_ATTRIBUTE_NORMAL,
    NULL);

3、关闭驱动代码

CloseHandle(设备句柄);

四、运行效果


目录
相关文章
|
JavaScript 前端开发
vue element-ui分页插件 始终保持在页面底部样式
vue element-ui分页插件 始终保持在页面底部样式
466 0
|
4月前
|
人工智能 自然语言处理 Linux
如何获取 OpenAI API 密钥
本教程详细介绍如何注册 OpenAI 账户、获取 API 密钥并部署 GPT-4 模型。内容涵盖访问官网、登录注册、创建密钥、配置 Python 环境及调用 API 的完整流程,并提供示例代码帮助开发者快速上手。
|
存储 监控 安全
网络安全视角:从地域到账号的阿里云日志审计实践
日志审计的必要性在于其能够帮助企业和组织落实法律要求,打破信息孤岛和应对安全威胁。选择 SLS 下日志审计应用,一方面是选择国家网络安全专用认证的日志分析产品,另一方面可以快速帮助大型公司统一管理多组地域、多个账号的日志数据。除了在日志服务中存储、查看和分析日志外,还可通过报表分析和告警配置,主动发现潜在的安全威胁,增强云上资产安全。
894 43
|
安全 Java 关系型数据库
springboot整合springsecurity,从数据库中认证
本文介绍了如何在SpringBoot应用中整合Spring Security,并从数据库中进行用户认证的完整步骤,包括依赖配置、数据库表创建、用户实体和仓库接口、用户详情服务类、安全配置类、控制器类以及数据库初始化器的实现。
1397 3
springboot整合springsecurity,从数据库中认证
|
SQL 关系型数据库 MySQL
一文带你了解MySQL的DDL语句
一文带你了解MySQL的DDL语句
974 1
|
API
langchain 入门指南(二)- 如何跟大模型对话
langchain 入门指南(二)- 如何跟大模型对话
1470 0
|
存储 安全 编译器
【c++】类和对象(四)深入了解拷贝构造函数
朋友们大家好啊,本篇内容带大家深入了解拷贝构造函数
【c++】类和对象(四)深入了解拷贝构造函数
|
SQL 存储 监控
检索服务elasticsearch
【8月更文挑战第21天】
151 0
|
JavaScript Shell 内存技术
npx教程
npx教程
1619 0
|
JavaScript Java Linux
逆向神器Frida
逆向神器Frida
412 0