www.pudn.com > Pckv.zip > V57ASM.ASM


PUBLIC	V57 
EXTRN	VWJDOPEN:NEAR,VWJXOPEN:NEAR,VCLOFIL:NEAR 
EXTRN	VWJZZS:NEAR,VWJZZM:NEAR 
EXTRN	VWJCD1:WORD,VWJCD2:WORD,VWJH:WORD 
EXTRN	BCSX:NEAR,GBSX:NEAR,HFSX:NEAR,BCSJRQ:NEAR,HFSJRQ:NEAR 
EXTRN	PMHHHC:NEAR,XS09SC:NEAR 
EXTRN	GZW01:WORD,GZW02:WORD,GZW03:WORD,SCANTZ:WORD,BDZJA:NEAR 
EXTRN	JSW01:WORD,JSW02:WORD,JSW03:WORD,WJMZZ:WORD 
EXTRN	WJSEGGZA:WORD,WJSEGGZB:WORD,ESGZA:WORD,ESGZB:WORD 
EXTRN	ENDJS:WORD,FHM:BYTE 
EXTRN	WJSXZC1:WORD,WJSXZC2:WORD,WJSXZC3:WORD,ESZC1:WORD 
EXTRN	GZB01:BYTE,GZB02:BYTE,GZB03:BYTE 
EXTRN	JSB01:BYTE,JSB02:BYTE,JSB03:BYTE 
EXTRN	OPENCZF:BYTE,DWJCZF:BYTE,XWJCZF:BYTE,CZCZF:BYTE,WJTYPE:BYTE 
EXTRN	BDTZHCQ:BYTE,WJGZQ:BYTE,WJTQ:BYTE 
; 
;		V57--1993 
;        CREATED:   95-10-22   
SEG_B	SEGMENT	PARA PUBLIC 'data' 
V57W01	DW	0 
V57W02	DW	0 
V57W03	DW	0 
V57W04	DW	0 
V57W05	DW	0 
V57ZFA	DB '  找到文件型幽灵(A)病毒 已被杀掉 !$'  
V57ZFB	DB '  找到文件型幽灵(A)病毒 !$'  
SEG_B	ENDS 
; 
SEG_C	SEGMENT	PARA PUBLIC 'code' 
      ASSUME CS:SEG_C , DS:SEG_B 
V57		PROC	NEAR 
V57START: 
	PUSH	DS 
	POP	ES 
	CALL	BCSX 
	JNB	V57KS1 
	MOV	FHM,1 
	JMP	V57ZE4 
V57KS1:	CMP	SCANTZ,0FH 
	JNZ	V57KS2 
	CALL	VWJDOPEN 
	JNB	V57KS4 
	JMP	V57OPENC 
V57KS2:	CALL	GBSX 
	JNB	V57KS3 
	MOV	FHM,1 
	JMP	V57ZE4 
V57KS3:	CALL	VWJXOPEN 
	JNB	V57KS4 
	JMP	V57OPENC 
V57KS4:	CALL	BCSJRQ 
	JNB	V57KS5 
	JMP	V57ZE2 
V57KS5:	CALL	VWJZZM 
	JNB	V57KS6 
	JMP	V57CZC 
V57KS6:	MOV	VWJCD1,DX 
	MOV	VWJCD2,AX 
	CALL	VWJZZS 
; 
	MOV	DX,OFFSET WJTQ 
	MOV	CX,20H 
	MOV	AH,3FH 
	MOV	BX,VWJH 
	INT	21H 
	JNB	V57WJ1 
	JMP	V57DWJC 
V57WJ1:	CMP	WJTYPE,'E' 
	JZ	V57WE0 
; 
	MOV	V57W05,0100H 
	MOV	SI,OFFSET WJTQ 
	MOV	AL,[SI] 
	CMP	AL,0E9H 
	JZ	V57WC1 
	JMP	V57END2 
V57WC1:	MOV	AX,[SI+1] 
	ADD	AX,3 
	MOV	BP,AX 
	MOV	DX,0 
	MOV	AX,0 
	JMP	V57WE2 
; 
V57WE0:	MOV	V57W05,0 
	MOV	SI,OFFSET WJTQ 
	MOV	AL,[SI] 
	CMP	AL,4DH 
	JZ	V57WE1 
	JMP	V57END2 
V57WE1:	MOV	AX,[SI+14H] 
	MOV	BP,AX 
	MOV	AX,[SI+16H] 
	MOV	CL,4 
	ROL	AX,CL 
	MOV	DX,AX 
	AND	DX,000FH 
	AND	AX,0FFF0H 
	MOV	BX,[SI+8] 
	SHL	BX,CL 
	ADD	AX,BX 
	ADC	DX,0 
