cmd_process.cpp
来自「简单的远程控制工具,分为服务器与客户斋,让你了解socket编程的知识.」· C++ 代码 · 共 147 行
CPP
147 行
/* Back Orifice 2000 - Remote Administration Suite
Copyright (C) 1999, Cult Of The Dead Cow
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
The author of this program may be contacted at dildog@l0pht.com. */
#include "stdafx.h"
#include "..\\Ctrl_Srvr9.h"
#include "..\\MainFrm.h"
#include "cmd_process.h"
#include "pviewer.h"
#include "strHandle.h"
int CmdProc_ProcessList(char * strMachine_Name, CWnd * pWnd)
{
char svBuffer[1024];
PROCESSINFO *pinfo,*cur;
CMainFrame *pMainWnd = (CMainFrame *)pWnd;
if(strMachine_Name) if(strMachine_Name[0]=='\0') strMachine_Name=NULL;
pinfo=CreateProcListSnapshot(strMachine_Name);
for(cur=pinfo;cur;cur=cur->next)
{
THREADINFO *pti;
int nThreads;
nThreads=0;
for(pti=cur->pThread;pti;pti=pti->next) nThreads++;
wsprintf(svBuffer,"PROC: (0x%X) %s %d threads",cur->dwProcID,cur->svApp,nThreads);
pMainWnd->SendStringMsg ((LPCTSTR)svBuffer);
// IssueAuthCommandReply(cas_from,comid,1,svBuffer);
}
// pMainWnd->SendStringMsg ("End process list");
// IssueAuthCommandReply(cas_from,comid,0,"End process list");
DestroyProcListSnapshot(pinfo);
return 0;
}
int CmdProc_ProcessKill(char * strProc_ID)
{
// CMainFrame *pMainWnd = (CMainFrame *)AfxGetApp ()->m_pMainWnd;
// Get pid string (hex)
char *svPid;
CharUpper(strProc_ID);
svPid=BreakString(strProc_ID,"0X");
if(svPid==NULL) svPid=strProc_ID;
// Convert to dword
DWORD dwPid;
dwPid=0;
while(*svPid)
{
char c;
c=*svPid;
if(c>='A' && c<='F') c=c-'A'+0xA;
else if(c>='0' && c<='9') c-='0';
else c=0;
dwPid<<=4;
dwPid|=c;
svPid++;
}
// Open process handle
HANDLE hProc;
hProc=OpenProcess(PROCESS_TERMINATE,FALSE,dwPid);
if(hProc==NULL)
{
// pMainWnd->SendStringMsg ("Could not access process.");
// IssueAuthCommandReply(cas_from,comid,0,"Could not access process.");
return -1;
}
if(TerminateProcess(hProc,0)==0)
{
// pMainWnd->SendStringMsg ("Could not terminate process.");
// IssueAuthCommandReply(cas_from,comid,0,"Could not terminate process.");
return -1;
}
// pMainWnd->SendStringMsg ("Process terminated.");
// IssueAuthCommandReply(cas_from,comid,0,"Process terminated.");
return 0;
}
int CmdProc_ProcessSpawn(char * strFile_Name)
{
int nRC;
STARTUPINFO si;
PROCESS_INFORMATION pi;
memset(&si,0,sizeof(STARTUPINFO));
si.cb=sizeof(STARTUPINFO);
si.dwFlags=STARTF_FORCEOFFFEEDBACK;
nRC = CreateProcess(NULL,strFile_Name,NULL,NULL,0,0,NULL,NULL,&si,&pi);
if (nRC)
return 0;
else
return -1;
}
/*
char *BreakString(char *svLines, char *svTok)
{
char *p,*s;
char *tok;
p=svLines;
if(p==NULL) return NULL;
while(*p!='\0') {
for(s=p,tok=svTok;(*s)&&(*tok);s++,tok++) {
if((*s)!=(*tok)) break;
}
if((*tok)=='\0') {
*p='\0';
return p+lstrlen(svTok);
}
p++;
}
return NULL;
}
*/
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?