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 + -
显示快捷键?