公司的电脑老是中cad病毒,杀毒软件一杀毒就会破坏cad,我想编写个清除程序.
cad病毒只是感染lisp和mnl 文件,文本格式,就是在这些文件后面加上病毒自己的代码。论坛里面的朋友给了我一个算法,就是把cad病毒的代码找到,并将其替换为 空格。
例如cad病毒的开头为setq flagx 结尾为 acadapppguanjian = "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  就将这行以后的全部删除。
求算法或者代码

解决方案 »

  1.   

    原来我写的代码把全盘搜索结果 都是所有lisp和mnl文件的具体路径
    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 NextOpen 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 IfLoop
    Close #6, #7
      

  2.   

    Line Input #8, content1
     
      
         If content1 <> "AutoCAD PROTECTED LISP file" Then  '如果具体文件内容中带有AutoCAD PROTECTED LISP file就放弃处理。
         Print #7, bb
         Close 8
         Else
         Close 8
         End IfLoop
    Close #6, #7我就是想改进这一段,这一段,检测到"AutoCAD PROTECTED LISP file"的时候会放弃,我想改为,检测到
    setq flagx t字符的时候,能把文本文件的从setq flagx t开始后面的所有的都删除,如果写入另外一个文件也不难,难就难在如何修改自身?请问算法!!!
      

  3.   

    @echo off
    @cls 
    @color 0A
    @ECHO.
    @ECHO.
    @ECHO    +/+\+/+\+/+\+/+/+\+/+\+/+\+/+/+\+/+\+/+\+/+\+/+
    @ECHO.   $                                             $
    @ECHO    $    清除“党是不会亏待你”CAD病毒 V2.0   $
    @ECHO.   $                                             $
    @ECHO.   $       欢迎加入QQ群:63473931 下载讨论     $
    @ECHO.   $                                             $
    @ECHO    $         xcajcj 2008.08.01              $
    @ECHO.   $                                             $
    @ECHO    \+/+\+/+\+/+/+\+/+\+/+\+/+/+\+/+\+/+\+/+/+\+\+/
    @ECHO.
    @ECHO. 
    @ECHO 请关闭正在运行的CAD程序,确定后请按任意键继续. . . 
    @pause>nul
    @pushd "%~dp0"
    @ECHO.
    @ECHO 正在查找并清除CAD病毒文件,请稍候. . . 
    @ECHO.
    for %%i in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do ( 
    if exist %%i: ( 
    %%i:
    cd\
    @del /f /q /s acad.fas
    @del /f /q /s lcm.fas
    )) 
    @ECHO.
    @ECHO OK,所有CAD病毒文件已经完全清除!请按任意键退出. . . 
    @pause>nul
    @pushd "%~dp0"做个批处理吧
      

  4.   

    cad病毒,主要有*.lsp,*.mnl,*.fas,*.vlx等几类文件,lsp和mnl都是文本文件,而fas和vlx都编译后的文件,文本文件,可能直接分析源代码,知道病毒的行为,查杀容易。而fas,vlx等文件不容易通过分析代码得知其行为,不过,一般的fas,vlx等病毒都不会感染同类型文件,因为,这两种文件格式,不像PE文件哪样,大家都比较熟悉,它们一般也是感染lsp或mnl文件,进行自己启动!所以,根据这些病毒的特征,杀CAD病毒的难度并不大!不过一些专业的杀毒软件,可能是因为瞧不上这病毒,通常都杀不了或杀毒会影响cad正常使用。
    网上一般的cad病毒,都有专杀,只能你把病毒特征列出,都可以找到专杀。