摘要
作者通过逆向工程Logitech鼠标的HID++协议,发现可以在鼠标的DPI寄存器中存储2字节数据,实现跨设备的"隐形存储"。
核心发现
- HID++协议: Logitech鼠标使用的专有协议,基于标准USB HID构建,部分文档化,部分由社区逆向工程
- 33个功能: 作者用Rust工具枚举出鼠标暴露的所有功能
- DPI寄存器: 接受任意u16值并持久化,断电后数据保留
- macOS限制: IOHIDManager会静默阻止长HID++报告格式,写入被直接丢弃无错误
关键亮点
- 设备名称寄存器会"礼貌地接受"写入但完全忽略——"这是一种深深可共鸣的响应"
- 2字节存储"比通过更改主机名存储的数据还少"
- 调查过程才是重点,学习了HID++、macOS内核级HID管理、特性表vs特性索引
核心洞察
"The 2 bytes were never the goal. The goal was to see how far in I could get."
—— 2字节从来不是目标,目标是想看看能深入到什么程度