file-type

VS2010 C++驱动开发入门:demo驱动自签名流程

RAR文件

下载需积分: 1 | 5.33MB | 更新于2025-02-22 | 199 浏览量 | 0 下载量 举报 收藏
download 立即下载
根据提供的文件信息,我们将重点探讨关于Visual Studio 2010使用C++进行驱动开发的知识点,并详细介绍如何在Windows操作系统上完成驱动程序的自签名过程。此外,还将解析相关的命令和操作,确保读者能够理解如何设置测试模式以便开发和测试驱动程序。 ### Visual Studio 2010 C++ 驱动开发入门 Visual Studio 2010是一款由微软公司开发的集成开发环境(IDE),支持多种编程语言,包括C++。对于驱动开发,VS2010提供了一套工具和框架,使开发者能够创建、调试和测试Windows内核模式驱动程序。驱动程序是一种特殊的软件,它允许计算机操作系统和硬件设备之间进行通信。 ### 驱动自签名 在Windows操作系统中,为了保证系统的安全性和稳定性,所有的驱动程序在安装和加载时都需要经过微软的签名认证。然而,在开发和测试阶段,微软提供了自签名的方法,使得开发者可以在不拥有商业签名的情况下测试其驱动程序。 ### 重新开启驱动程序强制签名的命令 为了在测试模式下运行,开发者需要修改系统启动配置数据,以禁用驱动程序的签名强制检查。具体操作步骤如下: 1. **bcdedit.exe /set nointegritychecks off** 这个命令是用来关闭系统完整性检查的。在驱动开发过程中,经常需要安装和测试未签名的驱动,这时可以临时关闭对驱动签名的强制检查。 2. **bcdedit /set testsigning on** 这个命令是用来开启系统的测试签名模式。一旦开启,系统将允许运行未签名的驱动程序,这对于开发和测试驱动非常有用。但是,在测试签名模式下运行的系统无法通过某些安全检查,如Microsoft的徽标测试。 ### 操作步骤 - 首先,打开命令提示符(以管理员身份)。 - 输入命令 `bcdedit.exe /set nointegritychecks off` 并执行,关闭驱动程序签名强制检查。 - 接着输入命令 `bcdedit /set testsigning on` 并执行,启用测试签名模式。 - 重启计算机后,系统将在测试模式下启动,允许开发者安装未签名的驱动程序。 ### 注意事项 - **测试模式**:在测试模式下,系统的安全特性可能会被削弱,因此不要在生产环境中使用带有测试签名的驱动程序。 - **退出测试模式**:在完成测试后,应当使用命令 `bcdedit /set testsigning off` 关闭测试签名模式,并使用 `bcdedit.exe /set nointegritychecks on` 恢复驱动签名强制检查。 - **驱动签名**:最终发布的驱动程序必须由微软的证书签名,否则在64位Windows系统上不能加载。 ### 结论 通过以上步骤和知识的介绍,我们可以了解到如何在Visual Studio 2010中使用C++进行驱动开发,以及如何通过自签名的方式进行驱动程序的测试。在驱动开发的学习和实践过程中,理解和熟练运用这些知识点对于驱动开发人员来说是十分重要的。同时,要时刻注意保持系统的安全和稳定,避免因测试驱动导致系统被恶意软件利用。

相关推荐

filetype

