问题描述
我正在对一个实现 HID 的驱动程序进行逆向工程,以便搜索漏洞。
它实现的主要 IOCTL 均来自 WDK 中的 HID 微型驱动程序库。
我对向 IOCTL_HID_SET_FEATURE IOCTL 发送格式错误的值特别感兴趣。但是,根据 Microsoft 的文档:
我将如何为一个特定的 HID 设备设置一个功能,而不是文档中的任何其他设备,这有点不清楚。对于功能报告中的预期内容,有点摇摆不定。
输入缓冲区大小(以字节为单位)必须足够大以容纳特征报告——不包括其报告 >ID,如果使用报告 ID——加上一个额外的字节,指定非零报告 ID 或零。
Irp->AssociatedIrp.SystemBuffer 成员指向包含特征报告的输入缓冲区。如果 > 集合包含报告 ID,则请求者必须将缓冲区的第一个字节设置为非零 > 报告 ID;否则请求者必须将第一个字节设置为零。功能报告——不包括其>报告ID,如果使用报告ID——位于((PUCHAR)ReportBuffer + 1)。
文档将 IOCTL 称为针对“顶级集合”。但根据我对自己的驱动程序反汇编的阅读,您似乎可以在粒度级别上指定特定于单个设备的功能。
这里有两个相互关联的问题:
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)