首页 > 编程语言 >内核环境搭建和创建驱动程序实验报告

内核环境搭建和创建驱动程序实验报告

时间:2024-03-08 18:11:20浏览次数:38  
标签:Windbg 虚拟机 键盘 过滤 内核 驱动 实验报告 驱动程序

1.1下载 Visual Studio 2019 创建项目

在 Windows 系统中进行内核驱动开发的实验过程以及创建简单驱动程序的流程。实验过程中遇到的问题也会一并介绍,并详细说明如何解决这些问题。总的来说,步骤包括下载 Visual Studio 2019,安装 WDK 和 Windbg.exe 软件,下载 VMware Workstation Pro 并安装虚拟机,创建驱动程序,运行安装程序并测试驱动程序。

首先,在本机上下载 Visual Studio 2019 并创建项目,修改项目属性以生成 .sys 文件。注意,驱动程序必须是用 kernel 模式编写的。

 

修改属性如图:

 

然后就可以生成sys了。

1.2 安装 WDK 和 Windbg.exe 软件

   接下来,需要在本机上安装 WDK(Windows Driver Kit)和 Windbg.exe 软件。这两个软件都是微软开发的工具,用于内核驱动开发和调试。安装完 WDK 后,可以在开始菜单中找到所有安装的工具。而 Windbg.exe 软件安装后,需要在快捷方式目标后加上 -b -kcom:pipe,port=\.\pipe\com_1,resets=0 参数,以便于在虚拟机中调试驱动程序。

1.3 安装和配置虚拟机

接下来,需要在虚拟机中安装 Windows XP 系统。为了方便驱动程序的测试,可以下载 VMware Workstation Pro 并在其中安装虚拟机。虚拟机中需要安装完整的 Windows XP 系统,由于该系统版本较旧,有些驱动程序需要手动添加。

 

为了将编写好的驱动程序放入虚拟机中进行测试,需要把 .sys 文件和驱动安装软件 InstDrv.exe 放入虚拟机中。在虚拟机中运行安装软件,按照提示添加驱动程序。此时,需要注意驱动程序是否和 Windows XP 系统的版本兼容,并且确认已使用管理员权限运行驱动安装程序。

2.1 解决问题

在实验过程中,我们遇到了一些问题。首先是在编写驱动程序的过程中,由于缺乏经验,出现了许多语法和运行时错误。解决这些问题的方法是仔细查看文档,并利用 Visual Studio 的调试工具逐步检查和修复错误。

 

2.2 测试程序

其次,在安装驱动程序时,由于官方文档没有明确说明驱动程序的版本兼容性问题,在安装时出现了一些问题。通过查看操作系统的版本信息和驱动程序的版本信息,我们成功确认了驱动程序与操作系统的兼容性,并通过使用管理员权限运行驱动程序安装程序解决了这个问题。

 

3.1解决问题

在使用 Windbg.exe 调试工具时,我们遇到了控制台窗口无法打开的问题。这是由于 Windbg.exe 和其他一些软件存在冲突导致的。通过卸载了这些软件,我们成功解决了这个问题并顺利进行了调试。

 

3.2总结

总的来说,驱动程序开发需要耐心和技巧,同时要注意安全问题以及与操作系统的兼容性。在实验过程中遇到问题要及时查找解决方案,并耐心调试程序。

 

 

二、生成的键盘过滤sys 模块。

1.1系统模块功能介绍

键盘过滤驱动是一种在Windows操作系统中拦截和过滤键盘输入的驱动程序。该驱动程序被设计用于监控和修改键盘输入,可以帮助用户实现各种自定义的功能,如按键记录、按键过滤、按键映射等。

该驱动程序基于Windows内核,从击键到内核有以下几个步骤:键盘硬件原理、键盘过滤的框架找到所有的键盘设备、应用设备扩展、键盘过滤模块的DriverEntry、键盘过滤模块的动态卸载、键盘过滤的请求处理通常的处理、PNP的处理、读的处理、读完成的处理、从请求中打印出按键信息从缓冲区中获得KEYBOARD_INPUT_DATA、从KEYBOARD_INPUT_DATA中得到键以及从MakeCode到实际字符。

