+ -
当前位置:首页 → 问答吧 → 公司的电脑老是中cad病毒,杀毒软件一杀毒就会破坏cad,我想编写个清除程序

公司的电脑老是中cad病毒,杀毒软件一杀毒就会破坏cad,我想编写个清除程序

时间:2011-09-03

来源:互联网

公司的电脑老是中cad病毒,杀毒软件一杀毒就会破坏cad,我想编写个清除程序.
cad病毒只是感染lisp和mnl 文件,文本格式,就是在这些文件后面加上病毒自己的代码。

论坛里面的朋友给了我一个算法,就是把cad病毒的代码找到,并将其替换为 空格。
例如cad病毒的开头为setq flagx 结尾为 acadappp

guanjian = "setq flagx t\)[\s\S]*?acadappp*?"

Dim ff, gg
Dim v, i%
  v = Split(fileStr("c:\temp111.txt"), vbCrLf) '你的文件路径111.txt,建议写绝对路径
  For i = 0 To UBound(v)
   
If v(i) <> "" Then
  ff = SetFileAttributes(v(i), FILE_ATTRIBUTE_NORMAL)
  writeToFile v(i), replaceEx(fileStr(v(i)))
  End If
  gg = SetFileAttributes(v(i), FILE_ATTRIBUTE_READONLY)
   
  Next

这个貌似后来发现有几个问题,cad病毒感染的都是文本文件,所以只要处理文本文件即可。

可以这个问题简化为文本处理
问题在于,这个程序遇到奇怪字符,例如广夏的lisp文件里面就有 ,会导致文件被清空。
还有如果一个lisp文件里面有病毒重复生成的代码,这一段程序只能清除第一段。


我想这样做,不用替换法,而用检查法,

一旦检测到病毒代码第一行,例如setq flagx 就将这行以后的全部删除。
求算法或者代码

作者: ftmm123   发布时间: 2011-09-03

原来我写的代码把全盘搜索结果 都是所有lisp和mnl文件的具体路径
VB code
Open "c:\temp1111.txt" For Input As #6 '全盘搜索结果 都是所有lisp和mnl文件的具体路径放到这个文件里c:\temp1111.txt这个文件是搜索结果。

Open "c:\temp111.txt" For Output As #7  对其进行处理后输入到这个文件c:\temp111.txt是最终处理结果,将被送入下一个模块中,进行病毒替换。
 
Do Until EOF(6)
 Line Input #6, content   '  读取,去掉搜索产生的“号, bb = strReplace(content)
 aaaa = FileLen(bb)
 
If aaaa > 200000 Then   '检测大小,大于20000的文件删除,

  DeleteFile bb
  Else
  cc = bb
  End If

 'On Error Resume Next

Open cc For Input As #8
On Error Resume Next
Line Input #8, content1
 
  
     If content1 <> "AutoCAD PROTECTED LISP file" Then  '如果具体文件内容中带有AutoCAD PROTECTED LISP file就放弃处理。
     Print #7, bb
     Close 8
     Else
     Close 8
     End If

Loop
Close #6, #7



作者: ftmm123   发布时间: 2011-09-03

Line Input #8, content1
 
  
  If content1 <> "AutoCAD PROTECTED LISP file" Then '如果具体文件内容中带有AutoCAD PROTECTED LISP file就放弃处理。
  Print #7, bb
  Close 8
  Else
  Close 8
  End If

Loop
Close #6, #7

我就是想改进这一段,这一段,检测到"AutoCAD PROTECTED LISP file"的时候会放弃,我想改为,检测到
setq flagx t字符的时候,能把文本文件的从setq flagx t开始后面的所有的都删除,如果写入另外一个文件也不难,难就难在如何修改自身?请问算法!!!

作者: ftmm123   发布时间: 2011-09-03

热门下载

更多