code diệt virus StartUp

Liên hệ QC

phungvinhquang

Thành viên mới
Tham gia
12/3/07
Bài viết
38
Được thích
12
* Mình có ý định viết một Macro để diệt virus StartUp. Minh đã viết được vài đoạn về cơ bản là xong, nhưng nó không hoạt động theo ý mình. Mình post lên để xin ý kiến và nhờ mọi người giúp mình hoàn thiện.
* Mô tả sơ qua cách hoạt động của macro StartUp:
- Khi người dung mở một file nhiễm virus này thì nó sẽ sinh 1 file tên là StartUp.xls chứa trong folder “C:\Documents and Settings\Administrator\Application Data\Microsoft\Excel\XLSTART”. Trong file này có module tên startup. Khi đó máy bị nhiễm virus startup
- Sau khi người dung mở một file excel lên thì file se bị đính module tên startup
* Phương án xử lý của mình như sau:
- Tao một file excel cũng có tên startup.xls chép vào đường dẫn nêu trên (để virus không thể chép file lên đó được
- Trong file cũng có một module tên là Del_StartUp làm công việc sau: khi phát hiện 1 file excel được mở, nó sẽ kiểm tra xem file này có chứa module StartUp không (dấu hiệu để nhận diện file bị lây nhiểm). Nếu có module này thì xóa nó, nếu không thì thôi
* Dưới đây là code: (mình có cóp nhặt mốt số đoạn code tham khảo trên diễn đàn, nhưng không nhớ tên – Xin lỗi mọi người nha)

‘’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’
‘Hàm chính
Sub Auto_Open()
Dim SheetOpened_name As String
On Error Resume Next
If ActiveWorkbook.Name = "StartUp" Then
ActiveWindow.Visible = False
End If
If Not TrustAccess_chked Then
MsgBox "Hay truy cap menu Tools > Macro > Security > Trusted Puplisher " & _
"va click vao dong [Trusted access to Visual Basic Projec]. " & _
"Sau do chay lai macro nay"
Exit Sub
End If
SheetOpened_name = ActiveWorkbook.Name
If found_StartUp_Mod(SheetOpened_name) Then
Del_Module "StartUp", SheetOpened_name
End If
End Sub

‘’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’
‘hàm này kiểm tra xem workbook mới mở có chứa module StartUp không
Function found_StartUp_Mod(SheetOpened_name As String) As Boolean
found_StartUp_Mod = Workbooks(SheetOpened_name).Sheets(1).Name = "StartUp"
End Function

‘’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’
‘hàm này xóa module StartUp
Sub Del_Module(Module_name As String, Workbook_name As String)
Dim vbCom As Object

MsgBox "Xoa Module " & Module_name & " trong workbook " & ActiveWorkbook.Name

Set vbCom = Application.VBE.ActiveVBProject.VBComponents

vbCom.Remove VBComponent:=vbCom.Item(Module_name)
End Sub

‘’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’
‘Hàm này kiểm tra xem [Trusted access to Visual Basic Project] có được check chưa
‘nếu chưa check thì trả về false và ngược lại
Function TrustAccess_chked() As Boolean
Dim VBC As Object

TrustAccess_chked = True
Application.DisplayAlerts = False
On Error GoTo Err
Set VBC = ActiveWorkbook.VBProject.VBComponents.Item(1)
On Error GoTo 0
Application.DisplayAlerts = True
Exit Function
Err: TrustAccess_chked = Not VBC Is Nothing
End Function

‘’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’

  • Vướng mắc:
1/. Để hoạt động được, cần vào Tools > Macro > Security > Trusted Puplisher va click vao dong Trusted access to Visual Basic Project không thể viết code cho thao tác này. Đã tham khảo các viết hàm sendkey và registry nhưng không thành công.
2/. Chú ý trong hàm Del_module, dòng lệnh Application.VBE.ActiveVBProject.VBComponents
Như vậy dòng lệnh này chỉ thực hiện với Project hiện hành (chính là Project của mình) mà không tác động đến các file nhiễm.
Vậy làm sao tác động đến Project không hiện hành?
Mình đã thử đặt module của minh là StartUp thì nó bị xóa, nhưng file nhiểm thì bình an vô sự.
3/. Mình tạo ra một file “chuột bạch” bằng cách chép module StartUp của virus vào thì code của minh không phát hiện. Ly do là thế này, các bạn lưu ý hàm found_StartUp_Mod có đoạn Workbooks(SheetOpened_name).Sheets(1).Name, nếu là file nhiễm bệnh thì biểu thức này trả về tên module (luc này excel xem module StartUp như 1 sheet). Nhưng đối với “chuột bạch” thì excel không xem module StartUp mới gắn thêm vào như 1 sheet nên không lấy được tên module ra để so sánh
Tại sao?


  • File đính kèm:
- StartUp.xls (để diệt virus), vì file chưa hoàn chỉnh nên cũng không cần chép vào thư mực XLSTART mà chỉ cần mở như file bình thường
- chuotbach_COTHE.xls có module StartUp (không còn khả năng lây nhiểm) CÓ THỂ bị StartUp.xls gỡ module
- chuotbach_KHONGTHE.xls có module StartUp (không còn khả năng lây nhiểm) KHÔNG THỂ bị StartUp.xls gỡ module
- chương trình của mình chưa hoàn thiện nên để test tính chất 2 file …COTHE và …KHONGTHE nhằm làm rõ vướng mắc 3, mình có viết them sub test_tinhtrang_chuotbach

Sub test_tinhtrang_chuotbach()
Dim count_sht As Integer
count_sht = ActiveWorkbook.Sheets.Count
MsgBox ActiveWorkbook.Name
MsgBox count_sht
For i = 1 To count_sht
MsgBox ActiveWorkbook.Sheets(i).Name
Next i
End Sub


Khi chay code trên thi kết quả sẽ khac nhau mặc dù nhìn 2 file giống nhau


  • Mong mọi người tham khảo và cho mình ý kiến. Rất cảm ơn
 

File đính kèm

  • StartUp.xls
    22.5 KB · Đọc: 160
  • chuotbach_COTHE.xls
    18 KB · Đọc: 30
  • chuotbach_KHONGTHE.xls
    20 KB · Đọc: 28
bổ sung một vấn đề nữa:
Hàm Auto_Open() co được kích hoạt khi một file excel bất kỳ được mở không? hay chỉ được kích hoạt khi file chứa hàm Auto_open() được mở thôi?. File StartUp.xls của VIRUS làm được chuyện này, còn file StartUp của mình bắt chước nó thì lại không làm được
 
Lần chỉnh sửa cuối:
Sub auto_open()
On Error Resume Next
Application.ScreenUpdating = False
Application.OnSheetActivate = "StartUp.xls!ycop"
End Sub

Sub ycop()
On Error Resume Next
If ActiveWorkbook.Name <> "StartUp.xls" Then
Application.ScreenUpdating = False
n$ = ActiveSheet.Name
Application.DisplayAlerts = False
ActiveWorkbook.Sheets("StartUp").Delete
Application.DisplayAlerts = True
Sheets(n$).Select
End If
End Sub
==================
Chỉ cần code như thế này. Luu tên Startup.xls vào thư mục XLSTART là OK. File nào dính virus StartUp lúc mở sẽ bị xóa ngay.
 
Lần chỉnh sửa cuối:
Cảm ơn bác nhiều! Em bị con virut này hanh hạ ghê lắm rồi. Trước kia phải diệt bằng thủ công nhưng tốc độ lây của nó nhanh hơn em diệt bằng tay.
 
a ơi cho em hỏi cái ,những cái code trên viết vào cùng một file excel ag ,mục đích để bảo vệ file đó ag
 
Web KT

Bài viết mới nhất

Back
Top Bottom