文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | 免费看大片 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院操作系统 木马病毒病毒专杀工具自己编
精品推荐
特别推荐
·趋势:新反病毒技术亟待成熟
·病毒反抗杀毒软件主要手段
·文件关联型木马的特殊化查杀
·杀毒技巧系列:杀毒、防恶意代码、脚本病毒的不完全合集
·识别非法进程及手工杀毒技巧
·清除系统隐藏病毒文件全攻略
·轻松找到恶意网站中藏的病毒
·一个防止U盘病毒的小技巧
·AUTO病毒致杀软失效并下载病毒
·禁止让瑞星2008随机启动的绝招
·通过客户端上网流程发现是否挂马
·不是这么简单 揭秘网友十大杀毒误区
·江民病毒播报:小心针对QQ的木马病毒
·注意!明星激情照被黑客利用传毒
·AUTO病毒破坏杀软下载恶意程序
·防止木马的入侵 木马清除方法大萃集
·精心设置卡巴斯基 彻底加快杀毒速度
·资深网管浅谈ARP欺骗类病毒的防治思路
·不再怕电脑病毒 电脑中毒后的6招处理方法
·如何让你的U盘做到100%预防电脑病毒
热点TOP10
·QQ聊天记录偷窥和QQ视频欺骗
·卡巴斯基6.0下载卡巴斯基6.0key激活码
·警惕高危木马病毒 随意下载病毒窃密码
·俄罗斯杀毒软件大蜘蛛登陆中国
·Flash漏洞最新疫情:一周感染190万用户
·迅雷5报称PP点点通含木马 下载须谨慎!
·卡巴斯基2009 Beta版 初步试用感受
·感染虫下载器感染exe文件下载病毒
·卡巴斯基Kaspersky 6.0半年免费激活码
·卡巴斯基发行手机版杀毒软件
·基础知识讲解 病毒的IFEO映像劫持技术
·警惕!武藤兰背后,隐藏着危机!
·灭毒有招 如何全面清除计算机病毒
·雅虎信使惊现安全漏洞
·“艾妮”感染型病毒下载器的解决
·识别非法进程及手工杀毒技巧
·轻松找到恶意网站中藏的病毒
·关门放狗穿透还原卡并下载木马
·超过6万个变种 灰鸽子病毒的“七宗罪”
·瑞星病毒播报:加载到系统进程中的木马

病毒专杀工具自己编

日期:2005年9月23日 作者: 查看:[大字体 中字体 小字体]


如今病毒木马蠕虫层出不穷,变种也是一个接一个。反病毒公司以及各大安全公司随着影响很大的病毒的出现都会免费提供病毒专杀工具,这个举措对普通用户来说确实很有帮助。其实写病毒专杀工具也不像大家想象的那么神秘,利用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 <TlHelp32.h>。

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

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

[1] [2] 下一页 




上一篇:DOS命令字典

下一篇:安全配置向导(SCW)为Win2003打造铜墙铁壁

病毒专杀工具自己编 相关文章:
·最受欢迎的网管工具集
·3GP手机视频转换工具WinAVI
·自己动手修改QQ等级
·男女生英文名大全-给自己起个好名字
·哪个星座会因父母而娶自己不爱的人???
·卡拉当然OK 录制自己的专辑
·自己制造无线网络增益天线
·打造自己的“品牌机”——修改BIOS全屏开机画面
·警惕高危木马病毒 随意下载病毒窃密码
·迎刃而解——破解密码的常用工具
病毒专杀工具自己编 相关软件:
·自己动手建立企业网站
·自己动手建设个人网站
·电脑装机、系统维护工具盘 2003版
·自己动手组装与维护多媒体电脑
·灵豚课件制作工具——课件精灵v1.0 beta
·U盘超级工具大全
·每天问自己十个问题
·JPG超强浏览压缩工具 V2.1
·微软Visio绘图工具
·深山红叶袖珍PE系统工具箱《玩电脑》特别版

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.vipcn.com
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.vipcn.com All Rights Reserved. 鄂ICP备05000083号Powered by:vipcn