使用方法:
输入 一 个 想要免疫的磁盘盘符,如C:\ D:\ E:\ 填完整!
回车即可
原理:
创建一个无法删除的文件夹(运用Windows文件系统的特性)
导致蠕虫写autorun.inf失败,丧失传播效果
(↓控制台版)
源码
/* antiAutoRun.cpp *
* Author:noexcept *
*/
//C++
#include <Windows.h>
#include <io.h>
#include <iostream>
#include <string>
using namespace std;
#define AUTORUN "autorun.inf" //同名文件夹
#define ANTIDELETE "\\con\\" //这个是无法删除的文件夹的名称,还有其他选择
bool Immune(string szDisk) //如"C:\"
{ //定向免疫
cout<<"\n试图免疫...";
if(access(szDisk.c_str(),S_OK)) //不存在此盘
{
cout<<"\nERROR: 不存在这个磁盘 "<<szDisk;
return false;
}
string dir;
dir+=szDisk;
dir+=AUTORUN;
BOOL bRet = CreateDirectory(dir.c_str(),nullptr); //创建文件夹
if(!bRet)
{ //failed
cout<<"\nERROR: 无法免疫此盘,可能有写保护或已经免疫。";
return false;
}
dir+=ANTIDELETE;
bRet = CreateDirectory(dir.c_str(),nullptr);
if(!bRet)
{ //failed
cout<<"\nERROR: 无法免疫此盘,可能有写保护或已经免疫。";
return false;
}
return true;
}
int main()
{
string szDisk;
cout<<"输入想要免疫的磁盘盘符(like C:\\): ";
cin>>szDisk;
if(Immune(szDisk))
cout<<"\n操作成功完成.";
else
cout<<"\n免疫失败!";
return 0;
}
运行后尝试一下,发现建立了一个autorun.inf文件夹,里面还有一个con文件夹。
试图删除,Win10没有反应,Win7直接报错,说找不到。con是Windows保留的文件名,进都进不去

提示:con不是唯一选择。
这个con最猛,普通指令还弄不死它,搞了好久才行
经测验,把上面的ANTIDELETE换成"XXX…"(后面跟三个点)以及 nul 等都可以免删

用各种删文件夹的命令都可以删他们滴
例如cmd指令 rd E:\autorun.inf\antidelete…
(先删里面的才行)
下面提供移除免疫器源码
/* disAntiAutoRun.cpp *
* Author:noexcept *
*/
//C++
#include <Windows.h>
#include <io.h>
#include <stdlib.h>
#include <iostream>
#include <string>
using namespace std;
#define AUTORUN "autorun.inf"
#define ANTIDELETE "\\con\\" //必须和上面那个一致
void DisImmune(string szDisk) //如"C:\"
{
cout<<"\n移除免疫...";
if(access(szDisk.c_str(),S_OK))
return;
string dir;
dir+=szDisk;
dir+=AUTORUN;
dir+=ANTIDELETE; //先删里面的才行
// RemoveDirectory(dir.c_str()); //哎呀呀,这样竟删不掉con
string cmd;
cmd+="rmdir \"\\\\.\\"; //用个UNC路径,这个招式很管用的
cmd+=dir;
cmd+="\" /s /q";
//cout<<"\n"<<cmd<<endl;
system(cmd.c_str()); //调用cmd删掉它 终于成功了
dir="";
dir+=szDisk;
dir+=AUTORUN;
RemoveDirectory(dir.c_str()); //再删外面的
}
int main()
{
string szDisk;
cout<<"输入想要移除免疫的磁盘盘符(like C:\\): ";
cin>>szDisk;
DisImmune(szDisk);
//cout<<"\n操作成功完成."; //system()会回馈的
return 0;
}
这样就行了!
本文介绍了一种使用C++编程创建不可删除文件夹的方法来防止U盘病毒通过autorun.inf文件传播的技术。通过在指定盘符下创建特殊文件夹,可以阻止病毒的自我复制行为。

419

被折叠的 条评论
为什么被折叠?



