VC实现的病毒专杀工具完整实例_C 语言

本文实例讲述了VC实现的病毒专杀工具的方法。非常实用,分享给大家供大家参考。具体实现方法如下:

如今病毒木马蠕虫层出不穷,变种也是一个接一个。反病毒公司以及各大安全公司随着影响很大的病毒的出现都会免费提供病毒专杀工具,这个举措对普通用户来说确实很有帮助。其实写病毒专杀工具也不像大家想象的那么神秘,利用SDK写个控制台程序来实现病毒专杀,因无须写图形界面,所以简便快捷!你自己也能写!不信?就接着看吧^_^ 废话不说了,接下来就开始谈谈病毒专杀工具的思路及实现方法。

本文中讲解的病毒专杀工具是针对木马、蠕虫等独立的程序而言的广义的病毒而言,而不是指那种自我复制感染PE文件的依附于其他程序的那种狭义的病毒。因为写那种病毒的专杀工具需要PE文件结构等知识,相对而言有点难度,所以我们就先从相对简单点的开始,难的以后再介绍。

对于大多数病毒而言,杀毒的思路其实很简单,那就是:终止病毒的进程、删除自启动项目(一般在注册表中的run*主键下)、删除病毒文件,对设置了文件关联的病毒而言还要修改注册表恢复文件关联。下面将分别陈述。

一.终止进程

以前网上曾有许多朋友问我怎么根据文件名终止指定进程,为什么使用函数 TerminateProcess()不能直接终止指定进程。首先让我们来看看函数TerminateProcess()的声明吧:Bool TerminateProcess(HANDLE hPeocess,UINT uExitCode),其中第一个参数为进程句柄,而不是进程名称(文件名)。那怎样才能获得指定进程的句柄呢?我们可以使用函数OpenProcess (),其原型为

复制代码 代码如下:

HANDLE OpenProcess(
DWORD dwDesiredAccess, // 访问标志
BOOL bInheritHandle, // 处理继承的标志
DWORD dwProcessId // 进程标识号,即进程ID
);

最后一个参数就是该进程的ID,进程句柄和进程ID是两回事,这时你可能很郁闷:怎么知道进程ID呢?方法当然有啦!在Windows9X/2000/XP/2003中,微软均提供了用来枚举进程的ToolHelp API系列函数。先运用函数CreateToolhelp32Snapshot()取得快照句柄,然后使用Process32First()以及 Process32Next()枚举当前的进程。枚举过程中会将每一个进程的信息存放到PROCESSENTRY32结构中。 PROCESSENTRY32的原型为:

复制代码 代码如下:

typedef struct tagPROCESSENTRY32
{
DWORD dwSize; // 结构大小;
DWORD cntUsage; // 此进程的引用计数;
DWORD th32ProcessID; // 进程ID;
DWORD th32DefaultHeapID; // 进程默认堆ID;
DWORD th32ModuleID; // 进程模块ID;
DWORD cntThreads; // 此进程开启的线程计数;
DWORD th32ParentProcessID; // 父进程ID;
LONG pcPriClassBase; // 线程优先权;
DWORD dwFlags; // 保留;
char szExeFile[MAX_PATH]; // 进程全名;
} PROCESSENTRY32;

其中th32ProcessID就是进程的ID,szExeFile为该进程的文件名。所以要终止指定进程,我们可以枚举进程,逐一判断szExeFile是否和我们欲终止的进程名相同,如果相同就取其th32ProcessID参数,然后代入OpenProcess函数,取得目标进程的句柄。这样就可以利用函数TerminateProcess()终止该进程了。我写了个终止指定进程的函数,如下:

复制代码 代码如下:

void KillProcessFromName(LPCTSTR name)//name为你要终止的进程的名称,Win9X则需包括路径
{
PROCESSENTRY32 pe;//定义一个PROCESSENTRY32结类型的变量
HANDLE hShot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);// 创建快照句柄
pe.dwSize=sizeof(PROCESSENTRY32);//一定要先为dwSize赋值
if (Process32First(hShot,&pe))
{
do
{if (strcmp(pe.szExeFile,name)==0) //判断此进程是否为你要终止的进程
HANDLE hProcess=OpenProcess(PROCESS_ALL_ACCESS,FALSE,pe.th32ProcessID);//如果是就利用其ID获得句柄
TerminateProcess(hProcess,0);//终止该进程
}
while(Process32Next(hkz,&pe));
}
CloseHandle(hShot);//最后别忘记Close
}