在实现键盘过滤驱动程序时,需要支持Hook分发函数、获得类驱动对象、修改类驱动的分发函数指针、类驱动之下的端口驱动、端口驱动和类驱动之间的协作机制、找到关键的回调函数的条件、定义常数和数据结构、打开两种键盘端口驱动寻找设备、搜索在KbdClass类驱动中的地址、Hook键盘中断反过滤以及读取键盘数据和命令端口。

以上是键盘过滤驱动sys系统模块的功能介绍,通过实现该驱动程序可以实现对键盘输入的监控和修改,为用户提供更多自定义的功能支持。

 

1.2代码以及解释  (由于代码和解释过长这里不显示了 点击查看详细)

1.3调试过程 

以下是在Windows操作系统中通过Windbg.exe调试安装启动键盘过滤驱动sys的过程:

1.首先,在Windows中安装Windbg.exe,并打开该调试工具。

 

2.在Vm虚拟机中,安装并启动insdrv软件,并将键盘过滤驱动的sys文件加载到Vm虚拟机中的xp系统中。

 

3.在Windbg中输入“kd -kl”,以启动远程内核调试。

 

4.在Windbg中按下“Ctrl+Break”组合键,以暂停运行中的系统进程。

 

5.在Windbg中输入“!process 0 0”命令,以列出全部进程信息。

 

6.在输出结果中找到insdrv软件所在的进程ID,并输入“!process [进程ID]”命令,以查看该进程的详细信息。

 

7.在输出结果中找到键盘过滤驱动所在的地址,并输入“lmvm [驱动名]”命令,以查看该驱动程序的详细信息。

 

8.在输出结果中找到关键的回调函数的地址,并设置断点,如输入:“bp [回调函数地址]”。

 

9.重新启动insdrv软件,在开始使用键盘时,断点会命中,此时就可以在Windbg中单步跟踪调试,以观察键盘过滤驱动的执行过程和运行结果。

 

以上是在Windows操作系统中通过Windbg.exe对键盘过滤驱动sys进行调试的过程,通过该过程可以更好地理解键盘过滤驱动的工作原理和实现方式,从而更好地支持用户的自定义功能需求。

2.1 运行结果

2.2 开发过程中出现的问题及解决方法

 

以下是开发过程中可能出现的问题及解决方法:

 

问题:在调试过程中,无法调试到预期的地方,或者程序出现了不明确的错误提示。

 

解决方法:可以使用Windbg等工具进行调试,查看程序的执行过程和运行日志,定位错误所在,或者增加日志输出来详细记录程序执行情况,以便分析问题的原因。

 

问题:在开发过程中,代码出现了内存泄漏或者资源管理不当的问题,导致程序运行缓慢或者崩溃。

 

解决方法:可以使用静态分析工具(如Cppcheck)和动态分析工具(如Valgrind)进行代码检查和测试,找出问题所在,并进行修复。对于常驻内存的对象,需要特别注意内存管理策略和有效的生命周期管理。

 

问题:在开发过程中,程序变得复杂,难以维护和扩展。

 

解决方法:可以采用模块化和面向对象的设计方法,对程序进行组件化划分,每个组件只负责特定的功能模块,以避免过度耦合和复杂性。同时,编写清晰的文档和注释,以便其他成员更好地理解和使用代码。

 

问题:在开发过程中,程序运行情况不稳定,出现崩溃或者无响应的情况。

 

解决方法:可以使用断言和异常处理机制,及时捕获程序出现的异常情况,并输出相关信息进行调试查看。同时,对程序进行多种场景的测试和压力测试,以确保程序的稳定性和健壮性。

 

标签:Windbg,虚拟机,键盘,过滤,内核,驱动,实验报告,驱动程序
From: https://www.cnblogs.com/qsz666/p/18061584

