如何逆向工程和修补 USB 驱动程序以识别类似的硬件?

逆向工程 艾达 部件 ollydbg
2021-06-13 10:04:00

我曾经有一个使用无线专有 USB 接收器的罗技 G700 鼠标。我使用罗技设定点软件来自定义鼠标的加速、宏和其他内容。鼠标开始双击,我不得不从罗技那里得到一个替代品,但他们只有 G700s(G700 已停产)所以他们把那个鼠标寄给了我。问题在于,尽管 G700s 与 G700 几乎相同,但它无法与设定点软件一起使用。

相反,它使用了罗技游戏软件,该软件很糟糕,并且缺少设置点软件中的许多选项。所以我希望能够将我的 G700s 与设定点软件一起使用。我已经尝试在 regedit 中更改供应商 ID 和产品 ID,但它没有效果,并且每次重新启动鼠标时都会重置。

没有包含可编辑的兼容设备列表的文件。我认为兼容设备的列表是直接写入软件的。我在 IDA Pro 中打开了 setpoint.exe 文件并搜索了字符串 G700 并找到了一行。它是 unicode 格式的。如何编辑此行或行块以与 G700 配合使用?

2个回答

使用十六进制编辑器。其中有很多,我最喜欢的是wxHexEditor

但是,这可能不起作用至少有 3 个原因:

  • 该字符串G700s比 长一个字节G700,因此您可能没有足够的空间。如果列表中包含多个鼠标模型,您或许可以将其中一个重命名为G700s,将下一个重命名为一个字母的名称。
  • 该软件可能会通过 USB 总线获取设备 ID,根据 ID 列表对其进行检查,并将该字符串仅用于用户输出。您必须找到并更改此列表,而不是输出字符串。6d 04在您的软件中搜索(Logitech 的 USB id,字节反转,因为处理器是小端)的重复出现
  • G700s 可能在 USB 总线上使用不同的协议(可能不是用于正常的鼠标交互,而是用于宏和类似的东西),因此设置点软件将无法使用鼠标的任何高级功能。
  1. USB 设备由 VID/PID 而不是字符串识别

    你在那里找到的那​​个字符串很可能只是为了打印到屏幕上,所以尝试找到旧鼠标的VID PID标识并用新鼠标替换。VID将最有可能相同,PID通常只是一个增量。

  2. 如果您的鼠标开始双击/错过点击/故障

    那么可能只是错误的微动开关。如果您更换它(更改软件的方式要简单得多),那么它应该可以像新的一样工作(如果您仍然使用旧鼠标并且没有其他错误,那么它应该可以正常工作)。

  3. 如果没有任何帮助并且协议兼容

    那么你可以制作USB-USB桥接器。使用VID PIDPC端(USB客户端)上的旧鼠标另一个将连接真实鼠标的USB主机的信息字符串制作USB设备网桥应该只是在新鼠标和 PC 之间转发数据包。这将导致鼠标的小延迟,但应该可以工作。

    你会需要一些MCU与2 USB的(和USB主机功能)或网络2 MCU的单USB通过像其他连接RS232,SPI或什么的。我最喜欢的是ATMEL UC3芯片,但还有很多其他的

[笔记]

取自:USB VID/PID 列表

VID = 046D [hex] ... Logitech
PID = C06B [hex] ... G700 Wireless Gaming Mouse

在设备管理器中查找新鼠标VID/PID或其驱动程序inf文件...