您好,欢迎来到投聚财经。
搜索
您的当前位置:首页查杀CAD炸不开病毒

查杀CAD炸不开病毒

来源:投聚财经




先给不了解LSP的同志稍微铺垫一下。

ACAD有个很大的优点,就是开放性,它有很多开放的接口,这给用户自定义以及第三方二次开发提供了极大的方便。ACAD用户化门槛不算高,只要有兴趣、有些耐心,

总可以亲自动手不同程度地进行自定义。

马上要讨论的是关于启动自动化的AUTOLISP接口,这个接口现在被人用来搞了点恶作剧。

ACAD启动或开图时会被自动加载的LSP文件
浅见,这种LSP包括:
ACAD.LSP,新装的纯ACAD里面没有这个文件。一般由用户自己编写或者第三方软件提供,放在ACAD目录或SUPPORT子夹都可以。

ACADR$.LSP,$是系统版本号,比如ACADR14.LSP,SUPPORT子夹。

还有一种先不说了.

加载时自动运行的由defun函数定义的函数名
就一种,S::STARTUP,它和ACAD.LSP配套,同时不支持其他扩展名为LSP的文件可能是因为这个原因,目标被定位于ACAD.LSP?不知道了,其实不一定非用S::STARTUP,用了那就说明这位大虾是个追求完美的人~

铺垫好了,来看看这个病毒acad.lsp的作用~

{02.通过搜索base.dcl文件,获取ACAD安装路径(support子夹)}

{03.获取菜单文件完整路径和名称,后来又没用~}

{04.获取当前图形文件完整路径和名称,截取当前工作路径}

{05.获取当前首选ACAD.LSP文件完整路径和名称,截取其路径}

{06.预设程序标记变量LSPBJ0,意思是假设还没得手}

{07.用只读方式打开support中的ACAD.LSP,如文件不存在则建立同名文件逐行检查此ACAD.LSP文件内容,一旦发现某行开头为(load"acadapp")则设程序标记变量LSPBJ1,表示已经得手过

只读任务结束,关闭文件}



{08.如果找到的ACAD.LSP 路径和当前工作路径不同,

1



并且不在ACAD\support里面,则
{如果LSPBJ0,也即尚未得手,那么
就在ACAD\support\acad.lsp文件末尾添加(load"acadapp")(princ),ACAD启动或开图时自动加载acadapp.lsp并隐蔽命令行反应。

然后同路径创建acadapp.lsp文件,作为刚改过的acad.lsp的备份.} {如果LSPBJ1,即已得手,且当前绘图不是未命名的新绘图任务,则用复写ACAD\support\acadapp.lsp的方式
在当前工作路径创建acad.lsp.}
}
;:到此为止,ACAD启动时必搜的程序文件路径里面都放好了此acad.lsp!

{09.程序开始做真正让大家不愉快的事情,
它取消了3个系统预设的命令名:不止explode,还有xrefxbind
可能因为Xrefxbind不是每个人都常用,所以好象报案的不多,
explode几乎是所有用ACAD画图的人都难以避免使用的,就显得很典型}

S::STARTUP函数定义结束}

还没完,前面取消了那3个命令的定义,现在要重新定义它们,幸好这位大虾良心不算坏,只是让命令不起作用或者改成其他加法命令,并没写成破坏性函数或OS命令

EXPLODE 的新功能和交互情况是: command: EXPLODE

随你怎么选,它就是说炸不了

然后XREFXBIND这对难兄难弟双双被改成了insert,交互响应制作很不精良,根本就是空白,可能大虾忽然觉得倦了吧.

最后,它还重新定义了BONUSEXPRESSTOOLS工具集里面提供的BURST命令,其实是个外部函数(c:burst)
BURST原来的用途是"ExplodeAttributes to Text",把属性文本炸成text类物体被重新定义后这样:
command:BURST
BURST----将图块中的文字炸开后成为实体
Selectobjects: 200 found
Selectobjects:
command:

完了,全完了.就这么完了,还是啥都不干,连通知也免了.


2



{07.用只读方式打开support中的ACAD.LSP,如文件不存在则建立同名文件逐行检查此ACAD.LSP文件内容,一旦发现某行开头为(load"acadapp")则设程序标记变量LSPBJ1,表示已经得手过
只读任务结束,关闭文件}

