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

文章目录

  • 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.rhkb.cn/news/170517.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Stable Diffusion WebUI扩展canvas-zoom详细讲解

canvas-zoom这是什么? 这是一个针对画布做一些操作的工具,比如缩放等。 下面来详细说一下这些操作的热键。 重要的热键: 缩放(Alt+滚轮)、移动画布 (F)、全屏 (S) 和重置缩放 (R) (1)Shift + wheel - 缩放画布 按住Shift + 滚轮之后,一点反应都没有,之后按…

上海市道路数据,有63550条数据(shp格式和xlsx格式)

数据地址: 上海市道路https://www.xcitybox.com/datamarketview/#/Productpage?id391 基本信息. 数据名称: 上海市道路数据 数据格式: Shpxlsx 数据时间: 2020年 数据几何类型: 线 数据坐标系: WGS84坐标系 数据来源:网络公开数据 数据字段&am…

lv8 嵌入式开发-网络编程开发 20 域名解析与http服务实现原理

目录 1 域名解析 2 如何实现万维网服务器&#xff1f; 2.1 HTTP 的操作过程 2.2 万维网服务器实现 1 域名解析 域名解析gethostbyname函数 主机结构在 <netdb.h> 中定义如下&#xff1a; struct hostent {char *h_name; /* 官方域名 */char **h_alias…

设计模式(五)—— 建造者模式/生成器模式

先简单记一下&#xff0c;以后再来认真写 还是造房子那个例子&#xff0c;一个房子分为①打地基 ② 砌墙 ③封顶三步&#xff0c;如果不用设计模式去写的话。就是一个超类&#xff0c;然后多个子类继承超类去重写 但是这样有两个缺点&#xff1a; &#xff08;1&#xff09;产…

【Python3】【力扣题】169. 多数元素

【力扣题】题目描述&#xff1a; 众数&#xff1a;一组数据中出现次数最多的数据。 【Python3】代码&#xff1a; 1、解题思路&#xff1a;哈希表。使用哈希映射存储各元素以及出现的次数&#xff0c;哈希映射中的键值对中的键为元素、值为该元素出现次数。 知识点&#xff1…

postman打开后,以前的接口记录不在,问题解决

要不这些文件保存在C:\Users\{用户名}\AppData\Roaming\Postman 比如&#xff0c;你目前使用的window登录用户是abc&#xff0c;那么地址便是C:\Users\abc\AppData\Roaming\Postman 打开后&#xff0c;这个目录下会有一些命名为backup-yyyy-MM-ddThh-mm-ss.SSSZ.json类似的文…

数据结构和算法概述

什么是数据结构&#xff1f; 官方解释&#xff1a; 数据结构是一门研究非数值计算的程序设计问题中的操作对象&#xff0c;以及他们之间的关系和操作等相关问题的学科。 大白话&#xff1a; 数据结构就是把数据元素按照一定的关系组织起来的集合&#xff0c;用来组织和存储…

知识分享|分段函数线性化及matlab测试