相关文章

  • redis自学(12)用户空间和内核空间
    用户空间和内核空间服务器大多采用Linux系统,所以以Linux为例:任何Linux发行版,其系统内核都是Linux。我们的应用都需要通过Linux内核与硬件交互。  用户应用是无法直接访问计算机硬件,只能访问内核,基于内核操作计算机硬件  为了避免用户应用导致冲突甚至内核崩溃,用户应......
  • Windows内核基础理论笔记
    内核理论基础特权级别​ 现代计算机的CPU设计中有四个特权级别:R0、R1、R2、R3​ 内核运行在R0(拥有最高权限),用户程序运行在R3​例如:WindowsXP体系结构图中HardwareAbstractionLayer(硬件抽象层):用于提供硬件的低级接口WindowsXP的执行体是NTOSKRNL.EXE的上层ntdll.dll:......
  • 内核日志系统设计 --20240305
    简单日志系统设计在高通或者MTK的源码中,以camera系统为例,多个子模块,我们可以通过向debug系统中通过打开关闭相关模块对应的bit位来开启或关闭模块日志 在内核中实现其实并不复杂,使用module_param来创建一个sys节点来进行日志控制:如下:staticintdebug=0x3;//i......
  • 科幻:Windows内核攻击是指针对Windows操作系统内核的恶意攻击行为
    Windows内核攻击是指针对Windows操作系统内核的恶意攻击行为。Windows内核作为操作系统的核心组件,控制着系统资源的管理、进程调度、设备访问等关键功能,因此成为黑客和恶意分子攻击的一个重要目标。以下是一些常见的Windows内核攻击方式:内核漏洞利用:黑客通过利用Windows内核中......
  • linux 升级内核
    目录linux升级内核CentOS7.x系统自带的3.10.x内核存在一些Bugs.导致运行的Docker.Kubernetes不稳定。导入ELRepo仓库的公共密钥安装ELRepo仓库的yum源可以看到5.4和5.12两个版本(lt为长期支持版;ml:(mainline)主线的意思,当前主推)如果要安装5.4的就执行:yum--enablerepo=elrepo-......
  • linux内核同步机制
    内核同步机制在使用共享内存的程序代码中,为了保护共享资源,放置共享资源的并发访问导致的错误逻辑,需要用到内核同步机制。1.临界区是访问和操作共享数据的代码段。多个执行线程并发访问同一个资源(读/写),通常是不安全的,为了避免这种隐患,编程人员必须保证这种访问是原子的(不可打断)......
  • 升级centos7内核版本
    先查看当前内核版本~]#uname-aLinuxlocalhost.localdomain3.10.0-1160.el7.x86_64#1SMPMonOct1916:18:59UTC2020x86_64x86_64x86_64GNU/Linux查看系统grub内核启动列表~]#awk-F\''$1=="menuentry"{printi++":"$2}'/etc/grub2......
  • 内核页表调试
    一、配置内核首先配置内核,使其支持导出内核页表到debugfs下面:Kernelhacking--->--->[*]Exportkernelpagetablelayouttouserspaceviadebugfs配置完后,重新编译内核,并用新内核启动,就会在/sys/kernel/debug下看到kernel_page_tables文件:然后cat该文件,可以获得如下信......
  • RK3568驱动指南|驱动基础进阶篇-进阶4 内核是如何运行ko文件的_insmod
        瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工艺,搭载一颗四核Cortex-A55处理器和MaliG522EE图形处理器。RK3568支持4K解码和1080P编码,支持SATA/PCIE/USB3.0外围接口。RK3568内置独立NPU,可用于轻量级人工智能应用。RK3568支持安卓11和linux......
  • Linux内核的知识点
    1、发生硬件中断后,ARM处理器做了哪些事情?答:当CPU感知到中断发生后,硬件会自动做如下一些事情:1)保存中断发生时CPSR寄存器的内容到SPSR_irq寄存器中;2)修改CPSR寄存器,让CPU进入处理器模式(processormode)中的IRQ模式,即CPSR寄存器中的M域设置为IRQMode。......