网络安全 频道

杀毒软件的简单实现

#endif
return FALSE;
}

if (hProc!=NULL)
CloseHandle(hProc);

return TRUE;
}

BOOL EnablePrivilege(LPTSTR PrivilegeName)
{
HANDLE hProc=NULL,hToken=NULL;
TOKEN_PRIVILEGES TP;
hProc=GetCurrentProcess(); //打开当前进程的一个伪句柄

//打开进程访问令牌,hToken表示新打开的访问令牌标识
if(!OpenProcessToken(hProc,TOKEN_ADJUST_PRIVILEGES,&hToken))
{
#ifdef DEBUGMSG
printf("OpenProcessToken() GetLastError reports %d\n",erron);
#endif
goto Close;
}

//提升权限
if(!LookupPrivilegeValue(NULL,PrivilegeName,&TP.Privileges[0].Luid))
{
#ifdef DEBUGMSG
printf("LookupPrivilegeValue() GetLastError reports %d\n",erron);
#endif
goto Close;
}

TP.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;
TP.PrivilegeCount=1;

//允许权限,主要根据TP这个结构
if(!AdjustTokenPrivileges(hToken,FALSE,&TP,sizeof(TP),0,0))
{
#ifdef DEBUGMSG
printf("AdjustTokenPrivileges() GetLastError reports %d\n",erron);
#endif
goto Close;
}

Close:

if (hProc!=NULL)
CloseHandle(hProc);

if (hToken!=NULL)
CloseHandle(hToken);

return FALSE;

if (hProc!=NULL)
CloseHandle(hProc);

if (hToken!=NULL)
CloseHandle(hToken);

return TRUE;
}

BOOL RegDelVXER (void)
{
HKEY hkey;
DWORD ret=0;

//打开注册表的Run项
ret=RegOpenKeyEx(HKEY_LOCAL_MACHINE,
"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run\\",
0,
KEY_ALL_ACCESS,
&hkey);

if (!(ret==ERROR_SUCCESS))
{
#ifdef DEBUGMSG
printf("RegOpenKeyEx() GetLastError reports %d\n",erron);
#endif
return FALSE;
}

//删除键值windows auto update。
ret=RegDeleteValue(hkey,"windows auto update");

if (ret==ERROR_SUCCESS)
{
#ifdef DEBUGMSG
printf("Success Delete\n");
#endif
}
else
{
#ifdef DEBUGMSG
printf("RegDeleteValue() GetLastError reports %d\n",erron);
#endif
RegCloseKey(hkey);
//exit(0);
}

RegCloseKey(hkey); //关闭打开的注册表项
return TRUE;
}

void Usage (LPCTSTR Parameter)
{
LPCTSTR Path="%SystemRoot%\\system32\\";

fprintf(stderr,"============================================================================\n"
" 杀毒软件的简单实现\n"
"环境:Win2K Adv Server + Visual C++ 6.0\n"
"作者:laoxie\n"
"主页:www.vipshell.net\n"
"OICQ:77199033\n"
"邮件:dtzj@avl.com.cn\n"
"使用方法:\n"
"%s 文件名。例如:%s msblast.exe or %s *.exe \n\n"
"注意事项:\n"
"本程序只是简单介绍杀毒软件的编写方法,所以有很多不完善的地方,包括:\n"
"1,本程序是以冲击波蠕虫做的例子\n"
"2,文件遍历只搜索了%s目录下的文件\n"
"3,本程序不能查杀冲击波变种\n\n"
"本程序只是用做代码交流,如有错误,还请多多包含!\n"
"============================================================================"
,Parameter,Parameter,Parameter,Path);
}

http://netadmin.77169.com/HTML/20070202005205_2.html

0
相关文章