我是否可以使用win32句柄以编程方式记录发送/接收到USB / COM的内容

问题描述 投票:0回答:1

我正在玩TEC-Microsystem设备(DX5100),它提供带有API的C ++ dll以打开连接:

HANDLE OpenSerialPort(char *PortName, DWORD SupporedBaud);

对于调试pruprose,我想跟踪发送/接收到端口的每个数据(一种在同一进程中工作的“嗅探器”)。当我可以访问Windows API句柄(HANDLE返回值)时,是否可以使用Win API设置任何“监听器”,以了解何时将数据发送到USB端口或从USB端口接收数据?

c++ winapi handle
1个回答
1
投票

正如@Some程序员dude所说,不能保证这是有效的Windows句柄,但是即使这样,您的选择也受到限制:

  1. 您将需要内核模式驱动程序来监视I / O到句柄
  2. 您需要使用诸如Detoursmhook之类的库将读取/写入功能修补到句柄。

后一种方法(与用户级别的任何API挂钩技术一样,都是不可靠的,因为如果目标进程使用任何欺骗手段来访问该句柄,您将不会收到通知。

可以通过自我修补(更改IAT表)在同一过程中完成,也可以通过APP_Init DLL或其他其他注入技术(例如LoadLibrary / CreateRemoteThread)进行注入,在具有注入的远程过程中完成。在任何情况下,您都必须在记录请求后将其转发到实际的ReadFile / WriteFile / DeviceIOControl函数。

要更改IAT表,您可能想参考我的Load EXE as DLL文章,该文章在无关的任务中使用相同的技术。 This articlethis articlethis article也具有更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.