最近有需求需要开发一个驱动,需要开发一个不用鼠标键盘,通过发送消息来实现鼠标键盘功能的,虚拟驱动功能,因为模拟windows消息会被一些游戏识别成外挂。
在研究的过程中遇见了好多的坑。在今日(4.7)终于把HelloWorld给安装成功,并断点到了。
我采用的是vs2019+WDK10+WINDBG来实现的。先把几个坑给记录一下。再记下流程。
1.运行,输入:bcdedit/set testsigning on 回车。(devcon Failed一般就是这个问题)
打开签名认证开关,然后重启电脑,选择禁用驱动程序签名来启动。
这个必须做,不然的话,安装驱动会总是失败。
2.windbg显示Refreshing KD connection后,不能输入命令
在启动的时候连接上机器后,会显示这个,在目标机器按CTRL+BREAK,就会进入断点了。
3.几个驱动的查询和删除命令
SC QUERY 【DriverName】;SC delete [DriverName]
4.__asm int 3 在X64下不能使用的问题。
汇编内联只能在X86系统下使用,所以类似于__asm int 3断点在X64下不能再使用了,但是提供了一个函数可以实现类似的结果__debugbreak();
5.一直提示win10 sdk 10.0.17763.0下的一个文件包含错误。
实际上我使用的SDK是win10 sdk 10.0.18362的,不知道为何总是提示这个。我再vs installer 里删除掉了10.0.17763仍然不行。最后是用everything查出所有10.0.17763的目录删除掉,就不会再有这问题,坑。
6.windbg连上主机调试的方法,我采用的是com形式,-b -k com:pipe,port=.pipecom_1,resets=0,reconnect -y
可以参考https://www.cnblogs.com/yapp/p/10270768.html,就是虚拟机设置里删除打印机,添加com1 接口。用命名管道的方式来。
以上是几个坑。下面是真正的流程,网上很多流程,都有各种各样的问题,或者是不符合当前环境吧,最准确的还是要看微软官方的。
https://docs.microsoft.com/zh-cn/windows-hardware/drivers/gettingstarted/writing-a-very-small-kmdf--driver
安装好WDK10,在vs install里面安装好如下几张图的里所有内容。