龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > C/C++开发 >

VC实现的病毒专杀工具完整实例(2)

时间:2014-10-25 02:27来源:网络整理 作者:网络 点击:
分享到:
首先用函数RegOpenKeyEx()打开目标主键,RegOpenKeyEx()函数原型为: 复制代码 代码如下: LONG RegOpenKeyEx( HKEY hKey,// 将要打开的键的句柄 LPCTSTR lpSubKey,// 指向将要

首先用函数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程序设计有所帮助。

精彩图集

赞助商链接