我做了一個小程式,向串口發送資料,如何才能判斷我要發送資料的串口有沒有被攔截,主要是不想讓別人看見我發的資料,前問如何判斷電腦上是否開了串口攔截軟體?
uj5u.com熱心網友回復:
下面是 hook comm的 例子
/*
first call: "\\.\COM1 CreateFileW"
then call: "\\.\COM1 CreateFileA"
*/
HANDLE WINAPI myCreateFileA(LPCSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode,
LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition,
DWORD dwFlagsAndAttributes, HANDLE hTemplateFile)
{// unhook first
g_HookApi.UnhookOneApi(&myapi_info[CREATEFILEA]);
HANDLE handle=CreateFileA(lpFileName, dwDesiredAccess, dwShareMode, lpSecurityAttributes,
dwCreationDisposition, dwFlagsAndAttributes, hTemplateFile);
// hook again
g_HookApi.HookOneApi(&myapi_info[CREATEFILEA]);
//
if(handle != INVALID_HANDLE_VALUE)
{// handle
if(g_CommFile != handle)// not comes
{// because first call: "\\.\COM1 CreateFileW"
char *CommPort=0;
CommPort=strrchr(lpFileName,'\\');
if(CommPort) CommPort++;
else CommPort=(char*)lpFileName;
if(strnicmp(CommPort,"COM",3)==0)
{//save handle and port name
g_CommFile=handle;
strcpy(g_CommStruc.CommName,CommPort);
#ifdef _DEBUG
SendData2Dialog(WM_CFA_MSG,(BYTE*)(g_CommStruc.CommName),strlen(g_CommStruc.CommName)+1);
#endif
}
}
}
return handle;
}
//
HANDLE WINAPI myCreateFileW(LPCWSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode,
LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition,
DWORD dwFlagsAndAttributes, HANDLE hTemplateFile)
{// unhook first
g_HookApi.UnhookOneApi(&myapi_info[CREATEFILEW]);
HANDLE handle=CreateFileW(lpFileName, dwDesiredAccess, dwShareMode, lpSecurityAttributes,
dwCreationDisposition, dwFlagsAndAttributes, hTemplateFile);
// hook again
g_HookApi.HookOneApi(&myapi_info[CREATEFILEW]);
//
if(handle != INVALID_HANDLE_VALUE)
{
if(g_CommFile != handle)
{
char fname[MAX_PATH]={0};//'\\.\COM1'
WideCharToMultiByte(CP_ACP, 0, lpFileName, -1, fname, MAX_PATH/2 ,NULL,NULL);
char *CommPort=0;
CommPort=strrchr(fname,'\\');
if(CommPort) CommPort++;
else CommPort=fname;
if(strnicmp(CommPort,"COM",3)==0)
{//save handle and port name
g_CommFile = handle;
strcpy(g_CommStruc.CommName,CommPort);
#ifdef _DEBUG
SendData2Dialog(WM_CFW_MSG,(BYTE*)(g_CommStruc.CommName),strlen(g_CommStruc.CommName)+1);
#endif
}
}
}
return handle;
}
uj5u.com熱心網友回復:
你可以加密發送接收呀uj5u.com熱心網友回復:
如果人家在外面并接一個串口接收, 你怎么監控?uj5u.com熱心網友回復:
能不能講解一下他的原理,或者給一個完整的代碼,謝謝了
uj5u.com熱心網友回復:
https://download.csdn.net/download/schlafenhamster/5202391本程式 窺視 串口的 活動。主要 hook 了: {"KERNEL32.DLL", "CreateFileA","myCreateFileA",(FARPROC)myCreateFileA}, {"KERNEL32.DLL", "CreateFileW","myCreateFileW",(FARPROC)myCreateFileW}, {"KERNEL32.DLL", "GetCommState","myGetCommState",(FARPROC)myGetCommState}, {"KERNEL32.DLL", "ReadFile", "myReadFile", (FARPROC)myReadFile}, {"KERNEL32.DLL", "ReadFileEx", "myReadFileEx", (FARPROC)myReadFileEx}, {"KERNEL32.DLL", "WriteFile", "myWriteFile", (FARPROC)myWriteFile}, {"KERNEL32.DLL", "WriteFileEx","myWriteFileEx",(FARPROC)myWriteFileEx}, {"KERNEL32.DLL", "CloseHandle","myCloseHandle",(FARPROC)myCloseHandle},
uj5u.com熱心網友回復:
串口資源應該是獨占的,可是嘗試打開,如果成功就是沒被監視。uj5u.com熱心網友回復:
監控埠的程式是不占用埠的,如果監控串口的程式占用埠,它還監控誰啊?轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/43674.html
標籤:基礎類
上一篇:三次貝塞爾曲線,代入X求Y
