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

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

кретное  место  его  расположения  в  разных  версиях
Windows 9x отличается. Это  было  проверено.  Оказалось,  что  одна  функция
(получение времени/даты) отличается номером. Для компенсации  этих  различий
добавлена проверка двух различных мест  на  наличие  KERNEL32.DLL.  Но  если
KERNEL32.DLL все-таки не  найден,  вирус  возвращает  управление  программе-
носителю.
 
                          Адреса и номера функции.
    Для June Test Release KERNEL32.DLL находится по адресу 0BFF93B95h,  для
August Release – по адресу 0BFF93C1Dh. Можно найти другие значения  функции,
используя 32-битный отладчик. В таблице 1 приведены адреса функций,  которые
нужны для работы вируса.
 
 
 
                            Таблица 1. Адреса некоторых функций KERNEL32.DLL
 
|Функция                |Адрес в June Test      |Адрес в August Test    |
|                       |Release                |Release                |
|GetCurrentDir          |BFF77744h              |BFF77744h              |
|SetCurrentDir          |BFF7771Dh              |BFF7771Dh              |
|GetTime                |BFF9D0B6h              |BFF9D14Eh              |
|MessageBox             |BFF638D9h              |BFF638D9h              |
|FindFile               |BFF77893h              |BFF77893h              |
|FindNext               |BFF778CBh              |BFF778CBh              |
|CreateFile             |BFF77817h              |BFF77817h              |
|SetFilePointer         |BFF76FA0h              |BFF76FA0h              |
|ReadFile               |BFF75806h              |BFF75806h              |
|WriteFile              |BFF7580Dh              |BFF7580Dh              |
|CloseFile              |BFF7BC72h              |BFF7BC72h              |
 
                            Соглашения о вызовах.
    Windows 9x написан на языках С++ (в  основном)  и  Assembler.  И,  хотя
соглашения о вызовах просты для применения, Microsoft их не использует.  Все
АРI под Windows 9x используют  Pascal  Calling  Convention.  Пример  –  АРI,
описанный в файлах справки Visual C++:
    FARPROC      GetProcAddres (
           HMODULE    hModule,               // описатель DLL-модуля
           LPCSTR     lpszProc               // имя функции
    );
 
    На первый  взгляд  кажется,  что  достаточно  лишь  сохранить  в  стеке
описатель DLL-модуля (он стоит перед указателем на имя  функции)  и  вызвать
API. Но это не так. Параметры, согласно Pascal  Calling  Convention,  должны
быть сохранены в стеке  в обратном порядке:
    Push   offset lpszProc
    Push   dword ptr [hModule]
    Call   GetProcAddress
 
    Используя 32-битный отладчик, можно оттрасировать вызов и  найти  вызов
KERNEL32.DLL для каждого конкретного случая.  Это  позволит  получить  номер
функции и обойтись без необходимой для вызова таблицы импортируемых имен.
                 Заражение файлов формата PE – execuatable.
    Определение положения  начала  РЕ  –  заголовка  происходит  аналогично
поиску начала NE – заголовка. Если смещение таблицы настройки адресов  (поле
18h) в заголовке ЕХЕ – файла 40h или больше, то по  смещению  3Ch  находится
смещение PE – execuatable  заголовка.  Сигнатура  PE  –  execuatable  («РЕ»)
находится, как и у NE – execuatable ЕХЕ – файла, в начале нового заголовка.
    Внутри PE – заголовка находится таблица объектов.  Ее  формат  наиболее
важен по сравнению с прочими. Для добавления вирусного  кода  в  носитель  и
перехвата  вирусом  управления  необходимо  добавить   элемент   в   таблицу
объектов.
    Основные действия заражения PE – execuatable файла:
    1. Найти смещение заголовка PE – execuatable в файле.
    2.  Считать  достаточное  количество  информации   из   заголовка   для
       вычисления его полного размера.
    3. Считать весь PE – заголовок и таблицу объектов.
    4. Добавить новый объект в таблицу объектов.
    5. Установить точку входа RVA на новый объект.
    6. Дописать вирус к файлу по вычисленному физическому смещению.
    7. Записать измененный РЕ – заголовок в файл.
 
    Для определения расположения таблицы объектов  следует  воспользоваться
значением переменной «HeaderSize» (не путать  с  «NT  headersize»),  которая
содержит совместный размер заголовков DOS, PE и таблицы объектов.
    Для чтения таблицы  объектов  необходимо  считать  HeaderSize  байт  от
начала файла.
    Таблица  объектов  расположена  непосредственно  за  NT  –  заголовком.
Значение «NTheadersize»  показывает  количество  байт,  следующих  за &
12345След.
скачать работу

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

 

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

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


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