V57WE2:	MOV	VWJCD1,DX 
	MOV	VWJCD2,AX 
	CALL	V57ZCXC 
	JNB	V57TA 
	JMP	V57END1 
; 
V57TA:	MOV	JSW01,0 
	MOV	CX,000AH 
	MOV	SI,OFFSET BDTZHCQ 
V57TA1:	LODSB 
	INC	JSW01 
	CALL	V57ZCXB 
	JNB	V57TA2 
	LOOP	V57TA1 
	JMP	V57END2 
V57TA2:	CALL	V57ZCXC 
	JNB	V57TB 
	JMP	V57END1 
; 
V57TB:	MOV	JSW01,0 
	MOV	CX,000AH 
	MOV	SI,OFFSET BDTZHCQ 
V57TB1:	LODSB 
	INC	JSW01 
	CALL	V57ZCXB 
	JNB	V57TB2 
	LOOP	V57TB1 
	JMP	V57END2 
V57TB2:	CALL	V57ZCXC 
	JNB	V57TC 
	JMP	V57END1 
; 
V57TC:	MOV	JSW01,0 
	MOV	CX,000AH 
	MOV	SI,OFFSET BDTZHCQ 
V57TC1:	LODSB 
	INC	JSW01 
	CALL	V57ZCXB 
	JNB	V57TC2 
	LOOP	V57TC1 
	JMP	V57END2 
V57TC2:	CALL	V57ZCXC 
	JNB	V57TD 
	JMP	V57END1 
; 
V57TD:	MOV	JSW01,0 
	MOV	CX,000AH 
	MOV	SI,OFFSET BDTZHCQ 
V57TD1:	LODSB 
	INC	JSW01 
	DEC	CX 
	CALL	V57ZCXA 
	JB	V57TD2 
	LODSW 
	SUB	CX,2 
	ADD	JSW01,2 
	MOV	V57W01,AX 
	JMP	V57TD3 
V57TD2:	CMP	CX,0 
	JNZ	V57TD1 
	JMP	V57END2 
V57TD3:	LODSB 
	INC	JSW01 
	DEC	CX 
	CALL	V57ZCXB 
	JNB	V57TD4 
	CMP	CX,0 
	JNZ	V57TD3 
	JMP	V57END2 
V57TD4:	CALL	V57ZCXC 
	JNB	V57TE 
	JMP	V57END1 
; 
V57TE:	MOV	JSW01,0 
	MOV	CX,000AH 
	MOV	SI,OFFSET BDTZHCQ 
V57TE1:	LODSB 
	INC	JSW01 
	DEC	CX 
	CALL	V57ZCXA 
	JB	V57TE2 
	LODSW 
	SUB	CX,2 
	ADD	JSW01,2 
	MOV	V57W02,AX 
	JMP	V57TE3 
V57TE2:	CMP	CX,0 
	JNZ	V57TE1 
	JMP	V57END2 
V57TE3:	LODSB 
	INC	JSW01 
	DEC	CX 
	CALL	V57ZCXB 
	JNB	V57TE4 
	CMP	CX,0 
	JNZ	V57TE3 
	JMP	V57END2 
V57TE4:	CALL	V57ZCXC 
	JNB	V57TF 
	JMP	V57END1 
; 
V57TF:	MOV	JSW01,0 
	MOV	CX,000AH 
	MOV	SI,OFFSET BDTZHCQ 
V57TF1:	LODSB 
	INC	JSW01 
	CALL	V57ZCXB 
	JNB	V57TF2 
	LOOP	V57TF1 
	JMP	V57END2 
V57TF2:	CALL	V57ZCXC 
	JNB	V57TG 
	JMP	V57END1 
; 
V57TG:	MOV	JSW01,0 
	MOV	CX,000AH 
	MOV	SI,OFFSET BDTZHCQ 
V57TG1:	LODSB 
	INC	JSW01 
	DEC	CX 
	CMP	AL,81H 
	JNZ	V57TG2 
	LODSB 
	LODSW 
	SUB	CX,3 
	ADD	JSW01,3 
	MOV	V57W03,AX 
	JMP	V57TG3 
V57TG2:	CMP	CX,0 
	JNZ	V57TG1 
	JMP	V57END2 
V57TG3:	LODSB 
	INC	JSW01 
	DEC	CX 
	CALL	V57ZCXB 
	JNB	V57TG4 
	CMP	CX,0 
	JNZ	V57TG3 
	JMP	V57END2 
V57TG4:	CALL	V57ZCXC 
	JNB	V57TH 
	JMP	V57END1 
; 
V57TH:	MOV	JSW01,0 
	MOV	CX,000AH 
	MOV	SI,OFFSET BDTZHCQ 
