码迷,mamicode.com
首页 > Web开发 > 详细

病毒处理的代码   html病毒

时间:2016-05-26 14:48:05      阅读:926      评论:0      收藏:0      [点我收藏+]

标签:病毒带来的文件操作复习

病毒描述

在本地的html文件中以js在文件末尾添加一定字符 以达到占用内存的影响

http://anquan.baidu.com/bbs/forum.php?mod=viewthread&tid=395007&page=1#pid2178566

然后呢 

这样处理的病毒感染的文件

java重新写新文件到txt

 
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;

public class wz {

 public static void main(String[] args) {
 String s1 = "C:\\Users\\Administrator\\Desktop\\ZM\\C++课件--V2";
 String s2 = "C:\\Users\\Administrator\\Desktop\\ZM\\newc";
		// CopyFile();
		File file = new File(s1);
		File file2 = new File(s2);
		if (!file2.exists()) {
			file2.mkdir();
		}
		if (file.isDirectory()) {
			File[] files = file.listFiles();
			for (File f : files) {
				CopyFile(s1 + "\\" + f.getName(), s2 + "\\" + f.getName()+".txt");

			}
		}

	}

	private static void CopyFile(String name1, String name2) {
		BufferedReader br = null;
		PrintWriter pw = null;
		try {
			br = new BufferedReader(new FileReader(name1));
			pw = new PrintWriter(name2);
			String s = null;
			while ((s = br.readLine()) != null) {
				int a = s.indexOf("</HTML>");
				if (a != -1) {
					String sub = s.substring(0, a + 7);
					pw.write(sub);
					break;
				}
				pw.write(s);
				pw.write("\r\n");

			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if (br != null) {
				try {
					br.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
			if (pw != null) {
				pw.close();
			}
		}
	}
}

居然文件大小没有改变大小  html 清除了wcripst.EXE的病毒(vbs干扰了微软的文件) 

于是动用c语言

发现一样的是不行的

最后找到改变文件大小的函数是可以搞定的

#include<io.h>
#include<fcntl.h>
//#include<syspes.h>
#include<sys/stat.h>
#include<stdio.h>
#include<iostream>
#include<fstream>
using namespace std;
void fun(char *name,int n )
{
	int fh, result;
	unsigned int nbytes = BUFSIZ;
 
	if( (fh = open(name,std::ios::in)))
	{
		cout<<"File length before:"<<filelength( fh )<<endl;
		if( ( result = chsize( fh, n) ) == 0 )
			cout<<"Size successfully changed"<<endl;
		else
			cout<<"Problem in changing the size"<<endl;
		cout<<"File length after:"<<filelength( fh )<<endl;
		close( fh );
	}
}   





int main()
{
	char name[128] ="C:\\Users\\Administrator\\Desktop\\ZM\\newc\\1.txt";
	FILE* fr = fopen(name,"rb");
	int size = 0;
	int flag = 0;
	char a=‘c‘;
	int ct=1;
	int n=50;
	while(n--)
	{
	fgets(fr);
	}

	while((a = fgetc(fr))!= EOF)
	{
		if(a == ‘<‘)
		{
			flag = 1;
			continue;
		}
		if(a == ‘/‘ && flag == 1)
		{
			continue;
		}
		if(flag == 1 && (a==‘H‘|| a== ‘h‘))
		{
			fgetc(fr);
			fgetc(fr);
			fgetc(fr);
			fgetc(fr);
			size = ftell(fr);
			break;
			 
		}
		flag = 0;
	}
	fclose(fr);
	fun(name,size);
	return 0;
}

但 还是不行,,,,

注意在普通的页面中不能以/html判断终结   因为txt/html字段可能在其中

指定文件大小统一改为80kb能省点空间 后面有附件 一份txt


技术分享

病毒处理的代码   html病毒

标签:病毒带来的文件操作复习

原文地址:http://wzsts.blog.51cto.com/10251779/1783444

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!