Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Как написать компьютерный ВИРУС.doc
Скачиваний:
4
Добавлен:
30.10.2018
Размер:
1.16 Mб
Скачать

2.3 Как реализовать защиту от

эвристического анализа

Очевидно, вирус не будет найден в памяти,если раз-

местить обработчик INT 21h в той ее части, в кото-

рую загружаются пользовательские программы .С дру-

гой стороны, наш вирус помещает свой код в самые

старшие адреса основной памяти . Единственным вы-

ходом из положения было бы написание обработчика ,

состоящего из двух частей. При этом "первая" часть

должна загружаться в область памяти,выделенную для

загрузки прикладных программ,а "вторую" - вместе с

остальной частью вируса - следует записать в стар-

шие адреса основной памяти .В случае возникновения

прерывания INT 21h управление будет передаваться

первой части, которая затем передаст его второй.

К сожалению, данный метод себя не оправдывает.DOC-

TOR WEB в процессе эвристического анализа просто

трассирует обработчик INT 21h до входа в его исхо-

дный ( системный ) код, одновременно контролируя

адрес обработчика, и при получении любых подозри-

тельных результатов выдает сообщение о наличии не-

известного вируса .Поэтому необходимо сделать так,

чтобы при трассировании "первой" части под управ-

лением отладчика вызывался системный обработчик, а

при "нормальном" трассировании - вирусный ( экспе-

рименты показывают,что DOCTOR WEB,вероятнее всего,

содержит встроенный отладчик) .Для реализации ука-

занного метода можно использовать особенность мик-

ропроцессора, состоящую в наличии очереди команд .

Однако этот путь по существу является тупиковым,

так как вирус, реализующий такой алгоритм,не будет

работать на процессорах PENTIUM из-за наличия в

последних так называемой системы прогнозирования

переходов. Мы же поступим по другому.Как вы знаете

все отладчики интенсивно используют прерывание 01h

( One Step ),обработчик которого останавливает ра-

боту микропроцессора после выполнения каждой ко-

манды. Поэтому естественно предположить, что для

проведения эвристического анализа DOCTOR WEB уста-

навливает собственный обработчик Int 01h,а значит,

заменяет адрес системного обработчика в таблице

векторов прерываний.На факт замены этого адреса мы

и будем ориентироваться. Экспериментальным путем

было установлено, что системный обработчик Int 01h

находится в памяти по такому адресу : 0070:XXXX.

Следовательно, достаточно проверить сегментный ад-

рес обработчика Int 01h, чтобы сказать, перехваче-

но-ли это прерывание какой-нибудь прикладной про-

граммой.

Следующая проблема,возникающая при построении про-

граммы обработки прерывания из двух частей, состо-

ит вот в чем: непонятно, куда именно следует поме-

стить " первую " часть,чтобы она не затиралась при

загрузке программ и их работе, и не была бы видна

с помощью, например, VC.COM или RELEASE.

Многочисленными экспериментами было установлено ,

что для размещения участка обработчика прерывания,

ответственного за " обман " эвристического анали-

затора, можно использовать байты с 38h по 5Ch,при-

надлежащие PSP первой загруженной в память програ-

ммы .Эти байты зарезервированы разработчиками опе-

рационной системы, вероятно,для будущих ее версий,

и их значения остаются постоянными в течение всего

сеанса работы компьютера .Кроме того, зарезервиро-

ванного пространства в PSP вполне хватит для раз-

мещения программы обработки прерывания .

Итак, можно предложить следующий алгоритм :

1.) Отыскивается PSP первой загруженной в память

программы .

2.) В байты 38h - 5Ch записывается код " промежу-

точного " обработчика прерывания INT 21h .Этот

код должен вызывать системный обработчик при

работе под управлением отладчика и вирусный в

противном случае .

* На самом деле можно использовать и другие об-

ласти PSP, расположенные после байта со смеще-

нием 5Ch ( примерно 32 байта - без всяких пос-

ледствий. ).

3.) В таблице векторов прерываний вектор INT 21h

заменяется на точку входа в промежуточный об-

работчик .

Вот, собственно, и все .