Главная    Почта    Новости    Каталог    Одноклассники    Погода    Работа    Игры     Рефераты     Карты
  
по Казнету new!
по каталогу
в рефератах

Компьютерные вирусы

кодом к ее концу. Естественно, считанные 24 байта также дописываются в файл-
жертву. Поэтому для определения способа  передачи  управления  оригинальному
коду программы вполне  достаточно  повторно  сравнить  сохраненный  фрагмент
начала с признаком :
cmp  cs:data_15[si],5A4Dh
je      lt_Was_EXE
 
В случае  если  программа  была  заражена  по  СОМ-алгоритму,  вирус  просто
извлекает первые 3 байта из ячейки памяти по адресу data_15, копирует  их  в
старое начало  оригинального  кода  (по  адресу  cs:100h)  и  передает  туда
управление. Адресу data_15 соответствует 80-ый (если считать от конца)  байт
зараженной  программы.  В  случае  если  программа  была  заражена  по  ЕХЕ-
алгоритму,  вирус вычисляет старую точку входа по сохраненным  в  data_20  и
data_21 значениям полей ReloCS и ExeIP, восстанавливает  расположение  стека
по сохраненным в data_18 и data_19 значениям полей ReloSSи ExeSP и  передает
управление на ReloCS+ES+10h:ExeIP (ES -сегмент PSP; ES+l0h - сегмент  начала
программы; ES+ReloCS+10h - полный сегмент точки  входа).  Расположение  этих
адресов в зараженном файле (от конца файла):
data_20 - 60
data_21 - 58
data_18 - 66
data_19 - 64
 
Еще могут пригодиться сохраненные  значения  полей  PartPag  и  PageCnt  (от
конца файла):
 
data_16+1 - 78
data_16+3 - 76
 
Для излечения зараженного файла достаточно восстановить измененные  значения
ячеек, адреса которых только что вычислили,и отсечь 1740  вирусных  байт  от
конца файла.
 
5. Еще несколько особенностей,  с  которыми  иногда  можно  встретиться  при
дизассемблировании кода вируса и изучении листинга. Код  вируса  может  быть
зашифрован. В этом случае  в  начале  вирусного  кода  должен  располагаться
расшифровщик. Вообще говоря, расшифровщиков  может  быть  много,  но  первый
всегда существует. Если расшифровщик меняется от одного зараженного файла  к
другому, значит  имеем  дело  с  полиморфным  вирусом.  Вырожденныйслучай  -
зашифровываются только  сохраненные  в  теле  вируса  байты.  Для  СОМ-файла
вполне достаточно пошагово пройти расшифровщик в  отладчике,  дождаться  его
завершения и сохранить на винчестер расшифрованный  код  вируса.  Полученный
файл можно дизассемблировать. Для  ЕХЕ-файла  такое  не  подходит,  так  как
впамяти после загрузки отсутствует  заголовок,  и  полученный  файлне  может
быть дизассемблирован именно как ЕХЕ. Вероятно, придется писать  специальную
программу  расшифровки  на  основе   изу-ченного   по   листингу   алгоритма
расшифровщика.   Расшифровщик   может   быть   совмещен    с    алгоритмами,
противодействующими трассировке кода  вируса  с  использованием  отладчиков.
Ознакомиться с ними можно в специальной  литературе,  посвященной  борьбе  с
НСК.  Авторы  вирусов,  как  правило,  редко  изобретают  что-то   новое   и
используют  широко  известные   методы.   Эвристические   анализаторы   кода
Эвристическим анализатором кода называется набор подпрограмм,  анализирующих
код исполняемых файлов, памяти или загрузочных секторов  для  обнаружения  в
нем  разных  типов  компьютерных  вирусов.  Рассмотрим  универсальную  схему
такого  кодо  анализатора.  Действуя   в   соответствии   с   этой   схемой,
кодоанализатор   способен   максимально   эффективно    задействовать    всю
информацию, собранную для тестируемого объекта. Основные термины: Событие  -
это совокупность кода или вызов определенной функции  операционной  системы,
направленные на преобразование системных данных,  работу  ,  с  файлами  или
часто используемые вирусные  конструкции.  Цепочка  связных  событий  -  это
набор событий,  которые  должны  быть  выявлены  в  порядке  их  следования.
Цепочка  несвязных  событий  -  это  набор  событий,  которые  должны   быть
выявлены, но не обязательно в строгом  порядке.  Действия  -  набор  цепочек
связных  или  несвязных  событий,  для  которых   выполнены   все   условия.
Эвристическая   маска   -   набор   действий,   выявленных   при    проверке
файла.Эвристическое  число  -   порядковый   номер   первой   из   совпавших
эвристических масок. События распознаются при помощи  подпрограмм  выявления
событий, в которых могут использоваться также таблицы с  данными.  Остальные
данные  просто  хранятся  в  массивах   и   не   анализируются.   Рассмотрим
функциональную схему эвристического анализатора  Эмулятор  кода  работает  в
режиме просмотра, то есть его  основная  задача  -  не  эмулировать  код,  а
выявлять в нем всевозможные события. События сохраняются в  таблице  событий
по алгоритму:
if (Events[EventNumber]= =0) Events[EventNumber]=++CountEvents;
 
где: Events - массив событий;
EventNumber - номер регистрируемого события;
CountEvents - порядковый номер зарегистрированного события.
 
 
                                    [pic]
 
Таким образом, в ячейку массива Events  записывается  порядковый  номер  для
выявленного события. CountEvents при инициализации равен 0. После того,  как
эмулятор   завершит   свою   работу,   последовательно    запускаются    два
преобразователя. Первый преобразователь заполняет массив  действия,  выбирая
данные  из  массива  событий  и  цепочек  связных  и  несвязных  событий  по
следующему алгоритму:
 
 
 
Пред.1617
скачать работу

Компьютерные вирусы

 

Отправка СМС бесплатно

На правах рекламы


ZERO.kz
 
Модератор сайта RESURS.KZ