(三)(Driver)驱动开发之双机调试环境搭建及内核驱动的运行

news2024/11/17 6:26:34

文章目录

  • 1. 驱动开发环境搭建
  • 2. 驱动开发新建项目及项目属性配置和编译
  • 3. 双机调试环境搭建
    • 3.1 安装虚拟机VMware
    • 3.2 配置Dbgview.exe工具
    • 3.3 基于Windbg的双机调试
  • 4. 内核驱动的运行
    • 4.1 临时关闭系统驱动签名校验
    • 4.2 加载驱动

1. 驱动开发环境搭建

请参考另一篇:https://blog.csdn.net/qq_41273999/article/details/133341733

2. 驱动开发新建项目及项目属性配置和编译

请参考另一篇:https://blog.csdn.net/qq_41273999/article/details/133376458

3. 双机调试环境搭建

3.1 安装虚拟机VMware

准备好安装包,勾选将VMware Workstation控制台工具添加到系统PATH。

在这里插入图片描述

输入秘钥:ZF71R-DMX85-08DQY-8YMNC-PPHV8,如果失效,勾选试用30天。

在这里插入图片描述

下载完成后,以管理员身份打开VMware,新建虚拟机,选择自定义:

在这里插入图片描述

未提及页面默认下一步

选择稍后安装操作系统:

在这里插入图片描述

选对应要安装的系统

在这里插入图片描述

系统安装路径自己设定,但不能安装在VMware文件路径下

在这里插入图片描述

改为BIOS引导设备:

在这里插入图片描述

将虚拟磁盘拆分成多个文件:

在这里插入图片描述

自定义硬件:

在这里插入图片描述

选择你的ISO映像文件路径:(系统安装镜像文件)

在这里插入图片描述

完成。开启此虚拟机:

在这里插入图片描述

安装你的操作系统:

在这里插入图片描述

在虚拟机系统中安装VMWare Tool:(在虚拟机选项卡的下拉菜单中)

安装该工具后才能实现主机与虚拟机之间的文件共享,支持自由拖拽的功能

在这里插入图片描述

3.2 配置Dbgview.exe工具

安装好VMWare之后就可以把Dbgview.exe工具复制到虚拟机系统中:

Dbgview是windows下的一款调试工具,可以捕获程序输出的日志,分为64位和32位,支持应用层和内核层的日志捕获,利用它排除bug是个不错的选择。一般程序日志记录可以输出到文件进行查看,但是使用Dbgview不会自动输出到文件,它的日志信息是驻留在进程内存中。

该工具可以很方便的观察DbgPrint的日志。

在 “Capture” 菜单中,可以选择三种不同的日志记录模式:

  • Capture Win32: 监听所有应用程序产生的调试输出。
  • Capture Global Win32: 监听全局系统级别的调试输出。
  • Capture Kernel: 监听内核级别的调试输出。

开始监听并显示日志:点击 “Capture” 菜单中的 “Start”,Dbgview 将开始监听相应模式下产生的调试输出信息,并将其实时显示在窗口中。

过滤和配置选项:在 “Edit” 菜单中,你可以设置过滤器来仅显示特定进程或线程生成的调试信息。此外,你还可以配置其他选项,如字体、颜色等。

停止监听和保存日志:当你需要停止监听时,在 “Capture” 菜单中点击 “Stop”。如果想要保存当前窗口中显示的日志内容,可以选择 “Log to File” 或者 “Log to Pipe”。

Dbgview 提供了一种方便的方式来查看和分析应用程序的调试输出信息,特别适合于调试和故障排除。请注意,使用 Dbgview 需要以管理员权限运行,并且在某些情况下可能会受到安全软件的阻止。

在这里插入图片描述

在虚拟机中以管理员身份运行该工具,在菜单上选择Capture,勾选如下选项:

查看内核日志

在这里插入图片描述

3.3 基于Windbg的双机调试

选用COM口作为连接

在虚拟机系统中,以管理员权限打开cmd输入:

Bcdedit /debug on 回车
Bcdedit /dbgsettings serial baudrate:115200 debugport:1 回车

在这里插入图片描述

  配置完成后,请关闭虚拟机内的操作系统,然后在Vmware的配置界面,新增一个串口设备,设置该串口使用“命名管道”,名字为:\.\pipe\com_1 ,具体配置如下图所示:
在这里插入图片描述

到此为止,被调试机所需设置已全部完成。

接下来开始配置Windbg

在调试机中(自己主机)运行Windbg工具:

选择File下的Kernel Debugging,配置COM口

在这里插入图片描述

配置完成,开启虚拟机,打开自己主机Windbg,启动后就会去连接被调试机器。

4. 内核驱动的运行

  驱动的运行通过服务来实现,微软规定,驱动文件必须经过微软的数字签名后,才可以运行在64位系统上。开发的驱动没有签名,需要加载运行就要临时关闭系统驱动签名校验。

4.1 临时关闭系统驱动签名校验

Windows 7:开机在键盘按下F8,选择禁用驱动程序签名强制。

Windows 10+:在高级启动中设置,具体操作为:“开始菜单”-“设置”-“更新与安全”-“恢复”,在高级启动下点击“立即重启”按钮,然后在出现的界面中选择“疑难解答”-“高级选项”-“启动设置”,点击“重启”按钮,系统开始重启,在重启过程中会显示启动选项,在键盘上输入数字7,即选择“禁用驱动程序强制签名”。
在这里插入图片描述

4.2 加载驱动

在虚拟机系统中临时关闭系统驱动签名校验,然后把生成的.sys驱动放到虚拟机系统的C盘下,接着在虚拟机系统内使用管理员权限运行CMD
(1)创建服务,注册驱动:sc create FirstDriver binPath= “c:\FirstDriver.sys” type= kernel

请注意上面命令,等号(=)后面需要有一个空格,FirstDriver是服务名,binPath后面是要加载的驱动的路径

(2)启动服务:sc start FirstDriver

出现如下界面说明你的驱动成功加载:

在这里插入图片描述
如果出现error,说明你未禁用驱动签名

(3)停止驱动服务:sc stop FirstDriver

(4)删除已注册和创建的服务:sc delete FristDriver

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1125379.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Mysql中MyISAM和InnoDB 引擎的区别

MyISAM 和 InnoDB 都是 Mysql 里面的两个存储引擎。 在 Mysql 里面,存储引擎是可以自己扩展的,它的本质其实是定义数据存储的方式以及数据读取的实现逻辑。而不同存储引擎本身的特性,使得我们可以针对性的选择合适的引擎来实现不同的业务场景…

初识Java 15-1 文件

目录 文件和目录路径 选择Path的片段 分析Path 添加或删除路径片段 目录 文件系统 监听Path 查找文件 读写文件 本笔记参考自: 《On Java 中文版》 更多详细内容请查看官方文档。 Java 7优化了Java的I/O编程,具体的表现就是java.nio.file。其中…

【王道代码】【2.3链表】d3

关键字: 奇偶序号拆分、a1,b1,a2,b2...an,bn拆分a1,a2...,bn,...b2,b1、删除相同元素

以人物画像谈测试员如何半道介入一个新项目

最近在带新人了解项目,这已经不是第一次带新人,由此引发了我关于新进项目的测试人员如何能够快速介入一个新项目的思考。这里我特指的是项目已经运行一段周期,新进员工或其他项目测试人员中途进入该项目的情况。对于项目一启动,测…

Apache Doris (四十六): Doris数据更新与删除 - 批量删除

🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。 🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹哥教你大数据个人主页-哔哩哔哩视频 目录

分享一个python无人超市管理系统django项目实战源码调试 lw 开题

💕💕作者:计算机源码社 💕💕个人简介:本人七年开发经验,擅长Java、Python、PHP、.NET、微信小程序、爬虫、大数据等,大家有这一块的问题可以一起交流! 💕&…

文件存储空间管理(空闲表法,空闲链表法,位示图法,成组链表法)

1.存储空间的划分与初始化 1.文件卷(逻辑卷)的概念 存储空间的划分:将物理磁盘划分为一个个文件卷(逻辑卷、逻辑盘). 2.目录区与文件区 存储空间的初始化:将各个文件卷划分为目录区、文件区。 目录区包含文件目录、空闲表、位示图、超级…

嵌入式养成计划-46----QT--简易版网络聊天室实现--QT如何连接数据库

一百一十九、简易版网络聊天室实现 119.1 QT实现连接TCP协议 119.1.1 基于TCP的通信流程 119.1.2 QT中实现服务器过程 使用QTcpServer实例化一个服务器对象设置监听状态,通过listen()函数,可以监听特定的主机,也可以监听所有客户端&#x…

Unity读取写入Excel

