Windows内核编程(三)-内核驱动运行与调试

内核驱动运行与调试

驱动的运行

驱动的运行通过服务来实现。

微软规定,驱动文件必须经过微软的数字签名后,才可以运行在64位系统上,如果把没有经过签名的驱动直接放在64位操作系统中运行,结果是驱动加载失败,失败原因是驱动没有签名。
解决方法:

  1. 把操作系统配置成调试模式,调式模式的系统,默认允许未签名的驱动运行
  2. l临时关闭系统驱动签名校验,在开机时修改启动参数

对于Windows 7操作系统来说,开机时可以在键盘上按 F8 键,选择禁用驱动程序签名强制
对于Windows 10 系统来说,可以在高级重启中设置,具体操作为: 开始菜单设置更新安全恢复,在高级启动下点击 立即重新启动 按钮,然后在出现的界面中选择 疑难解答高级选项启动设置 ,点击 重启 按钮,系统开始重启,在启动过程中会显示启动选项,在键盘上输入数字 7,即选择 禁用驱动程序强制签名

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  1. 还可以把系统驱动程序强制签名永久去掉,但是这样会大大降低系统的安全性,不建议使用。

把驱动程序放在系统的C盘下,以管理员权限运行cmd(命令提示符),在cmd中输入注册驱动的命令:
sc create MyDriver binPath="C:\MyDriver.sys" type= kernel start= demand

在这里插入图片描述
其中 sc create 表示创建一个服务,binPath 指驱动文件所在磁盘位置,type 表示驱动的类型,start 表示该服务启动类型,demand 表示手动启动。
注意:在上面的命令中,等号(=)后面需要有一个空格(测试没有也行,不知道是不是微软修复了这个bug)。

sc 命令内部也是通过服务的 API 对服务进行注册,与直接通过API创建服务的效果相同,通过sc命令,可以省区编写注册服务的代码。

成功创建后,使用sc命令来启动服务,命令如下:
sc start MyDriver
其中MyDriver为服务名,对应sc create后面的名字,这个命令的功能等同于StartService函数,服务成功运行后,命令行上显示创建的信息
在这里插入图片描述

驱动的调试

驱动运行之后,没有在代码中打印的调试信息没有显示,使用工具DbgView.exe进行调试,下载地址
在这里插入图片描述
以管理员权限打开Dbgview.exe,在菜单上选择 Capture,依次勾选"Capture Kernel" 以及 “Enable Verbose Kernel Output”。
在这里插入图片描述
由于MyDriver已经运行,如果需要观察DriverEntry的日志,首先需要停止驱动服务,然后再次启动驱动服务,停止驱动服务的命令为:sc stop MyDriver

成功执行停止命令后,保持DbgView不关闭,再次执行sc start MyDriver,可以在DbgView的窗口中看到以下日志
在这里插入图片描述
可以通过sc delete MyDriver命令删除先前已注册和创建的服务。

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 《寒江独钓Windows内核编程源码》是一本非常经典的内核编程书籍。该书主要介绍了Windows内核的结构和工作原理,以及如何进行内核编程。作者通过自己的实践经验,深入浅出地解释了内核编程的基本原理和技巧。 该书的主要内容包括:Windows内核架构、内核模式和用户模式编程驱动程序开发、处理器管理、内存管理、进程和线程管理、设备驱动程序、文件系统等。通过学习这些内容,读者可以全面了解Windows内核的各个方面,并具备进行内核编程的基础知识和技能。 内核编程是一项非常高级和复杂的技术,需要读者具备扎实的操作系统和编程基础。《寒江独钓Windows内核编程源码》提供了丰富的源码示例和实践案例,帮助读者加深对内核编程的理解,并能够在实践中掌握内核编程的各种技巧和方法。 通过学习该书,读者可以深入了解Windows内核的工作原理和开发方法,提升自己的技术水平,并有可能在内核开发领域取得突破。同时,该书也适合作为操作系统课程的参考书籍,帮助读者更好地理解操作系统的底层原理和设计思想。 总之,《寒江独钓Windows内核编程源码》是一本值得学习的经典书籍,通过学习该书,读者可以从理论和实践两个方面全面提升自己的内核编程能力。 ### 回答2: 寒江独钓Windows内核编程源码,这是指在Windows操作系统内核级别的编程过程中,个人独自执钓的情景。在传统的Windows内核编程中,需要深入理解Windows操作系统的内部机制、数据结构和调度算法,并通过编写驱动程序或者修改系统核心源码来实现特定的功能或解决某些问题。这是一项相当具有挑战性和专业性的技术领域。 寒江者,指的是独自一人默默钓鱼的情景。在这个比喻中,内核编程者是在深入学习和专研Windows内核编程的过程中,独自探索和解决问题,就像在江边的一个人默默地捕捞。 Windows内核编程源码指的是Windows操作系统的核心代码。对这些源码的学习和理解,是了解Windows操作系统内部工作原理的关键。通过研究内核编程源码,我们可以了解系统如何管理进程、内存分配、文件系统等功能,以及与硬件的交互过程。 进行寒江独钓Windows内核编程源码可以带来许多好处。首先,它可以深入了解Windows操作系统的底层工作原理,从而更好地进行系统调试和性能优化。其次,它可以为用户定制和开发高性能的驱动程序,提升系统的稳定性和响应能力。此外,通过研究内核编程源码,可以了解Windows操作系统的安全性和漏洞,从而更好地防范和解决安全问题。 然而,寒江独钓Windows内核编程源码并不是一项简单的事情,它需要对操作系统原理、编程语言和底层架构有深入的理解。同时,需要拥有扎实的计算机科学基础和编程技巧,以及耐心和毅力来解决各种挑战和问题。 总之,寒江独钓Windows内核编程源码是一项有挑战性的技术活动,通过对Windows操作系统内核代码的深入研究和理解,可以提高对系统的控制和优化能力,从而为用户提供更好的系统性能和功能。 ### 回答3: 《寒江独钓Windows内核编程源码》是一本关于Windows内核编程的书籍,作者以“寒江独钓”来形容自己在Windows内核编程领域的独孤求败之意。这本书主要介绍了Windows操作系统的内核编程细节和原理。 在这本书中,作者首先介绍了Windows内核的基本概念和架构,包括进程和线程管理、内存管理、驱动程序开发等。接着,作者深入讲解了Windows内核的各个模块和重要组件的实现原理,如调度器、文件系统、网络协议栈等。读者可以通过学习这些源码,深入理解Windows内核的工作原理和设计思想。 《寒江独钓Windows内核编程源码》不仅仅是一本理论性的书籍,更重要的是它提供了丰富的源代码示例和实践案例,读者可以通过实际的代码实现和调试来加深对内核编程的理解。同时,本书还特别注重实用性,提供了大量的编程技巧和调试技巧,帮助读者快速掌握Windows内核编程的方法和技巧。 总之,《寒江独钓Windows内核编程源码》是一本全面而深入的Windows内核编程技术书籍,适合那些对Windows系统内核感兴趣的程序员和操作系统开发者阅读。通过学习这本书,读者可以系统地学习Windows内核编程的原理和实践,提升自己的技术水平。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值