V57TH1:	LODSB 
	INC	JSW01 
	CALL	V57ZCXB 
	JNB	V57TH2 
	LOOP	V57TH1 
	JMP	V57END2 
V57TH2:	CALL	V57ZCXC 
	JNB	V57TI 
	JMP	V57END1 
; 
V57TI:	MOV	JSW01,0 
	MOV	CX,000AH 
	MOV	SI,OFFSET BDTZHCQ 
V57TI1:	LODSB 
	INC	JSW01 
	DEC	CX 
	CMP	AL,81H 
	JNZ	V57TI2 
	LODSB 
	LODSW 
	SUB	CX,3 
	ADD	JSW01,3 
	MOV	V57W04,AX 
	JMP	V57TI3 
V57TI2:	CMP	CX,0 
	JNZ	V57TI1 
	JMP	V57END2 
V57TI3:	LODSB 
	INC	JSW01 
	DEC	CX 
	CALL	V57ZCXB 
	JNB	V57TI4 
	CMP	CX,0 
	JNZ	V57TI3 
	JMP	V57END2 
V57TI4:	CALL	V57ZCXC 
	JNB	V57TJ 
	JMP	V57END1 
; 
V57TJ:	MOV	JSW01,0 
	MOV	CX,000AH 
	MOV	SI,OFFSET BDTZHCQ 
V57TJ1:	LODSB 
	INC	JSW01 
	CALL	V57ZCXB 
	JNB	V57WJ2 
	LOOP	V57WJ2 
	JMP	V57END2 
; 
V57WJ2:	CMP	SCANTZ,0FH 
	JNZ	V57WJ2A 
	MOV	DX,OFFSET V57ZFB 
	CALL	XS09SC 
	CALL	BDZJA 
	JMP	V57END2 
V57WJ2A: 
	MOV	AX,V57W01 
	MOV	CX,V57W04 
	SUB	CX,AX 
	CMP	CX,0DD8H 
	JZ	V57WJ3 
	JMP	V57END2 
V57WJ3:	MOV	CX,VWJCD1 
	MOV	DX,VWJCD2 
	ADD	DX,AX 
	ADC	CX,0 
	SUB	DX,V57W05 
	SBB	CX,0 
	MOV	AX,4200H 
	MOV	BX,VWJH 
	INT	21H 
	JNB	V57WJ4 
	JMP	V57CZC 
V57WJ4:	MOV	DX,0 
	MOV	CX,0DD8H 
	MOV	BX,VWJH 
	MOV	AX,ESZC1 
	PUSH	DS 
	PUSH	ES 
	MOV	DS,AX 
	MOV	ES,AX 
	MOV	AH,3FH 
	INT	21H 
	POP	DS 
	JNB	V57WJ5 
	JMP	V57DWJC 
V57WJ5:	MOV	SI,0 
	MOV	AX,V57W02 
V57WJ6:	XOR	ES:[SI],AX 
	ADD	AX,V57W03 
	INC	SI 
	CMP	SI,0DD8H 
	JNZ	V57WJ6 
; 
	POP	ES 
	MOV	CX,0AH 
	MOV	SI,002AH 
	MOV	BX,0040H 
V57WJ7:	CALL	V57ZCXD 
	ADD	SI,2 
	ADD	BX,0AH 
	LOOP	V57WJ7 
; 
	CALL	VWJZZS 
	CMP	WJTYPE,'C' 
	JZ	V57WJ8 
	MOV	AX,ESZC1 
	MOV	ES,AX 
	MOV	SI,OFFSET WJTQ 
	MOV	DI,0 
	MOV	AX,[SI+12H] 
	MOV	ES:[DI+22H],AX 
	MOV	CX,18H 
	JMP	V57WJ9 
V57WJ8:	MOV	CX,3 
V57WJ9:	MOV	DX,10H 
	MOV	BX,VWJH 
	PUSH	DS 
	MOV	AX,ESZC1 
	MOV	DS,AX 
	MOV	AH,40H 
	INT	21H 
	POP	DS 
	JNB	V57WJ10 
	JMP	V57XWJC 
; 
V57WJ10: 
	MOV	CX,VWJCD1 
	MOV	DX,VWJCD2 
	ADD	DX,V57W01 
	ADC	CX,0 
	SUB	DX,V57W05 
	SBB	CX,0 
	MOV	AX,4200H 
	MOV	BX,VWJH 
	INT	21H 
	JNB	V57WJ11 
	JMP	V57CZC 
V57WJ11: 
	MOV	AH,40H 
	MOV	BX,VWJH 
	MOV	DX,0 
	MOV	CX,0 
	INT	21H 
	JNB	V57WJ12 
	JMP	V57XWJC 
