Компьютерные вирусы
Категория реферата: Рефераты по информатике, программированию
Теги реферата: реферат на тему образ жизни, сочинение язык
Добавил(а) на сайт: Jeshman.
Предыдущая страница реферата | 1 2 3 4 5 6 7 8 9 10 11 | Следующая страница реферата
Зная точки входа, можно вызывать их напрямую, минуя таблицу этого модуля. Поэтому можно заменить вызовы KERNEL32.DLL в его стандартной точке на вызовы непосредственно функций. Просто сохраняем в стеке значение функции и вызываем точку входа в модуль.
Модуль KERNEL32.DLL располагается в памяти статически – именно так и
предполагалось. Но конкретное место его расположения в разных версиях
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. Добавить новый объект в таблицу объектов.
Рекомендуем скачать другие рефераты по теме: контрольная, использование рефератов.
Предыдущая страница реферата | 1 2 3 4 5 6 7 8 9 10 11 | Следующая страница реферата