Virus được viết dưới ngôn ngữ Autolisp (một dạng virus macro) chạy dưới môi trường AutoCAD, nó làm mất một số lệnh thông dụng cũng như thay đổi thiết lập hệ thống khiến việc sử dụng AutoCAD trở nên rất khó khăn. Máy tính đã nhiễm virus này thì dù có cài lại Windows hay AutoCAD đều không khắc phục được vì file virus nằm rải rác khắp các thư mục trên ổ cứng. Khác với Macro trong Excel hay Word, phần mềm AutoCAD không thể disable autolisp và hơn nữa người dùng AutoCAD lại sử dụng rất nhiều autolisp cho công việc của họ.
Một số phần mềm Antivirus (như BKAV, Kapersky,...) đã diệt được một số dạng của virus này nhưng không diệt được hết biến thể đa dạng của nó đang ngày ngày được sản sinh. Nguyên nhân của sự đa dạng các biến thể là vì một người có trình độ Autolisp mức cơ bản cũng có thể ‘hô biến’ một con virus gốc thành một biến thể khác chỉ bằng phần mềm Notepad.
Bài viết này giới thiệu một cách tạo vắc-xin để ‘tiêm’ vào AutoCAD. Liều vắc-xin là một đoạn mã Autolisp cấm mọi thao tác ghi vào các thư mục hệ thống của AutoCAD - triệt tiêu nguyên nhân căn bản nhất của sự lây nhiễm virus. Lệnh cấm này không ảnh hưởng đến các mã lisp lành tính thông thường. Ngoài ra, để phòng ngừa lây nhiễm, vắc-xin này sẽ loại bỏ mọi file tự động chạy nằm ở thư mục chứa bản vẽ để tránh bị tự động tải lên và thay đổi thông số hệ thống.
Giải pháp:
AutoCAD khi khởi động, sẽ lần lượt tự động load các file Autolisp. Trong đó file acad20##.lsp (20## là phiên bản AutoCAD, ví dụ 2012) trong thư mục cài đặt AutoCAD được load đầu tiên. Các file file acad.lsp, acaddoc.lsp, acad.fas và acad.vlx,... (các file virus tiềm tàng) trong thư mục chứa bản vẽ sẽ được tự động load vào ngay sau đó. Vì vậy ta sẽ ‘tiêm’ vắc-xin vào file này để vô hiệu hóa các mã virus ‘tiềm tàng’ này. Sau đây là 3 bước xử lý ‘tiêm’ vắc-xin.
Bước 1. Chạy phần mềm Notepad và mở file acad20##.lsp trong thư mục C:\Program Files\Autodesk\Autocad20##\Support\. Nếu bạn không tìm thấy file này, hãy gõ (findfile “acad20##.lsp”) tại dòng lệnh AutoCAD để hiển thị đường dẫn tới file này, bạn nhớ thay 20## bằng phiên bản AutoCAD của bạn (ví dụ: 200020022004,..2013).
Bước 2. Nhập các đoạn mã lệnh sau vào cuối file autocad20##.lsp:
;lưu lệnh open gốc
(if (null cadvietoon)(setq cadvietoon open))

; hàm xác định một file có nằm trong thư mục hệ thống hay không?
(defun cadvietisf(f) (wcmatch (strcase (vl-filename-directory f)) (strcase (strcat (vl-filename-directory (findfile "base.dcl")) "*," (strcat (vl-filename-directory (findfile "acad.exe")))"*"))))

; Gỡ bảo vệ cho hàm open file
(pragma '((unprotect-assign open)))

; Định nghĩa lại hàm open file để chặn thao tác write và append
; nếu file nằm trong thư mục hệ thống
(defun open (f m)
 (if (and (wcmatch m "W,A,w,a") (cadvietisf f))
            (progn (princ (strcat "\nCADViet Vacine prevents writing to: \n" f "\n--------------------\n"))  nil)
            (cadvietoon f m)
 )
)

; Đặt lại bảo vệ cho hàm open file
(pragma '((protect-assign open)))

; Xóa các file autorun không nằm trong thư mục hệ thống
(foreach fn (list "acad.lsp" "acad.fas" "acad.vlx" "acaddoc.lsp" "acaddoc.fas" "acaddoc.vlx" "acad.dvb")
 (if (and (findfile fn) (not (cadvietisf fn)))            (vl-file-delete (findfile fn)) )
)

; Giải phóng biến
(setq fn nil)

; Gọi vl-load-com nếu chưa được gọi
(if vlax-ename->vla-object (vl-load-com))

; In thông báo vắc-xin đã được load lên thành công
(princ "\n----------\n  CADViet Vaccine is loaded!\n----------\n")
(princ)
Bạn lưu ý là các từ sau dấu chấm phẩy (;) của mã lệnh là các dòng comment, không nhất thiết phải gõ vào. Hoặc bạn có thể download dòng mã trên ở: http://www.cadviet.com/upfiles/3/vs.lsp sau đó copy và paste vào file acad20##.lsp.
Bước 3. Save file acad20##.lsp lại.
Như vậy là bạn đã ‘tiêm’ cho AutoCAD của bạn một liều vắc-xin, đảm bảo từ giờ trở đi bạn sẽ không bị nhiễm AutoCAD nữa. Nếu vì một lý do nào đó bạn muốn ‘gỡ’ vắc-xin ra khỏi AutoCAD, bạn chỉ cần xóa các dòng đã thêm vào ra khỏi file là được.

echip

Post a Comment

Chú ý:
- Nhận xét nên viết tiếng việt có dấu.
- Cảm ơn bạn đã đọc bài viết tại www.hannavn.com