在使用时只要在main()主函数里调用函数KillProcessFromName(),把参数设为你要终止的进程的名称即可,Win9X则需包括路径。还有一点值得注意一下,就是别忘了#include 。

二、删除文件

这一步骤很简单,调用函数DeleteFile()即可,Bool DeleteFile(LPCTSTR lpFilename),把lpFilename设要指向删除的文件的文件名的指针即可,可包含具体路径。

三、修改注册表,删除启动项及文件关联

首先用函数RegOpenKeyEx()打开目标主键,RegOpenKeyEx()函数原型为:

复制代码 代码如下:

LONG RegOpenKeyEx(
HKEY hKey,// 将要打开的键的句柄
LPCTSTR lpSubKey,// 指向将要打开的包含子建的名称字符串指针
DWORD ulOptions,// 为保留字,必须为NULL
REGSAM samDesired,// 访问权限
PHKEY phkResult//指向打开键的句柄指针
);

获得句柄后用函数RegSetValueEx()进行修改键值,函数原型为:

复制代码 代码如下:

LONG RegSetValueEx(
HKEY hKey, //当前打开的键的句柄
LPCTSTR lpValueName, //指向非空的包含要查询的值名称的字符串指针
DWORD Reserved, //保留值,必须为NULL
DWORD dwType,//键值类型,比如REG_SZ、REG_DWORD等
CONST BYTE * lpData , //指向键值数据的指针,注意此变量类型,不是LPCTSTR!
DWORD cbData//指向保存设定值长度变量的指针,以字节为单位
);

当然也可以用函数RegDeleteValue()来删除键值。操作完毕后别忘了用函数RegCloseKey()来Close。

使用这些函数很简单,只要把相应的参数换为你要删除或修改注册表的相应数值,唯一值得注意的是RegSetValueEx()函数中第5个参数的类型是BYTE而不是LPCTSTR!通过这些就可以很方便删除指定启动项以及恢复文件关联,为了便于大家理解,我举个修复EXE文件关联的例子,大家修改相应的参数就可以适用其它键值的修改,换用RegDeleteValue函数就可以实现删除自启动项。

复制代码 代码如下:

HKEY hKey;
LPCTSTR data1="/"%1/" %*";//EXE文件默认的open方式,”%1/"表EXE文件本身
DWORD lResult=RegOpenKeyEx(HKEY_CLASSES_ROOT,"exefile//shell//open//command",0,KEY_WRITE,&hKey);
if(lResult==ERROR_SUCCESS)
RegSetValueEx(hKey,"",NULL,REG_SZ,(LPBYTE)data1,9);//修改键值
RegCloseKey(hKey);

到这里,一个病毒专杀工具的模型就已初步完成了,大家自己编写时只需把文中函数的形参换为你要杀的目标病毒的相应特征数据编译即可。这个是个简单的专杀工具,只能对付普通的木马、蠕虫等病毒,大家应具体情况具体分析,根据具体情况扩充该程序功能,比如有些木马是通过修改win.ini、system.ini来实现自动运行,我们就需操作文件删除相应数据,除此之外,有时还需添加终止服务、卸载DLL模块、进入RING0操作等功能。总之,我相信大家一定能自己写出病毒木马专杀工具的!呵呵,是不是很有成就感呢!

希望本文所述对大家的VC程序设计有所帮助。

时间: 2024-12-09 19:50:11

VC实现的病毒专杀工具完整实例_C 语言的相关文章

U盘病毒专杀工具 移动存储卫士

[软件简介] U 盘病毒又称 Autorun 病毒,是通过 AutoRun.inf 文件使对方所有的硬盘完全共享或中木马的病毒.随着 U 盘,移动硬盘,存储卡等移动存储设备的普及,U 盘病毒也随之泛滥起来.近日,国家计算机病毒处理中心发布公告称 U 盘已成为病毒和恶意木马程序传播的主要途径.面对这一需要,U 盘病毒专杀工具 - USBCleaner 应运而生. USBCleaner名为U盘病毒专杀工具,这里的U盘病毒其实是一种泛指也是不规范的称法,它应该包括U盘,移动硬盘,记忆棒,SD存储卡,M

U盘病毒专杀工具V6.0 Build20070313(完全版) 下载_常用工具

