如何监听第三方程序对指定串口的读写数据?

使用
https://github.com/Microsoft/Detours
可以很方便的进行 hook。

hook 该函数获取串口信息 和  lpDCB 数据
BOOL BuildCommDCBA(
  LPCSTR lpDef,
  LPDCB  lpDCB
);


hook 该函数比较上面函数获得到的 lpDCB  数据,如果相同则获取 hFile 句柄。
BOOL SetCommState(
  HANDLE hFile,
  LPDCB  lpDCB
);

hook 写函数并比较 hFile 值,如果相等则转发发送的数据
BOOL WriteFile(
  HANDLE       hFile,
  LPCVOID      lpBuffer,
  DWORD        nNumberOfBytesToWrite,
  LPDWORD      lpNumberOfBytesWritten,
  LPOVERLAPPED lpOverlapped
);

hook 读函数并比较 hFile  值,如果相等则转发发送的数据
BOOL ReadFile(
  HANDLE       hFile,
  LPVOID       lpBuffer,
  DWORD        nNumberOfBytesToRead,
  LPDWORD      lpNumberOfBytesRead,
  LPOVERLAPPED lpOverlapped
);
posted @ 2019-04-03 16:15  學海無涯  阅读(1950)  评论(0编辑  收藏  举报