1.在Plugins中放入dll,118开头的dll在Unity安装目录下(C:\Program Files\Unity\Editor\Data\Mono\lib\mono\unity) 2.写Excel public void WriteExcel(){//文件地址FileInfo newFile new FileInfo(Application.dataPath "/test.xlsx…

v-on 可以监听多个方法吗?

目录 ​编辑 前言:Vue 3 中的 v-on 指令 详解:v-on 指令的基本概念 用法:v-on 指令监听多个方法 解析:v-on 指令的优势和局限性 优势 局限性 **v-on 指令的最佳实践** - **适度监听**: - **方法抽离**&#x…

【并发编程】多线程读写同一变量的并发问题(并发编程启动)

📫作者简介:小明java问道之路,2022年度博客之星全国TOP3,专注于后端、中间件、计算机底层、架构设计演进与稳定性建设优化,文章内容兼具广度、深度、大厂技术方案,对待技术喜欢推理加验证,就职于…

《动手学深度学习 Pytorch版》 10.1 注意力提示

10.1.1 生物学中的注意力提示 “美国心理学之父” 威廉詹姆斯提出的双组件(two-component)框架: 非自主性提示:基于环境中物体的突出性和易见性 自主性提示:受到了认知和意识的控制 10.1.2 查询、键和值 注意力机制…

一款功能强大的音乐曲谱软件Guitar Pro 8 .1.1for Mac 中文破解版

Guitar Pro 8 .1.1for Mac 中文破解版是一款功能强大的音乐曲谱软件,非常适合学习如何玩,改进技巧,重现喜爱的歌曲或陪伴自己。可以帮助我们进行吉他的学习、绘谱与创作,它包含了几乎所有的吉他现有指法及音色,在做弹拨…

C语言求 3*3 矩阵对角线之和

完整代码&#xff1a; // 求 3*3 矩阵对角线之和 #include<stdio.h>int main() {int n3;int arr[3][3];// 输入矩阵printf("请输入矩阵的元素:\n");for (int i 0; i < n; i){for (int j 0; j < n; j){scanf("%d", &arr[i][j]);}}int su…

OpenCV官方教程中文版 —— 图像金字塔

OpenCV官方教程中文版 —— 图像金字塔 前言一、原理二、使用金字塔进行图像融合 前言 • 学习图像金字塔 • 使用图像创建一个新水果&#xff1a;“橘子苹果” • 将要学习的函数有&#xff1a;cv2.pyrUp()&#xff0c;cv2.pyrDown()。 一、原理 一般情况下&#xff0c;我…

【Ubuntu18.04】激光雷达与相机联合标定(Livox+HIKROBOT)(一)

LivoxHIKROBOT联合标定 引言1 海康机器人HIKROBOT SDK二次开发并封装ROS1.1 介绍1.2 安装MVS SDK1.3 封装ROS packge 2 览沃Livox SDK二次开发并封装ROS3 相机雷达联合标定3.1 环境配置3.1.1 安装依赖——PCL 安装3.1.2 安装依赖——Eigen 安装3.1.3 安装依赖——Ceres-solver …

计算机视觉-数学基础*变换域表示

被研究最多的图像&#xff08;或任何序列数据&#xff09;变换域表示是通过傅 里叶分析 。所谓的傅里叶表示就是使用 正弦函数的线性组合来表示信号。对于一个给定的图像I(n1,n2) &#xff0c;可以用如下方式分解它&#xff08;即逆傅里叶变换&#xff09;&#xff1a; 其中&a…

浅谈APP自动化测试工具主要优势

移动应用程序已经成为我们日常生活和商业活动的重要组成部分。随着用户对应用性能、稳定性和用户体验的需求不断增加&#xff0c;开发人员不得不寻找方法来确保他们的应用在各种情况下都能正常运行。这就引入了自动化测试工具&#xff0c;这些工具通过自动执行测试用例来检查应…

openGauss学习笔记-107 openGauss 数据库管理-管理用户及权限-三权分立

文章目录 openGauss学习笔记-107 openGauss 数据库管理-管理用户及权限-三权分立107.1 默认的用户权限107.2 三权分立较非三权分立权限变化说明 openGauss学习笔记-107 openGauss 数据库管理-管理用户及权限-三权分立 默认权限机制和管理员两节的描述基于的是openGauss创建之初…

2023-10-23 LeetCode每日一题(老人的数目)

2023-10-23每日一题 一、题目编号 2678. 老人的数目二、题目链接 点击跳转到题目位置 三、题目描述 给你一个下标从 0 开始的字符串 details 。details 中每个元素都是一位乘客的信息&#xff0c;信息用长度为 15 的字符串表示&#xff0c;表示方式如下&#xff1a; 前十…