Trong bài viết này, tôi sẽ cùng các bạn phân tích sự hoạt động của các macro viết bằng World Basic, để từ đó rút ra những biện pháp hữu hiệu trong những năm gần đây.
Worrd xây dựng các document của nó (các file.DOC) trên cơ sở các template (các file.DOT). Thông thường chúng ta sử dụng template chuẩn là NORMAL.DOT. Bạn cũng có thể tạo ra những template của riêng bạn để dùng và lưu trữ trên đĩa trong thư mục \WINDOWS\TEMPLATE.Về mặt cấu trúc template chỉ khác document ở chỗ nó có thêm các marco, autotext của riêng nó, nên nếu không tinh ý, bạn sẽ không nhận ra file mình vừa mở là document hay template. Do các macro chỉ có thể tồn tại trong các template. Do các macro chỉ có thể tồn tại trong các template nên các virus macro khi lây lan, nó buộc phải lưu tài liệu của bạn dưới dạng template, và để đánh lừa, nó dùng tên file là .DOT sau khi đã copy các macro của nó sang.
Vấn đề chính của virus là làm sao kích hoạt được các macro của nó một cách chủ động và kín đáo, bí mật. Thông thường một macro được kích hoạt khi bạn mở hộp thoại macro (trong menu Tools), chọn macro và nhấn nút Run, nhưng cũng có hai ngoại lệ.
Ngoại lệ thứ nhất là một số macro với tên đặc biệt sẽ được kích hoạt tự động mỗi khi xảy ra sự kiện tương ứng, chúng được gọi là các AutoMacro được định nghĩa trong World như sau:
-AutoExec: Khởi động Worrd
-AutoExit: Kết thúc Worrd
- AutOpen: Mở template
- AutoClose: Đóng template
- AutoNew: Tạo tài liệu mới
Ví dụ bạn có một template là ABC.DOT, trong đó có một macro tên là AutOpen. Bạn cũng có một document tên là MYDOC.DOC được xây dựng trên cơ sở của ABC.DOT. Macro này sẽ hoạt động ngay sau khi bạn thực hiện thao tác mở ABC.DOT hoặc MYDOC.DOC. Tuy nhiên các AutoMacro sẽ bị mất tác dụng nếu lệnh DisableAutoMacrro1 đã thực hiện ở đâu đó. Ngoại lệ thứ hai là các macro trùng tên với một trong các lệnk của Word ví dụ như FileOpen, FileClose, FileSave..., ví dụ nếu bạn có một macro tên là FileSave, thì mỗi khi bạn nhấn vào nút Save trên thanh công cụ hoặc gõ Ctr-S, macro đó sẽ bị kích hoạt, còn thao tác Save chuẩn của World sẽ bị bỏ qua trừ khi thao tác này có mặt trong macro của bạn. Thật đáng tiếc, ta không có biện pháp nào có hiệu quả các macro loại này.
Ta sẽ lợi dụng chính ngoại lệ thứ hai nói trên để tạo ra một bộ phát hiện virus macro ngay khi mở file. Bạn hãy tạo cho mình một macro có tên FileOpen (mở hộp hội thoại Macro trong menu Tools, gõ FileOpen vào hộp macro name, chọn All active templates cho hộp Macro Available in rồi nhấn Creat) với nội dung dưới đây. Lưu ý số dòng và dấu hai chấm(:) chỉ để tham khảo không gõ vào.
01: Sub Main
02: On Error goto qiut
03: Disble AutoMacro
04: Dimdlg asFileOpen
05: GetCurValuessdig
06: Dialog dig
07: FileOpen dig
08:If Countmacro (1) = 0 then goto quit
09: MsgBox Posibly virus macro + Chr$ (13)
10: MacCare$=ToolsMacro
11:ToolsMacro.Name=Macare$.Delete, Show=3
12: quit
13: DisableAutoMacros0
14: EndSup
Giải thích: dòng 3 vô hiệuhoá hoạt động của các AutoMacro, đề phòng macro AutOpen hoạt động. Dòng 4...7 là các thao tác mở file chuẩn. Các dòng tiếp theo kiểm tra cen file vừa mở có phải là template hay không (như trên đã nói, nếu một file bị nhiễm virus thì định dạng của nó chắc chắn là Template), nếu đúng thì hiện thông báo và xoá macro ToolsMacro nếu có. Thao tác này nhằm đảm bảo sự an toàn cho bạn khi dùng hộp thoại Macro để diệt virus.
Khi bạn mở một file, chẳng hạn SALES.DOC, nếu gặp thông báo trên thì rất có khả năng file đó bị nhiễm virus macro. Lúc đó bạn không làm bất cứ thao tác thông thường nào (như Save, Close...) mà hãy mở ngay hộp thoại Macro (trong menu Tools). Kéo hộp Macro Avilable in xuống và chọn mục Sales.doc (template), danh sách các macro của file này sẽ xuất hiện. Bạn hãy dùng nút Detele để xoá các macro có tên đáng ngờ như FileSave, FileClose, AutoClose... thông thường nếu bạn mở một file.DOC mà có thông báo (tức là file đó là template) thì chắc chắn file đó bị nhiễm virus, bạn có thể xoá tất cả các macro của nó. Tuy nhiên, trong mọi trường hợp bạn phải hết sức chú ý nội dung của hộp Macro Avilable in, nếu không bạn có thể xoá nhầm các macro hữu ích của bạn.
Tôi mong rằng sau khi đọc bài này, bạn hãy hướng dẫn cho những người khác cùng làm để góp phần loại bỏ các virus macro ra khỏi thế giới của chúng ta. Nếu bạn phát hiện ra điểm nào sơ hở, rất mong bạn vui lòng góp ý.
Đinh Cường
Viễn thông 35, ĐH GTVT, Cầu Giấy, HN
PcLeHoan
1996 - 2002
Mirror :
http://www.pclehoan.com
Mirror :
http://www.lehoanpc.net
Mirror :
http://www.ktlehoan.com