DWORD WINAPI mainfn(LPVOID lp) { g_dwPID = GetCurrentProcessId(); pid_2_name(GetCurrentProcessId(), g_szProcessName, sizeof(g_szProcessName)); _snprintf(g_szSimpleLogFile, sizeof(g_szSimpleLogFile)-1, "c:\\%d.%s.simple.log", g_dwPID, g_szProcessName); _snprintf(g_szDetailLogFile, sizeof(g_szDetailLogFile)-1, "c:\\%d.%s.detail.log", g_dwPID, g_szProcessName); InitDll("ws2_32.dll", &ws2_32); hook_api(&ws2_32, "connect", (DWORD)hack_connect, &new_connect); hook_api(&ws2_32, "WSAConnect", (DWORD)hack_WSAConnect, &new_WSAConnect); hook_api(&ws2_32, "send", (DWORD)hack_send, &new_send); hook_api(&ws2_32, "WSASend", (DWORD)hack_WSASend, &new_WSASend); hook_api(&ws2_32, "recv", (DWORD)hack_recv, &new_recv); hook_api(&ws2_32, "WSARecv", (DWORD)hack_WSARecv, &new_WSARecv); hook_api(&ws2_32, "sendto", (DWORD)hack_sendto, &new_sendto); hook_api(&ws2_32, "WSASendTo", (DWORD)hack_WSASendTo, &new_WSASendTo); hook_api(&ws2_32, "recvfrom", (DWORD)hack_recvfrom, &new_recvfrom); hook_api(&ws2_32, "WSARecvFrom", (DWORD)hack_WSARecvFrom, &new_WSARecvFrom); hook_api(&ws2_32, "gethostbyname", (DWORD)hack_gethostbyname, &new_gethostbyname); return 0; }
// Yes, this _has_ to be included in every project. // Visual C++ won't use it when imported from a library // and just defaults to msvcrt's one in this case. BOOL APIENTRY DllMain(HMODULE hDll, DWORD ulReasonForCall, LPVOID lpReserved) { switch(ulReasonForCall) { case DLL_PROCESS_ATTACH: InitDll(hDll); break; } return TRUE; }
/*! @brief コンストラクタ BREGEXP.DLL 初期化、正規表現キーワード初期化を行う。 @date 2002.2.17 YAZAKI CShareDataのインスタンスは、CProcessにひとつあるのみ。 @date 2007.08.12 genta 正規表現DLL指定のため引数追加 */ CRegexKeyword::CRegexKeyword(LPCTSTR regexp_dll ) { InitDll( regexp_dll ); // 2007.08.12 genta 引数追加 MYDBGMSG("CRegexKeyword") m_pTypes = NULL; m_nTypeIndex = -1; m_nTypeId = -1; RegexKeyInit(); }
// // 函数: WndProc(HWND, UINT, WPARAM, LPARAM) // // 目的: 处理主窗口的消息。 // // WM_COMMAND - 处理应用程序菜单 // WM_PAINT - 绘制主窗口 // WM_DESTROY - 发送退出消息并返回 // // LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { int wmId, wmEvent; PAINTSTRUCT ps; HDC hdc; switch (message) { case WM_COMMAND: wmId = LOWORD(wParam); wmEvent = HIWORD(wParam); // 分析菜单选择: switch (wmId) { case IDM_ABOUT: DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About); break; case IDM_EXIT: DestroyWindow(hWnd); break; case IDB_BUTTON: break; case IDB_BUTTON_CONNECT: TCHAR ip_port[MAX_NUM_BUF]; memset(ip_port,0,MAX_NUM_BUF); GetWindowText(ipEditHwnd, ip_port, MAX_NUM_BUF); strcpy_s(ip, sizeof(ip), ip_port); memset(ip_port,0,MAX_NUM_BUF); GetWindowText(portEditHwnd, ip_port, MAX_NUM_BUF); port = atoi(ip_port); if(connectStatus != TRUE)//还未连接服务器,现在连接 { // Windows Sockets 动态库的初始化 InitDll(hWnd); //创建SOCKET InitSocket(clientSocket, hWnd); // 连接服务器 connectServer(hWnd); } if(connectStatus != TRUE) { mySetWindowText("连接服务器失败"); break; } break; case IDB_BUTTON_SEND: { if (connectStatus == FALSE) { mySetWindowText("还没连接,别乱发数据"); break; } // 设置和获取文本框里的内容 TCHAR editTextBuffer[MAX_NUM_BUF]; memset(editTextBuffer,0,MAX_NUM_BUF); GetWindowText(sendEditHwnd, editTextBuffer, MAX_NUM_BUF); int ret = sendLine(clientSocket, editTextBuffer, hWnd); if (SOCKET_ERROR == ret) { mySetWindowText("发送失败"); break; } break; } case IDB_BUTTON_CLOSE: { // 如果已经关闭 不作反应 if (connectStatus == FALSE) { mySetWindowText("client has stopped"); break; } sendLine(clientSocket, "close", hWnd); int ret = closeService(clientSocket); if(SOCKET_ERROR == ret) { mySetWindowText("client closesocket fail"); break; }else if (TRUE == ret) { mySetWindowText("客户端关闭socket成功"); break; } mySetWindowText("服务器关闭不成功,但是怎么失败的我也不知道"); break; } default: return DefWindowProc(hWnd, message, wParam, lParam); } break; case WM_LBUTTONDOWN: { // 设置和获取文本框里的内容 /* TCHAR editTextBuffer[MAX_NUM_BUF]; GetWindowText(receiveEditHwnd, editTextBuffer, MAX_NUM_BUF); HDC hdc = GetDC(hWnd); TCHAR newTextStr[MAX_NUM_BUF]; wsprintf(newTextStr,TEXT("%s - %s"),editTextBuffer,"receiveEditHwnd"); SetWindowText(receiveEditHwnd, newTextStr); */ break; } case WM_CREATE: { receiveEditHwnd = CreateWindow("edit", NULL, WS_CHILD | WS_VISIBLE | WS_BORDER | ES_AUTOHSCROLL | ES_MULTILINE , 30, 80, 300, 200, hWnd, (HMENU)HMENU_ID, ((LPCREATESTRUCT) lParam) -> hInstance, NULL); sendEditHwnd = CreateWindow("edit", NULL, WS_CHILD | WS_VISIBLE | WS_BORDER | ES_AUTOHSCROLL | ES_MULTILINE , 30, 370, 300, 50, hWnd, (HMENU)HMENU_ID, ((LPCREATESTRUCT) lParam) -> hInstance, NULL); ipEditHwnd = CreateWindow("edit", TEXT("192.168.1.101"), WS_CHILD | WS_VISIBLE | WS_BORDER | ES_AUTOHSCROLL | ES_MULTILINE , 50, 430, 130, 30, hWnd, (HMENU)HMENU_ID, ((LPCREATESTRUCT) lParam) -> hInstance, NULL); portEditHwnd = CreateWindow("edit", TEXT("5419"), WS_CHILD | WS_VISIBLE | WS_BORDER | ES_AUTOHSCROLL | ES_MULTILINE , 240, 430, 60, 30, hWnd, (HMENU)HMENU_ID, ((LPCREATESTRUCT) lParam) -> hInstance, NULL); buttonConnect = CreateWindow("button", TEXT("连接服务"), WS_CHILD | WS_VISIBLE | WS_BORDER , 30, 470, 90, 30, hWnd, (HMENU)IDB_BUTTON_CONNECT, ((LPCREATESTRUCT) lParam) -> hInstance, NULL); buttonSend = CreateWindow("button", TEXT("发送数据"), WS_CHILD | WS_VISIBLE | WS_BORDER , 130, 470, 90, 30, hWnd, (HMENU)IDB_BUTTON_SEND, ((LPCREATESTRUCT) lParam) -> hInstance, NULL); buttonClose = CreateWindow("button", TEXT("断开服务"), WS_CHILD | WS_VISIBLE | WS_BORDER , 230, 470, 90, 30, hWnd, (HMENU)IDB_BUTTON_CLOSE, ((LPCREATESTRUCT) lParam) -> hInstance, NULL); buttonHwnd = CreateWindow("button", TEXT("B"), WS_CHILD | WS_VISIBLE | WS_BORDER , 240, 10, 30, 20, hWnd, (HMENU)IDB_BUTTON, ((LPCREATESTRUCT) lParam) -> hInstance, NULL); break; } case WM_PAINT: hdc = BeginPaint(hWnd, &ps); // TODO: 在此添加任意绘图代码... EndPaint(hWnd, &ps); break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } return 0; }