,从环境搭建到编写并测试HelloWDK驱动程序。首先介绍如何安装WDK,然后讲解如何在VS2019中创建和配置驱动项目,解决编译错误。最后,指导如何在虚拟机上测试驱动,包括启用驱动签名测试模式,安装并查看驱动运行效果和日志输出。摘要由CSDN通过智能技术生成驱动的开发对于初学者来说是不友好的,我们不知道怎么入手,从哪里入门。对于初学者来说束手无策,特别是碰到一个很简单的问题,都不知道怎么解决,这一系列的教程,就是用来排除这些障碍。大部分的驱动开发教程都会先给我们把文档和demo给我们贴出来:Windows驱动程序入门: Windows 驱动程序入门 - Windows drivers | Microsoft DocsGithub: https://github.com/Microsoft/Windows-driver-samples但这对于初学者来说,一开始并没有什么用,因为看不懂。我们还是按照之前有一定的编程基础,来进入驱动的开发。假设大家已经安装了vs2019或者更高版本的vistual studio。先开发一个Hello World的驱动程序,把驱动程序安装到测试机上,看发生了什么。我们先不管里面的逻辑原理是什么,先依葫芦画瓢,整出第一个Hello World的demo。WDK(Windows Driver Kit) 安装安装WDK也是比较简单的事情,在Vistual studio Install上找到Windows Driver Kit ,进行安装,安装完成了以后会出现Windows Driver Kit已经打钩了。编写HelloWDK新建一个工程,选择Empty WDM Driver项目,新建driver.cpp文件,编写如下代码:// driver.cpp#include <ntddk.h>extern "C" void DriverUnload(PDRIVER_OBJECT pDriverObject);extern "C" NTSTATUS DriverEntry(PDRIVER_OBJECT pDriverObject, PUNICODE_STRING pRegPath){ DbgPrint("[GO2CODING_Driver] DriverEntry\n"); NTSTATUS status = STATUS_SUCCESS; pDriverObject->DriverUnload = DriverUnload; return status;}extern "C" void DriverUnload(PDRIVER_OBJECT pDriverObject){ DbgPrint("[GO2CODING_Driver] DriverUnload\n"); return;}123456789101112131415161718192021这时候编译会出错,error C2220: 以下警告被视为错误warning C4100: “pRegPath”: 未引用的形参warning C4100: “pDriverObject”: 未引用的形参123我们还需要如下的设置:1.配置属性 - C/C++ -常规 中 将警告视为错误 设置为 否2.配置属性 - Driver Signing - General 中 Sign Mode 设置为 Off。3 .配置属性 -Inf2cat - run Inf2cat 设置为 否。这样编译成功后,生成HelloWDM.inf和HelloWDM.sys文件。第一个demo也就完成了。测试虚拟机在做驱动的时候,并不像以前开发的应用程序那样,最好不要直接在本机上测试,我们需要一台windows 10 的虚拟机,虚拟机的安装方式可以参考相关的教程。我们还需要驱动开发的相关工具,包含DebugView,DriverMonitor,IRPTrace,WinObj,DeviceTree,DiskView,DriverManager,EzDriverInstaller,可以在这里进行下载。放到测试机上。测试机在正常的模式下,是无法安装windows没有签名的驱动,我们需要把测试机变为不需要签名验证。按shift重启测试机。进入这个界面,选择 疑难解答->启动设置->重启。重新进入系统,在如下的页面中按 7 启动windows。重启完后,把编译好的HelloWDK放到测试机上,进入设备管理(电脑右键->管理),添加过时硬件。一路下一步到底,直到出现 从磁盘安装,选择安装的路径到刚才拷贝的路径下。在安装驱动之前,我们先以管理员的身份打开debugview,在Capture选择如下,等待着log的输出。安装驱动,会 出现如下的提示,选择始终安装。提示安装完成。在设备管理上出现了,如下的新设备。同时在debugview下,我们可以看到如下的log。这个log对于我们来说,意义太重大了,说明我们不仅仅把驱动安装成功了,还打印出了日志,简直相当于调试了,我们的心安了不少。HelloWDK.inf的内容如下:;; The Win2K DDK documentation contains an excellent INF reference.;--------- Version Section ---------------------------------------------------[Version]Signature="$CHICAGO$"Provider=Go2Coding_DeviceDriverVer=11/1/2007,3.0.0.3; If device fits one of the standard classes, use the name and GUID here,; otherwise create your own device class and GUID as this example shows.Class=Go2CodingDeviceClassGUID={EF2962F0-0D55-4bff-B8AA-2221EE8A79B1}CatalogFile=HelloWDK.cat;--------- SourceDiskNames and SourceDiskFiles Section -----------------------; These sections identify source disks and files for installation. They are; shown here as an example, but commented out.[SourceDisksNames]1 = "HelloWDK",Disk1,,[SourceDisksFiles]HelloWDK.sys = 1,,;--------- ClassInstall/ClassInstall32 Section -------------------------------; Not necessary if using a standard class; 9X Style[ClassInstall]Addreg=Class_AddReg; NT Style[ClassInstall32]Addreg=Class_AddReg[Class_AddReg]HKR,,,,%DeviceClassName%HKR,,Icon,,"-5";--------- DestinationDirs Section -------------------------------------------[DestinationDirs]YouMark_Files_Driver = 10,System32\Drivers;--------- Manufacturer and Models Sections ----------------------------------[Manufacturer]%MfgName%=Mfg0,ntamd64[Mfg0]; PCI hardware Ids use the form; PCI\VEN_aaaa&DEV_bbbb&SUBSYS_cccccccc&REV_dd;改成你自己的ID%DeviceDesc%=YouMark_DDI, PCI\VEN_9899&DEV_9899;---------- DDInstall Sections -----------------------------------------------; --------- Windows 9X -----------------; Experimentation has shown that DDInstall root names greater than 19 characters; cause problems in Windows 98[Mfg0.ntamd64]%DeviceDesc%=YouMark_DDI, PCI\VEN_9899&DEV_9899[YouMark_DDI]CopyFiles=YouMark_Files_DriverAddReg=YouMark_9X_AddReg[YouMark_9X_AddReg]HKR,,DevLoader,,*ntkernHKR,,NTMPDriver,,DeviceIoControl.sysHKR, "Parameters", "BreakOnEntry", 0x00010001, 0; --------- Windows NT -----------------[YouMark_DDI.NT]CopyFiles=YouMark_Files_DriverAddReg=YouMark_NT_AddReg[YouMark_DDI.NT.Services]Addservice = HelloWDK, 0x00000002, YouMark_AddService[YouMark_AddService]DisplayName = %SvcDesc%ServiceType = 1 ; SERVICE_KERNEL_DRIVERStartType = 3 ; SERVICE_DEMAND_STARTErrorControl = 1 ; SERVICE_ERROR_NORMALServiceBinary = %10%\System32\Drivers\HelloWDK.sys[YouMark_NT_AddReg]HKLM, "System\CurrentControlSet\Services\HelloWDK\Parameters",\"BreakOnEntry", 0x00010001, 0; --------- Files (common) -------------[YouMark_Files_Driver]HelloWDK.sys;--------- Strings Section ---------------------------------------------------[Strings]ProviderName="Go2Coding."MfgName="Go2Coding Soft"DeviceDesc="Hello World HelloWDK!"DeviceClassName="Go2Coding_Device"SvcDesc="Go2Coding"123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113如果需要 demo的源代码,可以私信我。

filetype
资源下载链接为: https://pan.quark.cn/s/9e7ef05254f8 在网页设计中,为图片添加文字是一种常见的需求,用于增强视觉效果或传达更多信息。本文将介绍两种常用的方法:一种是将图片设置为背景并添加文字;另一种是利用标签结合CSS定位来实现。 这种方法通过CSS实现,将图片设置为一个容器(通常是
)的背景,然后在容器中添加文字。具体步骤如下: 创建一个包含文字的
元素: 使用CSS设置
的背景图片,并调整其尺寸以匹配图片大小: 如有需要,可使用background-position属性调整图片位置,确保文字显示在合适位置。这样,文字就会显示在图片之上。 另一种方法是将文字放在标签内,并通过CSS绝对定位将其放置在图片上。步骤如下: 创建一个包含图片和标签的