{08.如果找到的ACAD.LSP路径和当前工作路径不同,
并且不在ACAD\support里面,则
{如果LSPBJ0,也即尚未得手,那么
就在ACAD\support\acad.lsp文件末尾添加(load"acadapp")(princ),ACAD启动或开图时自动加载acadapp.lsp并隐蔽命令行反应。

然后同路径创建acadapp.lsp文件,作为刚改过的acad.lsp的备份.} {如果LSPBJ1,即已得手,且当前绘图不是未命名的新绘图任务,则用复写ACAD\support\acadapp.lsp的方式
在当前工作路径创建acad.lsp.}
}
;:到此为止,ACAD启动时必搜的程序文件路径里面都放好了此acad.lsp!

上述应该是楼上所说的自我复制机制,也就是传播途径;
2、按此传播途径很容易找到破坏病毒的方法:资源管理器中按F3(包括全部存储介质如硬盘、软盘、刻录光盘、移动硬盘)查找ACAD.LSP,然后删除即可.再完整

一些还要包括ACADAPP.LSP
可能有的同志还是不明白自己是怎么感染上的.那就把这两个过程捏在一起再多说
ACAD 在启动或开新图的时候,在程序进入ready 状态前,首先会到支持文件搜索两句.

路径里面寻找系统需要的资源,在必须使用的东西全部找齐后,我们才有机会正常开始画图。这种路径分2种:
Apreferences命令对话框的files分页最上面一项可以看到,一般新装的纯ACAD的这种路径包括support[外部命令、函数,图案、线形等资源库等]fonts[ACAD专用字库、不包括TRUETYPE字体]help[帮助文档],还可以有bonus\cadtools[bonus资源,选装].通常*.lsp文件都集中在support子夹。B当前工作路径,就是现在刚打开的那张图的存放位置。

acadapp.lsp并不是系统保留的文件名,虽然样子很酷,其实它就是被感染的标志,当然,这个标志不如到处都是acad.lsp那么壮观

现在可以分析大家是怎么感染的了。

根据上文08

{如果LSPBJ1,即已得手,且当前绘图不是未命名的新绘图任务,

用复写ACAD\support\acadapp.lsp 的方式 3




在当前工作路径创建acad.lsp.}

这就是说,在这种情况下,它把已经被感染的CAD系统里面的acadapp.lsp克隆到当前工作路径,名字就叫acad.lsp
不小心工作路径里面混进了那个acad.lsp文件
一旦出现这种情况,即便你的ACAD原来是干净的,也瞬间就被做掉了。

还是根据上文08

{如果LSPBJ0,也即尚未得手,那么
就在ACAD\support\acad.lsp文件末尾添加(load"acadapp")(princ),ACAD启动或开图时自动加载acadapp.lsp并隐蔽命令行反应。

克隆这个acad.lsp ACAD\support,名字改成acadapp.lsp,通过
然后同路径创建acadapp.lsp 文件,作为刚改过的acad.lsp 的备份. }

那么,怎么就被这个acad.lsp给混进了工作路径呢?

可能性有很多,比如你通过局域网跟别人共享同个文件夹里面的dwg文件,不幸你的同伴的ACAD先感染了;或者用移动盘在别人,尤其打图公司,那里画图甚至只是开图,不幸别人的ACAD已经感染了,等等

这大段代码的自我复制原理很简单。从上面概括下来就是:你的机器是干净的,它[工作路径里的acad.lsp]就把自己复制到ACAD目录;你的机器是感染的,它[support里的acadapp.lsp]就把自己复制到工作路径。只是名字有点变化,被复制的代码是一样的。 4



补充楼上说的关于杀毒、防毒的办法:如果确认未被感染,那么把自

己的原来的support\acad.lsp(没有就建一个空文本文件,改成这名

字,注意确信改掉扩展名)文件改成只读属性;如果已感染,请采用

mnhyyl 兄说的办法清除,之后再做前面的步骤(只读acad.lsp);同

时安装多个CAD 版本的要分别打“只读补丁”。

听说ACAD2000上就有VBA做的病毒。现在讨论的这个诚如“一般

不管闲事”女士/先生/同志/朋友所说,只是在Lisp上做了些文章。是

我看走眼了。

删除所有acad.lsp当然可以解决,但未免有些滥杀无辜。如果能

下决心跟它和平相处的话,就到放base.dcl的目录下,打开

acad.lsp,删除这样的两段:

(command"undefine" "explode")

(command "undefine" "xref")


以后开图应该不会有问题了,当然已经感染的目录下的acad.lsp还是

要删除。另一个好处是:在ACAD程序目录里留下的这个acad.lsp

可以当疫苗,估计是终身免疫的。不过我没有试过,如果不灵权当“疗

妒汤”了



5

Copyright © 2019- tjwe.cn 版权所有

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务