随笔分类 - Windows驱动学习
Windows驱动学习
摘要:devcon.exe使用inf文件PNP驱动时,如果缺少cat文件,在测试模式下是无法安装的,驱动安装失败,可以检查C:\Windows\INF\setupapi.dev.log文件,查看安装失败的原因。 Bcdedit.exe -set TESTSIGNING ON可以打开系统的测试模式,需要以管
阅读全文
摘要:内核态监控串口过滤驱动,实际中可以使用的几种应用场景设想: 1、如之前写的一篇监控串口数据的文章,可以用于方便调试,显示写到串口的数据和收到串口的数据,程序员可以使用这个程序方便调试。 2、可以虚拟串口,比如在开发过程中,程序员开发机器打开某个串口,但是电脑上不存在这个串口,也没有连接下位机串口设备
阅读全文
摘要:在用户态创建一个事件,得到句柄,传入到驱动中,驱动中发生某件事情时触发此事件。 下面代码中在用户创建一个事件句柄,将句柄值通过DeviceIoControl传入驱动中,在驱动中调用ObReferenceObjectByHandle回去句柄对象的指针,然后创建一个系统线程,触发此对象。 用户态返回后等
阅读全文
摘要:记录自己学习《Windows 内核驱动》章节中的串口过滤驱动。 先看下最终效果吧 图中并没有展示对串口1的读写监控,但是已经绑定成功了。 程序分为驱动程序和用户态程序ControlSerialPort.exe两部分用户态程序主要有两个功能:1、使用-L参数会遍历注册表枚举串口。2、以管理员权限使用-
阅读全文
摘要:使用IoCreateDevice创建的设备,在创建符号关联后,在用户态使用普通用户也可以打开此设备,不安全。 所以需要使用IoCreateDeviceSecure创建设备,有一个参数为PCUNICODE_STRING DefaultSDDLString,这个参数使用不同的值,可以给设备添加不同的安全
阅读全文
摘要:在用户态打开一个驱动设备链接时可以获取到一个句柄,这个句柄是基于当前进程的,句柄的值在当前进程的句柄表中作为索引。 调用CreateFile打开一个已存在的内核设备时,会触发设备所在驱动的IRP_MJ_CREATE请求派遣函数。 句柄对应的对象头在内核中用_OBJECT_HEADER结构体来表示,使
阅读全文
摘要:进入内核NtCreateFile中,如果需要查看是由用户态进入的还是从内核态进入的,可以使用如下命令 .thread 查看当前线程 kd> .threadImplicit thread is now 87272880 dt _KTHREAD 87272880 -y Previous 在_KTHREA
阅读全文
摘要:在学习Windows内核编程的时候,参考了《Windows内核开发》书籍 首先我们先固定的过滤一个串口,来简化代码,先易后难,后续再扩充代码,过滤所有串口。 基础知识:在注册表中添加串口项 在windows 7 x86中 在注册表HKEY_LOCAL_MACHINE\HARDWARE\DEVICEM
阅读全文