windows驱动开发环境搭建以及helloworld
文章目录
- 前言
- 编译环境-WDK的安装
- 搭建测试驱动的虚拟机
- win11虚拟机
- win10虚拟机
- 在测试机器上运行驱动
- 修改注册表-显示调试信息
- 上面驱动代码含义
- 测试证书签名
- 其他
- 旧版本的visual studio community下载
- SC加载驱动
- windbg
前言
参考:windows驱动开发环境搭建以及helloworld | qwertwwwe、[已解决]DebugView无法获取到KDprintEx的信息
搭建驱动环境–编写hello驱动–安装测试虚拟机–安装驱动
编译环境-WDK的安装
挺难搞。最开始,我使用的时vs2022,搞半天也没把编译环境搭起来。
没办法,降到vs2019。
SDK使用的时10.0.19041.0。
到官网下载和SDK版本相近的WDK: 以前的 WDK 版本和其他下载 - Windows drivers | Microsoft Learn
之后,我们参考windows驱动开发环境搭建以及helloworld | qwertwwwe, 创建一个KMDF项目,编译下面代码,看能否编译通过。
// come from: https://github.com/dybb8999/Windows-kernel-security-and-driver-development-CD/blob/master/source/first/first.c #include <ntddk.h>VOID DriverUnload(PDRIVER_OBJECT driver)
{DbgPrint("first: Our driver is unloading…\r\n");
}NTSTATUS DriverEntry(PDRIVER_OBJECT driver, PUNICODE_STRING reg_path)
{DbgPrint("first: Hello, my salary!");driver->DriverUnload = DriverUnload;return STATUS_SUCCESS;
}
搭建测试驱动的虚拟机
win11虚拟机
使用virtualbox,搭建win11虚拟机,是要踩坑的。可见:如何在VirtualBox 7.0开启TPM和EFI安全启动以在虚拟机中安装或升级到Windows 11 – Orz小窍门
之后,需要关闭签名验证,win11上,我目前只找到这一种有效的方法:Win11怎么禁用驱动程序强制签名? 关闭Win11驱动强制签名的技巧_windows11_Windows系列_操作系统_脚本之家
设置-恢复-高级启动-选择疑难解答-高级选项-启动设置-按键盘上的 F7 ,就可以禁用驱动程序强制签名了。
(在virtualbox win11中 bios,没有serurity boot选项。)
win10虚拟机
win10虚拟机常规安装即可。
驱动需要签名之后,才能加载。日常开发,需要禁用使用测试签名代码,可以参考:加载测试签名代码 - Windows drivers | Microsoft Learn、windows10 该值受安全引导策略保护,无法进行修改或删除。禁用驱动程序强制签名_wangan094的博客-CSDN博客
# admin打开powershell,执行下面语句
bcdedit /set testsigning on
执行上面语句之后,需要重启。重启之后,可以看到这样的水印。
上面这样改过。可以启动测试签名的驱动。驱动如果没有使用测试签名,还是启动不了。所以我们下面这样“禁用驱动程序强制签名”
在测试机器上运行驱动
我们需要点辅助工具。
加载驱动的工具:InstDrv,可以在这里下载,[原创]驱动加载工具(InstDrv - V1.2中文版)
监视本地系统上的调试输出:DebugView,可以在这里下载, DebugView - Sysinternals | Microsoft Learn
我并没有看到输出,应该是和输出信息的level有关,暂时不管它:windows - DebugView doesn't capture KdPrint output - Stack Overflow、驱动中打印消息以及过滤机制_一如当初的博客-CSDN博客、[原]你知道怎么使用DebugView查看内核调试信息吗? - BCN - 博客园
虽然信息没打印,但是驱动确实被安装了,我们可以使用driverquery /v | findstr xxx
看到输出信息。
修改注册表-显示调试信息
我们修改下面的注册表项。
Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Session Manager/Debug Print Filter]
DEFAULT=dword:0000000f
此时,我们再按照上一节的过程,安装驱动,并启动。(只有启动后才能看到输出)
上面驱动代码含义
上面的驱动代码很短,主要是用来验证环境的安装情况。我们简单的过一遍。
ntddk.h是一个内核(接口)头文件。驱动程序都需要需要特定的例程。
DriverEntry是在加载驱动程序后调用的第一个例程,负责初始化驱动程序。DriverUnload执行在系统卸载驱动程序之前所需的任何操作。
dbgPrint向内核调试器发送消息。
测试证书签名
在上面安装虚拟机的小节,我们在启动的时候禁用了驱动的签名验证。但是,这个设置,在下次重启的时候会失效,导致驱动启动失败,而每次设置又比较麻烦。
所以,我们给驱动进行签名。(这里不赘述签名等概念,因为我之前整理过:密码学简述)
PS: 虚拟机还是需要执行下面命令,并重启。
bcdedit /set testsigning on
参考:Windows驱动开发–测试证书签名、测试签名 - windows文档、makecert.exe missing in windows 10, how to get it and use it、windows下查看系统证书、SignTool.exe(签名工具)
# 生成证书
> MakeCert –r –pe –ss PrivateCertStore –n CN=www.da1234cao.tk rg.cer# 将证书添加到本地(以信任)
> CertMgr -add rg.cer -s -r localMachine root
CertMgr Succeeded# 给驱动签名
> Signtool sign /v /s PrivateCertStore /n www.da1234cao.tk /t http://timestamp.digicert.com xxx\driver-logfile.sys
The following certificate was selected:Issued to: www.da1234cao.tkIssued by: www.da1234cao.tkExpires: Sun Jan 01 07:59:59 2040SHA1 hash: FB2249F73FE587DFB619E58319D5D3D8C89D39CFDone Adding Additional Store
Successfully signed: xxx\driver-logfile.sysNumber of files successfully Signed: 1
Number of warnings: 0
Number of errors: 0
这个过程,我不知道咋脚本化。每次使用VS生成驱动后,还得手动签名,有点麻烦。VS屏蔽编译链接过程,非常让人讨厌。
其他
旧版本的visual studio community下载
如果,因为一些原因,我们想下载旧版本的visiual studio,到官网我们会发现,不再提供旧版本的Community版本:Visual Studio 较旧的下载 - 2019、2017、2015 和以前的版本
我们可以找见这个答案:How to download Visual Studio Community Edition 2015 (not 2017) - Stack Overflow
这个答案,我回答不了。目前一个比较好的去出,是在wdk界面下载旧版本的Community:以前的 WDK 版本和其他下载 - Windows drivers | Microsoft Learn
SC加载驱动
其实,图形化的加载驱动工具并不好找,在网上。我们可以使用windows系统提供的命令来加载驱动:使用Windows 自带的 sc 工具操作驱动程序、sc.exe创建
# 好像不大好使
sc.exe create test type=kernel start=demand binpath=C:\Users\dacao\Desktop\driver-logfile.sys
sc.exe start test
sc.exe stop test
sc.exe delete test
windbg
不太好搞定。
使用 windbg + virtualbox 搭建双机内核调试环境
windows驱动开发环境搭建以及helloworld相关推荐
- Windows驱动开发环境搭建:VS2013+WDK8.1
你的Windows驱动开发环境之所以搭建不成功,是因为你没有看这篇博客 1.安装包准备 Visio Studio2013: https://pan.baidu.com/s/1P77yeSKuE7mWl ...
- Windows编程—Windows驱动开发环境搭建
文章目录 前言 步骤 步骤一 步骤二 步骤三 连接测试 步骤四 步骤五 总结 前言 作为一个编写Windows程序的开发人员,对Windows驱动开发 并非必需要掌握,但是掌握 Windows驱动开发 ...
- windows10 驱动开发环境搭建vs2019 helloworld
因为特殊原因需要搭建win10驱动环境, 因此学习了一下 但是发现win10环境特别麻烦 vs2022已经出来了,但是没看到驱动支持, 因此还是选择vs2019 提前准备 1 查看系统版本 2 下载v ...
- windows驱动开发——环境搭建
1.安装工具 WinDBG http://www.microsoft.com/whdc/devtools/debugging/installx86.Mspx dbgView ...
- Windows Server 2012 +WDK7600.16385.1+VS2008驱动开发环境搭建
这个配置相较与Windows Server 2012 +WDK7600.16385.1+VS2010驱动开发环境搭建 要简单的多,不需要每次创建驱动工程时配置这么多的参数 下载WDK开发安装包,我已经 ...
- Windows Server 2012 +WDK7600.16385.1+VS2010驱动开发环境搭建
本帖通过Augusdi的一篇博文进行重新总结 第一步:安装Visual stdio 2010 1.安装VS2010 第二步:安装WDK安装包 2.安装WindowsDriverKit7-GRMWDK_ ...
- 配置windows驱动开发环境
配置windows驱动开发环境 撰写:jiftle 时间:2011-09-09 14:30 windows驱动开发需要wd ...
- ESP32开发 0.windows Vscode开发环境搭建,基于esp-idf-V4.2 | Cmake | Vscode插件
一 前言 入坑嵌入式以来,一直都在寻找一款通用MCU控制器:他应有优秀的计算处理能力.丰富的外设扩展能力.支持有线/无线联网.小巧的封装.自从ESP8266爆火以来,熟悉过它的使用,但窘于硬件限制,只 ...
- vs2010 wdk c语言,Windows7+WDK+VS2010+VisualDDK驱动开发环境搭建.doc
Windows7+WDK+VS2010+VisualDDK驱动开发环境搭建.doc [置顶]Windows7+WDK+VS2010+VisualDDK驱动开发环境搭建(菜鸟的经验) 分类: 驱动开发 ...
最新文章
- web集群时session同步的3种方法
- iOS视图控制器之间delegate传值
- 各种门锁的内部结构图_双核CUP,电镀真金把手,0.3秒开锁,欧瑞博智能门锁S2评测...
- Bootstrap Paginator分页插件+ajax
- html语言对齐是什么意思,html – 对齐RTL语言的元素
- liunx之Centos6.8杀毒软件的安装
- JAVA入门级教学之(构造方法)
- vscode常用快捷键大全
- python 爬取豆瓣top100电影页面
- 老师必备的数学几何绘图软件,赶紧收藏!
- PPT自学教程从小白到高手超详细讲解_1
- python识图找图_初探利用Python进行图文识别(OCR)
- 【web】百度地图中心点始终出现在左上角,或者灰蒙蒙的
- OpenCV读取、保存视频
- 【Arduino学习】01.开发板选择和环境的搭建
- s32k118CAN通信问题
- 域组策略开启RDP远程桌面功能
- 如何成为一个程序员高手
- uni 阻止按钮多次点击 按钮多次点击
- Windows XP系统加速、减肥、安全
热门文章
- 中国人越来越不愿买新车!二手车电商上半年融资150亿元,谁是大赢家?
- android studio manifest merger failed,android studio 引用第三方工程Manifest merger failed
- element 表格+分页封装
- AI产品--苹果的Face ID
- 使用Logstash接收Netflow日志并发送到syslog服务器
- 清华集训2014 玛里苟斯
- 标签体系-内容建设思路
- C#流程控制————分支结构
- 常见运维面试题及答案【个人收集】
- ec200t 拨号_Quectel EC200T驱动以及ppp拨号移植