一个后门的功能模块,就是一个简单的任务管理器!
代码如下:
//简单的实现任务管理器
//write by Gxter
//date:6.1.2005
#include "stdio.h"
#include "windows.h"
#include "tlhelp32.h"
#pragma comment(lib,"th32.lib")
//-----------------------------------------------------全局变量
char *Process="";
int sum=0;
HANDLE hSnap,hkernel32;
PROCESSENTRY32 pe; //
BOOL bNext;
HANDLE hToken;
TOKEN_PRIVILEGES tp; //
LUID Luid;
LPVOID p;
FARPROC pfn;
//------------------------------------------------------功能函数
int ProcessList();//列出主机进程列表
int killProcess();//结束一个进程
//------------------------------------------------------程序开始
int main()
{
if(ProcessList() == 1)
{
printf("ProcessList() error!");
}
killProcess();
printf("/n---process end !----");
getchar();
return 0;
}
//列出本机的进程
int ProcessList()
{
if (!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,&hToken))
{
return 1;
}
if (!LookupPrivilegeValue(NULL,SE_DEBUG_NAME,&Luid))
{
return 1;
}
tp.PrivilegeCount = 1;
tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
tp.Privileges[0].Luid = Luid;
if (!AdjustTokenPrivileges(hToken,0,&tp,sizeof(TOKEN_PRIVILEGES),NULL,NULL))
{
return 1;
}
pe.dwSize = sizeof(pe);
hSnap=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
bNext=Process32First(hSnap, &pe);
while(bNext)
{
printf("%d,%s/n",++sum,pe.szExeFile);//显示
bNext=Process32Next(hSnap, &pe);
}
printf("/n本地共有个%d进程",sum);//显示
CloseHandle(hSnap);
return 0;
}
//结束一个进程
int killProcess()
{
HANDLE hSnap,hProcess;
PROCESSENTRY32 pe;
BOOL bNext;
pe.dwSize = sizeof(pe);
//输入要结束进程名
printf("/ninput kill process name:");
scanf("%s",Process);
hSnap=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
bNext=Process32First(hSnap, &pe); //获得第一个进程的结构
while(bNext)
{
if(!stricmp(pe.szExeFile,Process))//对比进程名
{
//终止cstrike.exe(半条命游戏)进程
hProcess=OpenProcess(PROCESS_TERMINATE,1,pe.th32ProcessID);//获得一个进程的句柄
TerminateProcess(hProcess,0);//结束进程
CloseHandle(hProcess);//释放句柄资源
}
bNext=Process32Next(hSnap, &pe);//遍历下一个进程
}
CloseHandle(hSnap);
return 0;
}