首页
社区
课程
招聘
未解决 [求助]HID OutputReport replay首包有响应但后续始终回FF错误码 20雪币
发表于: 6天前 383

未解决 [求助]HID OutputReport replay首包有响应但后续始终回FF错误码 20雪币

6天前
383

在做一个项目,需要绕过某 USB HID 外设的官方 SDK,直接用 WinUSB / HID API 与设备通信触发其核心功能。设备 HID 枚举正常,HidD_GetAttributes 读到 VID/PID,InputReport / OutputReport 长度也确认了。

用 USBPcap 抓了完整交互流程,大概能看到以下结构(脱敏处理):

// host → device(发起请求)
00 A0 xx xx [32字节 payload] 00 00 ...

// device → host(中间状态回包)
00 B0 01 00 00 ...

// host → device(疑似确认/轮询)
00 A0 xx 00 00 ...

// device → host(结果回包)
00 B0 02 [数据] ...

多次抓包对比,A0B0 应该是命令码,第3字节每次都在变,怀疑是 sequence number 或 session 相关字段。

目前卡点:

HidD_SetOutputReport replay 第一包,设备有回包,回的是 B0 01(和抓包一致),说明第一步请求被接受了。但后续无论怎么发确认包,设备要么无响应,要么回一个 B0 FF,始终拿不到 B0 02 的结果包。

用 x64dbg 挂了官方 DLL,在发包函数下断,确认第3字节确实每次调用都在变,但变化规律不像简单递增,也不像随机,IDA 里找到了相关函数但逻辑比较绕,还没完整还原。

想问的:

  1. B0 FF 这类错误回包,有没有办法让设备吐出更多错误信息,或者从 DLL 里找到错误码对照表的思路
  2. 第3字节如果不是简单递增,在 DLL 逆向里一般怎么快速定位生成逻辑——跟着发包函数往上追调用栈,还是有更快的方法
  3. 有没有遇到过 HID 设备对 replay 有 session 绑定保护的情况,这种一般怎么处理

有做过类似 HID 私有协议分析经验的大佬欢迎交流



[培训]Windows内核深度攻防:从Hook技术到Rootkit实战!

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回