目录 1 使用0-1变量将分段函数转换为线性约束 2 连续函数采用分段线性化示例 3 matlab程序测试 4 matlab测试结果说明 5 分段线性化应用 1 使用0-1变量将分段函数转换为线性约束 2 连续函数采用分段线性化示例 3 matlab程序测试 clc;clear all;gn10;tn1;x_pfsdpvar(1, tn,…

云原生Docker Cgroups资源控制操作

目录 资源控制 cgroups四大功能 CPU 资源控制 设置CPU使用率上限 进行CPU压力测试 设置50%的比例分配CPU使用时间上限 设置CPU资源占用比&#xff08;设置多个容器时才有效&#xff09; 设置容器绑定指定的CPU 对内存使用的限制 限制容器可以使用的最大内存 限制可用的…

代码随想录Day24 LeetCode T491 递增子序列 LeetCode T46 全排列 LrrtCode T47 全排列II

LeetCode T491 递增子序列 题目链接:491. 递增子序列 - 力扣&#xff08;LeetCode&#xff09; 题目思路: 首先这里的测试用例很容易误导我们,这道题不能使用上次子集的思路对数组先排序,使用一个used数组来解决问题. 我们用[4,7,6,7]举例这道题的递增序列不存在[4,6,7,7]这个…

iconfont

iconfont-阿里巴巴矢量图标库https://www.iconfont.cn/ UI - 优设网 - 学设计上优设 (uisdc.com)https://www.uisdc.com/category/uiicon TreeNode moveNode (TreeNode)e.Data.GetData("System.Windows.Forms.TreeNode"); Point pt; …

重庆助理工程师申请步骤及注意事项

目录 一、前言二、步骤1. 职称系统网址 2. 一定使用谷歌浏览器&#xff0c;其他白搭三、材料准备1.思想和工作-要手写签字并盖单位公章&#xff0c;无模板2.近五年年度考核-填优秀&#xff0c;并改单位公章&#xff0c;无模板 四、流程1.单位公示要公示5个工作日&#xff0c;再…

C语言进阶第九课 --------动态内存管理

作者前言 &#x1f382; ✨✨✨✨✨✨&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f382; ​&#x1f382; 作者介绍&#xff1a; &#x1f382;&#x1f382; &#x1f382; &#x1f389;&#x1f389;&#x1f389…

Python武器库开发-面向对象篇(六)

面向对象篇(六) 多态 多态指的是一类事物有多种形态&#xff0c;一个抽象类有多个子类&#xff08;因而多态的概念依赖于继承&#xff09;&#xff0c;不同的子类对象调用相同的方法&#xff0c;产生不同的执行结果&#xff0c;多态可以增加代码的灵活度 实现多态的步骤&…

物联网知识复习

物联网的内涵和体系结构 物联网的基本内涵 物联网的基本内涵在于物联&#xff0c;物物相连或者物和人相连的互联网。 也就是说&#xff0c;它是要由物主动发起的&#xff0c;物物互联的互联网。 它的第一层意思是说物和物相连&#xff1b;第二层意思是说物和人相连。 物联网的…

mac上mongodb 以及可视化工具 下载以及安装

简介 1. 下载 官网上的下载地址藏得非常深&#xff0c;不花老半天 根本找不到 下载地址 https://www.mongodb.com/try/download/community 目前最新社区版本7.0.2 下载链接 mac intel芯片 &#xff1a; https://fastdl.mongodb.org/osx/mongodb-macos-x86_64-7.0.2.tgz ma…

VR全景应用广泛体现在哪里?有何优势?

VR全景作为一种新型营销方式&#xff0c;正在逐渐走进人们的视线&#xff0c;它区别于以往单一角度的照片和视频&#xff0c;VR全景制作显得更加直观、更加真实、更加生动。VR全景通过VR技术将所拍摄的图片变成720度可观看的场景模式&#xff0c;把产品的特色以及魅力整体呈现展…

css中px、em、rem、%、vw、vh、vm、rpx 这些单位的区别

序言 px&#xff1a;像素 相对长度单位&#xff0c;相对于显示器屏幕分辨率(推荐使用) em&#xff1a;相对长度单位 基准点为父节点字体的大小&#xff0c;如果自身定义了font-size按自身来计算&#xff08;浏览器默认字体是16px&#xff09;&#xff0c;整个页面内1em不是一个…

Origami Studio for Mac:塑造未来,掌握原型设计之巅

在当今高度竞争的设计领域&#xff0c;原型设计的重要性不言而喻。它不仅是沟通想法&#xff0c;也是测试和改进设计的关键环节。而现在&#xff0c;一款强大的原型设计工具——Origami Studio for Mac&#xff0c;正在席卷设计界&#xff0c;以其独特的功能和卓越的性能&#…

【java学习—九】类的成员之四:初始化块(1)

文章目录 1. 初始化块(代码块)的作用2. 静态代码块3. 非静态代码块和静态代码块的特点 1. 初始化块(代码块)的作用 作用&#xff1a;对java对象进行初始化      程序执行的顺序&#xff1a;     ①声明成员变量的默认值 --> ②显式初始化、多个初始化块依次被执行&a…