使用
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
);