U盘病毒又称Autorun病毒,是通过AutoRun.inf文件使对方所有的硬盘完全共享或中木马的病毒,随着U盘,移动硬盘,存储卡等移动存储设备的普及,U盘病毒也随之泛滥起来.面对这一需要,U盘病毒专杀工具USBCleaner应运而生了. V6.0Build20070313修正部分系统tmp目录获取失败,导致出现误报的BUG 修正部分代码错误对代码重新进行整合加入TAB控件,更新程序界面 加入U盘后台监控模块V1.0版,提供实时监控U盘的功能 加入修复windows安全模式功能 加入修复显示文件

sxs.exe 病毒专杀工具 最近更新_病毒查杀

关于sxs.exe 病毒查杀文章请看下面的链接 http://www.jztop.com/net/bdzq/du/20060813/26006.html 杀毒前请先断开网络连接,运行专杀工具完以后重启电脑 下载地址: 下载sxs.exe病毒专杀工具 *************************************** 前些天电脑中了"sxs.exe病毒",后来整理了一篇"sxs.exe病毒手动删除方法",没想到短短几天时间,通过搜索找过来的朋友就突破800

Autorun随机7位字母命名的病毒专杀工具_病毒查杀

<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>七位字母命名的病毒专杀工具</tit

woso.exe,wlso.exe,wmso.exe, woso.exe,ztso.exe 等木马盗号病毒专杀工具_病毒查杀

具体问题是这样的.卡巴杀出这些木马程序,但是我发现在"系统配置实用程序"里面的"启动"选项里面,有一些东西((可能最开始是病毒文件)).比如说,  C;DOCUME~1\Acer\LOCALS~1\Temp\wgso.exe.  C;DOCUME~1\Acer\LOCALS~1\Temp\wlso.exe.  C;DOCUME~1\Acer\LOCALS~1\Temp\wmso.exe.  C;DOCUME~1\Acer\LOCALS~1\Temp\woso.exe

5月一更新的Auto病毒专杀工具 V2.0 _简体中文绿色免费版_病毒查杀

Auto病毒专杀是一款专门用于预防及查杀Auto病毒.U盘病毒.闪盘病毒的工具.     除了可以30秒闪电查杀RavMone. Rose.Sxs.Fun.xls等几十种通过U盘传播的病毒,还可以对系统实行主动防御,自动检测清除插入U盘内的病毒,从根本上杜绝病毒通过U盘感染电脑,解决你的后顾之忧.免疫功能让病毒永远也无法进入你的U盘:解锁功能解除U盘锁定状态,解决无法安全删除设备问题:修复功能修复无法显示隐藏文件.双击无法打开硬盘.清除右键Auto字样.修复无法打开杀毒软件.    最新更新:

sxs.exe病毒专杀工具之“橙色八月专杀工具.bat”_病毒查杀

病毒特征:在每个盘根目录下自动生成sxs.exe,autorun.inf文件,有的还在windows\system32下生成SVOHOST.exe 或 sxs.exe ,文件属性为隐含属性.自动禁用杀毒软件. sxs.exe病毒手动删除方法  Ctrl + Alt + Del 任务管理器,在进程中查找 sxs 或 SVOHOST(不是SVCHOST,相差一个字母),有的话就将它结束掉(并不是所有的系统都显示有这个进程,没有的就略过此步). 显示隐藏文件,如果显示不了,则打开写字板将以下代码另存为

威金logo1.exe病毒专杀工具 下载_病毒查杀

病毒专杀-威金logo1.exe 病毒专杀工具包+威金logo1.exe 补丁 病毒专杀-威金logo 1.exe 病毒专杀工具包+威金logo 1.exe 补丁 集合了5个杀毒公司(瑞星,金山)的产品. 和.bat批量删除威金logo 1.exe 病毒的生成文件. 威金logo 1.exe 病毒的补丁. 用了觉得好的话,请多来本站发表评论和留言. 点击下载此文件

阿里云发布勒索病毒专杀工具:一键修复 彻底查杀

从5月12日爆发至今,名为WannaCry的勒索病毒让全球数十万Windows计算机中招,黑客将用户计算机中的重要文件实施加密,并索要赎金解锁.这种情况如果发生在企业服务器当中,那么将带来严重损失. 对此,阿里云安全团队经过不懈努力研究,终于找到解救被WannaCry病毒劫持的计算机的办法. 5月20日,阿里云安全团队向云上.云下服务器用户开放勒索病毒"一键解密和修复"工具. 经过实际测试,如果被勒索后未重启操作系统,该工具可以恢复已被WannaCry勒索病毒加密的文件. 阿里云建议,