我正在玩TEC-Microsystem设备(DX5100),它提供带有API的C ++ dll以打开连接:
HANDLE OpenSerialPort(char *PortName, DWORD SupporedBaud);
对于调试pruprose,我想跟踪发送/接收到端口的每个数据(一种在同一进程中工作的“嗅探器”)。当我可以访问Windows API句柄(HANDLE
返回值)时,是否可以使用Win API设置任何“监听器”,以了解何时将数据发送到USB端口或从USB端口接收数据?
正如@Some程序员dude所说,不能保证这是有效的Windows句柄,但是即使这样,您的选择也受到限制:
后一种方法(与用户级别的任何API挂钩技术一样,都是不可靠的,因为如果目标进程使用任何欺骗手段来访问该句柄,您将不会收到通知。
可以通过自我修补(更改IAT表)在同一过程中完成,也可以通过APP_Init DLL或其他其他注入技术(例如LoadLibrary / CreateRemoteThread)进行注入,在具有注入的远程过程中完成。在任何情况下,您都必须在记录请求后将其转发到实际的ReadFile / WriteFile / DeviceIOControl函数。
要更改IAT表,您可能想参考我的Load EXE as DLL文章,该文章在无关的任务中使用相同的技术。 This article,this article和this article也具有更多信息。