V57WJ12: 
	JMP	V57END0 
; 
V57END2:	MOV	FHM,2 
		JMP	V57ZE1 
V57END0:	MOV	FHM,0 
		MOV	DX,OFFSET V57ZFA 
		CALL	XS09SC 
		CALL	BDZJA 
		JMP	V57ZE1 
; 
V57OPENC:	MOV	FHM,1 
		MOV	DX,OFFSET OPENCZF 
		CALL	XS09SC 
		JMP	V57ZE3 
; 
V57CZC:		MOV	DX,OFFSET CZCZF 
		JMP	V57XSL 
V57DWJC:	MOV	DX,OFFSET DWJCZF 
		JMP	V57XSL 
V57XWJC:	MOV	DX,OFFSET XWJCZF 
V57XSL:		CALL	XS09SC 
V57END1:	MOV	FHM,1 
V57ZE1:		CMP	SCANTZ,0FH 
		JZ	V57ZE2 
		CALL	HFSJRQ 
V57ZE2:		CALL	VCLOFIL 
V57ZE3:		CMP	SCANTZ,0FH 
		JZ	V57ZE4 
		CALL	HFSX 
V57ZE4:		RET 
; 
V57ZCXA	PROC	NEAR 
	CMP	AL,0B8H 
	JB	V57ZA1 
	CMP	AL,0BFH 
	JA	V57ZA1 
	CLC 
	JMP	V57ZA2 
V57ZA1:	STC 
V57ZA2:	RET 
V57ZCXA	ENDP 
; 
V57ZCXB	PROC	NEAR 
	CMP	AL,0E9H 
	JZ	V57ZB1 
	CMP	AL,0EBH 
	JZ	V57ZB2 
	JMP	V57ZB4 
V57ZB1:	MOV	BX,BP 
	ADD	BX,JSW01 
	ADD	BX,2 
	LODSW 
	ADD	BX,AX 
	JMP	V57ZB3 
V57ZB2:	MOV	BX,BP 
	ADD	BX,JSW01 
	ADD	BX,1 
	LODSB 
	TEST	AL,80H 
	JNZ	V57ZB6 
	MOV	AH,0 
	JMP	V57ZB7 
V57ZB6:	MOV	AH,0FFH 
V57ZB7:	ADD	BX,AX 
V57ZB3:	MOV	BP,BX 
	CLC 
	JMP	V57ZB5 
V57ZB4:	STC 
V57ZB5:	RET 
V57ZCXB	ENDP 
; 
V57ZCXC	PROC	NEAR 
	MOV	CX,VWJCD1 
	MOV	DX,VWJCD2 
	ADD	DX,BP 
	ADC	CX,0 
	MOV	AX,4200H 
	MOV	BX,VWJH 
	INT	21H 
	JNB	V57ZC1 
	MOV	DX,OFFSET CZCZF 
	JMP	V57ZC2 
V57ZC1:	MOV	DX,OFFSET BDTZHCQ 
	MOV	CX,20H 
	MOV	AH,3FH 
	MOV	BX,VWJH 
	INT	21H 
	JNB	V57ZC3 
	MOV	DX,OFFSET DWJCZF 
V57ZC2:	CALL	XS09SC 
	STC 
	JMP	V57ZC4 
V57ZC3:	CLC 
V57ZC4:	RET 
V57ZCXC	ENDP 
; 
V57ZCXD	PROC	NEAR 
	PUSH	ES 
	PUSH	BX 
	PUSH	CX 
	PUSH	SI 
	PUSH	BX 
	MOV	AX,ESZC1 
	MOV	ES,AX 
	MOV	AX,ES:[SI] 
	MOV	CX,VWJCD1 
	MOV	DX,VWJCD2 
	ADD	DX,AX 
	ADC	CX,0 
	SUB	DX,V57W05 
	SBB	CX,0 
	MOV	AX,4200H 
	MOV	BX,VWJH 
	INT	21H 
	JNB	V57ZD1 
	MOV	DX,OFFSET CZCZF 
	JMP	V57ZD2 
V57ZD1:	POP	DX 
	MOV	CX,0AH 
	MOV	AH,40H 
	MOV	BX,VWJH 
	PUSH	DS 
	PUSH	ES 
	POP	DS 
	INT	21H 
	POP	DS 
	JNB	V57ZD3 
	MOV	DX,OFFSET XWJCZF 
V57ZD2:	CALL	XS09SC 
	STC 
	JMP	V57ZD4 
V57ZD3:	CLC 
V57ZD4:	POP	SI 
	POP	CX 
	POP	BX 
	POP	ES 
	RET 
V57ZCXD	ENDP 
V57		ENDP 
; 
SEG_C	ENDS 
	END	V57START