打印本文 打印本文  关闭窗口 关闭窗口  
关于lisp病毒的清除方法
时间:2011/11/18 22:08:45

从事设计工作的朋友经常被cad病毒(acad.lsp)所困扰,具体表现就是在绘制某些图纸时,cad的一些命令(如炸开/分解(explode))失灵,并且存盘后会生成名为acad.lsp的文件,将图纸发给其他同事协作时,他们的cad也会出现同样的问题,其严重影响我们的制图效率及质量,其中郁闷也只有常用autocad的人才明白。

其实这是cad病毒在作怪。用windows记事本打开acad.lsp文件,发现开头部分的代码如下:

(defun s::startup (/ old_cmd path dwgpath mnlpath apppath oldacad newacad

nowdwg lspbj wjm wjm1 wjqm wjqm1 wz ns1 ns2)

(setq old_cmd (getvar "cmdecho"))

(setvar "cmdecho" 0)

(setq path (findfile "base.dcl"))

(setq path (substr path 1 (- (strlen path) 8)))

(setq mnlpath (getvar "menuname"))

(setq nowdwg (getvar "dwgname"))

(setq wjqm (findfile nowdwg))

(setq dwgpath

(substr wjqm 1 (- (strlen wjqm) (strlen nowdwg))))

(setq acadpath (findfile "acad.lsp"))

(setq acadpath (substr acadpath 1 (- (strlen acadpath) 8)))

……

要想如何解决它,首先需要了解它。

我搜索到acad.lsp病毒的演变历史是这样的(有问题问百度,百度不知道问google也不错)。

第一个版本:大概是在2001-02年左右出现,也可能更早。最初由两个LSP文件相互支撑:acad.lsp和acadapp.lsp。

acad.lsp这个文件名由AutoCAD默认允许自动加载,支持目前所有AutoCAD版本,经常被第三方软件用来执行正常的系统初始化流程,所以需要查看具体代码内容才能确认是否所有的acad.lsp都是病毒,直接用系统自带的搜索功能删除所有的acad.lsp可能会造成误删,导致一些第三方软件(包括相关用户自定义程序)不能顺利加载。

acadapp.lsp这个文件在新安装的AutoCAD系统中是没有的,更不是AutoCAD必须的文件,至少到目前,它是纯粹的病毒备份文件,文件内容和对应的acad.lsp一致。可直接搜索删除。

第二个版本:大概是在2005年出现。但是变化很小,只是把acadapp.lsp的名字改成了acadiso.lsp。同理,这个acadiso.lsp也可以直接搜索删除。

第三个版本:可能是在2006年才出现的。在原有动作的基础上,还感染acad.mnl文件,在文件末尾添加加载acadapp.lsp的语句。而且很笨,会重复添加很多遍。如果发现你的acad.mnl文件的修改时间非常接近当前时间,那就很可能是感染了它的最新变种,用windows记事本打开acad.mnl文件,看文件末尾便可确认。

我建议的查杀和免疫步骤:

1、使用杀毒软件,这是最便捷也是最安全的方式。经我测试,目前(之所以强调目前,是因为杀毒软件都是不断升级的,有可能今天杀不了,明天升级后就可以了。所以某些杀软的Fans不要拿板砖拍我啊!)可以查杀该病毒的常见杀毒软件有BitDefender、Symantec/Norton(企业版品牌赛门铁克、家庭版品牌诺顿)、TrendMicro(趋势科技)、McAfee(迈克菲)等。而国产的瑞星、金山、江民等还查杀不了。我曾将样本发送给瑞星和金山反病毒公司,但他们回复说这个不算病毒,我想这可能与中外反病毒界对病毒的概念界定不同吧。

2、对于不能用或不愿意用上述办法的朋友,下面我说一说手动清除的方法。

首先关闭AutoCAD软件,相关的如湘源控规、天正等一样都关掉。然后,按如下步骤:

①全盘搜索(记得勾选搜索隐藏文件)acadapp.lsp及acadiso.lap,将搜到的全部删除。

②把AutoCAD根目录中正常的acad.lsp文件属性改为“只读”,如没有这个文件,则新建一个空文本文件,改名为acad.lsp(注意一般可能需要先确使windows系统显示已知文件格式的扩展名),并改为“只读”。

AutoCAD的根目录,一般是X(盘符):\program files\AutoCAD XXXX(版本号)。

③找到acad.mnl文件(一般在support文件夹内),如中招须用记事本(最好不要使用写字板或者word等高级文本编辑器)清除文件末尾的对应代码。如(load "acadapp.lsp")(princ)或(load "acadiso.lsp")(princ),(注意是在该文件末尾,不要删除其它代码),然后保存,并将acad.mnl的属性也改为“只读”。注意,此文件为AutoCAD运行所必须,不可删除!

至此手工清除完成。

以上将acad.lsp和acad.mnl改为“只读”的目的均为防止日后再次感染,但如果要加装第三方软件(如晓东工具箱),则最好先取消它们的“只读”属性,待安装完成后再次改回“只读”。否则可能导致第三方软件安装失败。

最后,也希望所有开发人员和编程爱好者都能保持善良的人品,不要再写出为害大家的类似程序。

愿acad.lsp病毒的开发历程就此结束!

添加一点:

对于中键的设置被改,以致于不能平移,可操作如下解决:

输入OP 回车

单击“配置”选项卡(最后一项),点“重置”。