公司的电脑老是中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 就将这行以后的全部删除。
求算法或者代码
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 就将这行以后的全部删除。
求算法或者代码
解决方案 »
- 请问单钮状态切换时为什么鼠标要点二下才能切换?
- 怎么在function函数中Exit sub
- 构造FORM表格上传文件等数据
- 遍历跟目录文件到COMBO控件中
- crystal report ODBC联结
- datagrid修改的问题!!!!!!!!!!!!!!!!!
- 急 急 急! 多谢
- 一个可能是很简单的问题,如何能够方便的取出所有控件的值。
- datagrid的初始化问题
- 什么叫ERP软件,它有什么特点。除了财务ERP软件外,还有哪些常用软件属于ERP软件?象酒店管理系统等信息管理系统之类的软件属于ERP软件吗?
- 请教各位大侠一个vba实现word和excel交互操作的问题
- VB6 如何把一个控件如何传引用???
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
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开始后面的所有的都删除,如果写入另外一个文件也不难,难就难在如何修改自身?请问算法!!!
@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"做个批处理吧
网上一般的cad病毒,都有专杀,只能你把病毒特征列出,都可以找到专杀。