病毒描述
在本地的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