Книги
чёрным по белому
Главное меню
Главная О нас Добавить материал Поиск по сайту Карта книг Карта сайта
Книги
Археология Архитектура Бизнес Биология Ветеринария Военная промышленность География Геология Гороскоп Дизайн Журналы Инженерия Информационные ресурсы Искусство История Компьютерная литература Криптология Кулинария Культура Лингвистика Математика Медицина Менеджмент Металлургия Минералогия Музыка Научная литература Нумизматика Образование Охота Педагогика Политика Промышленные производства Психология Путеводители Религия Рыбалка Садоводство Саморазвитие Семиотика Социология Спорт Столярное дело Строительство Техника Туризм Фантастика Физика Футурология Химия Художественная литература Экология Экономика Электроника Энергетика Этика Юриспруденция
Новые книги
Цуканов Б.И. "Время в психике человека" (Медицина)

Суворов С. "Танк Т-64. Первенец танков 2-го поколения " (Военная промышленность)

Нестеров В.А. "Основы проэктирования ракет класса воздух- воздух и авиационных катапульных установок для них" (Военная промышленность)

Фогль Б. "101 вопрос, который задала бы ваша кошка своему ветеринару если бы умела говорить" (Ветеринария)

Яблоков Н.П. "Криминалистика" (Юриспруденция)
Реклама

Азбука хакера 3. Компьютерная вирусология - Собейкис В.Г.

Собейкис В.Г. Азбука хакера 3. Компьютерная вирусология — М.: Майор, 2006. — 512 c.
ISBN 5-98551-013-1
Скачать (прямая ссылка): hakeriazbukahakera2006.djvu
Предыдущая << 1 .. 51 52 53 54 55 56 < 57 > 58 59 60 61 62 63 .. 123 >> Следующая

FILE_OK, и та решает, пригоден ли
017
Варфоломей Собейкис. АЗБУКА ХАКЕРА-3
файл для заражения. Проверка FILE OK идентична той, которая выполняется в
вирусе Intruder-B. Но поскольку Yellow Worm перехватывает функции FCB, он
сначала копирует имя жертвы в буфер FNAME, который находится в вирусе,
затем открывает файл и работает с жертвой, используя обычные файловые
функции, основанные на дескрипторе.
Инфицирование программ
Процесс инфекции вируса Yellow Worm идентичен аналогичному процессу в
Intruder-B, но в данном случае нам не нужно заниматься указателями в
таблице перемещений. Вирус должен:
1. прочитать ЕХЕ-заголовок в программе-жертве;
2. расширить размер загрузочного модуля, пока тот не станет четным
множеством 16-ти байтов, чтобы cs:0000 было первым байтом вируса;
3. записать выполняемый код вируса в конец атакованного ЕХЕ-файла;
4. записать первоначальные значения ss:sp, хранящиеся в ЕХЕ-заголовке, в
локацию HOSTS на диске;
5. записать первоначальные значения cs:ip ЕХЕ-заголовка в локацию HOSTC
на диске;
6. Сохранить Первоначальный ss=VSEG, Первоначальный sp=OFFSET
END_WORM+STACK_SIZE, Первоначальный cs=VSEG и Первоначальный Initial
ip=OFFSET YELLOW_WORM в ЕХЕ-заголовке вместо старых значений;
7. Пересчитать размер зараженного ЕХЕ-файла и подстроить соответственно
поля заголовка Счет страниц и Размер последней страницы;
8. Переписать новый ЕХЕ-заголовок в память.
Самоопределение в памяти
Вирус Yellow Worm определяет себя автоматически. Нам не нужно решать,
находится ли он уже в памяти. Такая проверка делается при расщеплении Z-
блока. Если этот блок не является свободным, вирус не становится
резидентом памяти. Но когда Yellow Worm резидент, Z-блок принадлежит ему.
То есть он не свободен и не используется текущим процессом. Таким
образом, Yellow Worm никогда не загрузит себя в память больше одного
раза.
218
ГЛАВА 5. Инфекция ЕХЕ-файлов
Совместимость с Windows
Создание маленького Z-блока памяти в конце DOS-памяти вызывает интересный
побочный эффект: это препятствует загрузке Microsoft Windows. Если
поместите такую "зверушку" в память и затем попытаетесь выполнить
WIN.COM, то Windows начнет выполняться, а затем зависнет. Вы не получите
никаких сообщений об ошибке. Просто Windows прекратит свое выполнение и
через некоторое время вернет вам подсказку DOS.
Yellow Worm может решить эту проблему несколькими методами. При
выполнении в DOS под Windows он не встречает никаких затруднений. Поэтому
вирус проверяет, загружен ли Windows. Если загружен, вирус выходит на
прогулку. Если не загружен, вирус ждет в засаде. Для подобной проверки
вирусу необходимо прерывание:
mov ах,1600Н int 2FH
Если Wndows загружен, код возвращается с al-номер основной версии и ah-
номер второстепенной версии. Без Wndows мы получили бы al - 0. (Некоторые
версии Wndows возвращаются с al-80H.)
Имеется несколько способов решения, когда вирус поражает систему раньше
загрузки Wndows. Не забывайте, что Yellow Worm - это демонстрационный
вирус. В принципе, он мог бы перехватить прерывание 2FH и отслеживать
попытки запуска Wndows.
Когда Wndows стартует, он задействует int 2FH с ах-1605Н. В этом месте
Yellow Worm мог бы удалить себя из памяти. Но о таком варианте легче
говорить, чем выполнить его. Если мы попробуем отдать захваченное
прерывание 21Н, то быстро поймем, что на данном этапе игры это
невозможно: Windows уже копирует таблицу векторов прерывания, поэтому наш
Желтый червь не может "отцепиться" от захваченного прерывания.
Впрочем, мы можем превратить последний М-блок памяти в Z-блок. Это
одурачит Wndows. Посчитав, что в системе меньше памяти, чем имеется на
самом деле, Wndows загрузится и оставит вирус в покое. Но такое решение
проблемы уменьшит доступную
Варфоломей Собейкис. АЗБУКА ХАКЕРА-3
память системы, и, к тому же, Yellow Worm больше не сможет определять
себя в памяти.
В реальной ситуации используется "фишка*-, которую мы обсудим в следующей
главе, посвященной вирусам загрузочного сектора. В дополнение к хитрым
трюкам с МСВ она модифицирует количество памяти, о котором BIOS
докладывает DOS. Это значение хранится в 0000:0413Н как слово,
указывающее количество килобайтов стандартной доступной памяти - обычно
640. Все эти возможности будут исследоваться в упражнениях для
многоцелевых вирусов.
Проверка вируса
Yellow Worm очень заразный, поэтому если вы захотите исследовать его, я
рекомендую вам выполнять определенный набор процедур. Иначе вы заразите
множество файлов, которые не хотели бы инфицировать.
Чтобы проверить действие Yellow Worm, подготовьте директорию с вирусом и
несколькими тестовыми ЕХЕ-файлами, которые будут подвергаться инфекции.
Затем войдите в окно DOS, пройдите к вашей поддиректории и выполните
вирус. Теперь он стал резидентом памяти.
Напечатайте "DIR*-, чтобы сделать эту директорию вашей тестовой
директорией. Вы видите, что директория перечисляется с явным замедлением,
потому что вирус инфицирует каждый ее файл. После этого напечатайте
Предыдущая << 1 .. 51 52 53 54 55 56 < 57 > 58 59 60 61 62 63 .. 123 >> Следующая