自动检测U盘autorun.inf专杀

 /*一个目录中存在一个文件名非法的文件,在没删除这个文件之前是无法删除其父文件夹的。
利用这一原理我们可以在 autorun.inf 文件夹中特意建立一个文件名非法的文件,
而且这个文件名大家可以自己取,这样就算病毒知道这里面有这个这种怪异的文件,
由于不知道其原来的文件名,也就无法对其进行删除,进而也无法删除
autorun.inf 文件夹。*/
#include<iostream>
#include<fstream>
#include <windows.h>
#include<cstdlib>
using namespace std;
int main()
{
 ifstream in_stream;
 //char command[90]=" md F://autorun.inf";
 char command[90]="del F://autorun.inf"; //DOS命令,删除autorun.inf
 char command1[90]="md F://autorun.inf";
 char command2[90]="md F://autorun.inf//bt_novirus....//";
 int DiskCount = 0;
      DWORD DiskInfo = GetLogicalDrives();
      //利用GetLogicalDrives()函数可以获取系统中逻辑驱动器的数量,函数返回的是一个32位无符号整型数据。
      while(DiskInfo)//通过循环操作查看每一位数据是否为1,如果为1则磁盘为真,如果为0则磁盘不存在。
      {
      if(DiskInfo&1)//通过位运算的逻辑与操作,判断是否为1
      {
      ++DiskCount;
      }
      DiskInfo = DiskInfo >> 1;//通过位运算的右移操作保证每循环一次所检查的位置向右移动一位。
      //DiskInfo = DiskInfo/2;
      }
      cout<<"逻辑磁盘数量:"<<DiskCount<<endl;
      //-------------------------------------------------------------------
      int DSLength = GetLogicalDriveStrings(0,NULL);
      //通过GetLogicalDriveStrings()函数获取所有驱动器字符串信息长度。
      char* DStr = new char[DSLength];//用获取的长度在堆区创建一个c风格的字符串数组
      GetLogicalDriveStrings(DSLength,(LPTSTR)DStr);
      //通过GetLogicalDriveStrings将字符串信息复制到堆区数组中,其中保存了所有驱动器的信息。
      int DType;
   int si=0;
   char Type;
      for(int i=0;i<DSLength/4;++i)
      //为了显示每个驱动器的状态,则通过循环输出实现,由于DStr内部保存的数据是A:/NULLB:/NULLC:/NULL,这样的信息,所以DSLength/4可以获得具体大循环范围
      {
      char dir[3]={DStr[si],':','//'};
      cout<<dir;
   DType = GetDriveType(DStr+i*4);
   if(DType == DRIVE_REMOVABLE)
   Type=DStr[si];
      //GetDriveType函数,可以获取驱动器类型,参数为驱动器的根目录
      if(DType == DRIVE_FIXED)
      {
      cout<<"硬盘";
      }
      else if(DType == DRIVE_CDROM)
      {
      cout<<"光驱";
      }
      else if(DType == DRIVE_REMOVABLE)
      {
      cout<<"可移动式磁盘";
      }
      else if(DType == DRIVE_REMOTE)
      {
      cout<<"网络磁盘";
      }
      else if(DType == DRIVE_RAMDISK)
      {
      cout<<"虚拟RAM磁盘";
      }
      else if (DType == DRIVE_UNKNOWN)
      {
      cout<<"未知设备";
      }
      cout<<endl;
      si+=4;
      }
  command[4]=Type;   //实际盘符取代F盘符
  command1[3]=Type;
  command2[3]=Type;
  system(command);
  system(command1);//建立 autorun.inf 文件夹
  system(command2);//建立一个文件名非法的文件夹
 return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大模型大数据攻城狮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值