最近因为爬虫登录的网站加了密码控件,尝试了很多方法都不能破解(该控件屏蔽了虚拟软键盘),寻找资料中发现了winIo这么工具,十几年前的东西了,它的官网貌似也处于游离状态,使用中也出现了很多问题,便以此mark一下。
最开始从这里获取到了winIo32实现驱动级键盘事件,但使用的是JNative(目前只支持32位),同时winIO32在64位的OS下运行有问题(本人测试过,可能过程中有没考虑到的原因,此文略过),所以采用winIo64+JNA来实现键盘的驱动级模拟。
在开始前,先申明一下所需要的环境和设备(本文主要在window7 64位环境下测试):
1.WinIo64.dll 和 WinIo64.sys(下载请见上面winIo32实现驱动级键盘事件的附件key文件夹)
2.因为WinIo库允许Windows应用程序中直接对I/O端口和物理内存进行存取操作,目前从网上找到的资料winio能模拟PS/2键盘输入(串口键盘),但USB设备的模拟暂时资料不详,所以此次以PS/2键盘模拟为例(必须链接PS/2键盘,否者模拟无效)。
3.WinIo64.sys签名:64位版本的Windows只加载设备驱动程序,这些驱动程序由一个公共CA签发的代码签名证书签署,如Verisign、Thawte等。WinIo64 除非获得了代码签名证书,否则系统不能部署在生产机器上。
a.开启测试模式
1)管理员模式运行cmd
2)在命令行输入:bcdedit /set TESTSIGNING ON