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