www.pudn.com > Pckv.zip > RESIST.ASM
; RESIST.ASM ; CREATED: 3-16-1996 ;----------- STACK_SEG_A --- SEG_A SEGMENT PARA STACK DB 80H DUP (0) SEG_A ENDS ;-------------- SEG_B ------ SEG_B SEGMENT PARA PUBLIC ASSUME CS:SEG_B , DS:SEG_B , SS:SEG_A ; PROGRAM ENTRY POINT RESIST PROC FAR START: JMP KS DMH3 DB 0 DMH2 DW 0 DMH1 DW 0 WJSJ DW 0 WJRQ DW 0 BOOTWZ1 DW 0180H BOOTWZ2 DW 0001H INT13ZF DD 0 WJRE1 DB 'C:\RESIST1.DAT',0 WJRE2 DB 'C:\RESIST2.DAT',0 WJCO1 DB 'C:\COMMAND.COM',0 WJCO2 DB 'C:\AABBCCD.LLL',0 WJCO3 DB 'C:\COMMAND.BTK',0 WJH DW 0 WJCD DW 0 REWJCD DW 0 RESISTTZ DB 0 DISKCWM DB 0 DISKTZ1 DB 0 DISKTZ2 DB 0 ENDTZ DB 0 NEWESZC DW 0 RESISTCD DW 0 PSPZF1 DB 1CH DUP(0) PSPZF2 DB 04DH,05AH,0B8H,000H,006H,000H,001H,000H DB 020H,000H,000H,000H,0FFH,0FFH,000H,000H DB 040H,000H,016H,085H,000H,000H,004H,000H DB 020H,000H,000H,000H DIRTZM DB 0BBH,0FFH,005H,0FEH,005H,0EAH,003H,030H DB 0C8H,08DH,0D8H,0C4H,005H,0C0H,0FFH,004H NOTZF DB 10,13,'抗毒文件 Resist 没有按装 !$' CZCZF DB 10,13,'文件操作错 !$' OPENZF DB 10,13,'打不开文件 !$' CREATZF DB 10,13,'建立文件错 !$' DWJZF DB 10,13,'读文件错 !$' XWJZF DB 10,13,'写文件错 !$' XSZF1 DB 13,10,' 警告 !!!' DB 13,10,' 系统引导已经被病毒破坏了 !' DB 13,10,' 在分区扇或引导扇的病毒已经被杀掉了。' DB 13,10,' 请重新启动计算机 !$' XSZF2 DB 13,10,' 警告 !!!' DB 13,10,' 硬盘的 command.com 文件中有病毒,现已杀掉病毒 !' DB 13,10,' 请重新启动计算机 ! ' DB '并检查其他exe和com文件是否也感染上该病毒!$' XSZF3 DB 13,10,' 警告 !!!' DB 13,10,' 硬盘中已感染上 DIR-II 病毒 !' DB 13,10,' 请首先杀掉 DIR-II 病毒,才能检查或清除其他病毒 !$' XSZF4 DB 13,10,' 您的系统已感染上 DIR-II 病毒 !$' XSZF5 DB 13,10,' 请用 PCKV 清除 DIR-II 病毒!$' ; ERR1 DB 13,10,'读分区扇错 !$' ERR2 DB 13,10,'写分区扇错 !$' ERR3 DB 13,10,'读引导扇错 !$' ERR4 DB 13,10,'写引导扇错 !$' ERR5 DB 13,10,'硬盘的分区表坏 !$' ERR6 DB 13,10,'保存的分区表坏 !$' ERR7 DB 13,10,'引导扇的位置不对 !$' ERR8 DB 13,10,'保存文件或抗毒文件错 !$' DPBGS DW 3 DPBOFFSET DW 006BH DW 0 KS: PUSH ES MOV AX,0 PUSH AX MOV AX,SEG_B MOV DS,AX MOV ES,AX MOV AX,OFFSET ENDADD MOV RESISTCD,AX ADD AX,4FH AND AX,0FFF0H MOV NEWESZC,AX MOV RESISTTZ,0 MOV DX,OFFSET WJRE1 MOV AX,3D00H INT 21H JNB REST1 JMP NOTC REST1: MOV WJH,AX CALL CLOFIL JNB REST2 JMP CZC REST2: MOV DX,OFFSET WJRE2 MOV AX,3D00H INT 21H JNB REST3 JMP NOTC REST3: MOV WJH,AX CALL WJZZM JNB REST4 JMP CZC REST4: MOV REWJCD,AX CALL CLOFIL JNB REST5 JMP CZC REST5: CMP DMH1,0 JNZ REST6 JMP NOTC REST6: CMP DMH2,0 JNZ AA1 JMP NOTC ; AA1: CALL READDISK CMP DISKTZ1,0 JZ AA2 TEST DISKTZ1,4 JNZ CC2 TEST DISKTZ1,8 JNZ CC2 TEST DISKTZ1,3 JZ AA2 JMP FF6 AA2: MOV SI,NEWESZC MOV CX,200H MOV AX,0 AA3: ADD AX,[SI] ADD SI,2 LOOP AA3 CMP AX,DMH1 JNZ CC2 JMP BB0 ; CC2: MOV DX,OFFSET WJRE1 MOV AX,3D00H INT 21H JNB CC3 JMP OPENC CC3: MOV WJH,AX MOV BX,WJH MOV CX,400H MOV DX,NEWESZC MOV AH,3FH INT 21H JNB CC4 JMP DWJC CC4: CALL CLOFIL CALL WRITDISK TEST DISKTZ2,0FH JZ CC5 JMP FF6 CC5: MOV DX,OFFSET XSZF1 MOV AH,9 INT 21H JMP FF6 ; BB0: CALL DPB TEST RESISTTZ,4 JZ BB1 JMP DD2 BB1: MOV DX,OFFSET WJCO1 MOV AX,3D00H INT 21H JNB BB2 JMP OPENC BB2: MOV WJH,AX CALL WJZZM JNB BB3 JMP CZC BB3: MOV WJCD,AX CMP AX,REWJCD JNZ DD2 CALL WJZZS MOV CX,WJCD MOV DX,NEWESZC MOV BX,WJH MOV AH,3FH INT 21H JNB BB5 JMP DWJC BB5: CALL CLOFIL MOV CX,10H MOV BX,OFFSET DIRTZM BB6: INC BYTE PTR [BX] INC BX LOOP BB6 MOV SI,OFFSET DIRTZM MOV DI,NEWESZC MOV CX,10H REPZ CMPSB JZ DD2 MOV SI,NEWESZC MOV CX,WJCD SHR CX,1 MOV AX,0 BB8: ADD AX,[SI] ADD SI,2 LOOP BB8 CMP AX,DMH2 JNZ DD2 MOV AX,NEWESZC MOV BX,WJCD ADD BX,AX DEC BX MOV AL,[BX] CMP AL,DMH3 JNZ DD2 JMP END2 ; DD2: MOV DX,OFFSET WJRE2 MOV AX,3D00H INT 21H JNB DD3 JMP OPENC DD3: MOV WJH,AX CALL WJZZM JNB DD4 JMP CZC DD4: MOV WJCD,AX CALL WJZZS JNB DD5 JMP CZC DD5: MOV BX,WJH MOV CX,WJCD MOV DX,NEWESZC MOV AH,3FH INT 21H JNB EE1 JMP DWJC EE1: CALL CLOFIL MOV DX,OFFSET WJCO2 MOV CX,20H MOV AH,3CH INT 21H JNB EE2 JMP CREATC EE2: MOV WJH,AX MOV DX,NEWESZC MOV BX,WJH MOV CX,WJCD MOV AH,40H INT 21H JNB EE3 JMP XWJC EE3: MOV CX,WJSJ MOV DX,WJRQ MOV AX,5701H INT 21H JNB EE4 JMP CZC EE4: CALL CLOFIL MOV DX,OFFSET WJCO3 MOV AX,4100H INT 21H JNB EE5 JMP CZC EE5: MOV DX,OFFSET WJCO1 MOV DI,OFFSET WJCO3 MOV AH,56H INT 21H JNB EE6 JMP CZC EE6: MOV DX,OFFSET WJCO2 MOV DI,OFFSET WJCO1 MOV AH,56H INT 21H JNB EE7 JMP CZC EE7: MOV DX,OFFSET XSZF2 MOV AH,9 INT 21H JMP FF6 FF3: MOV DX,OFFSET XSZF3 MOV AH,9 INT 21H FF6: JMP FF6 ; NOTC: MOV DX,OFFSET NOTZF JMP END1 CZC: MOV DX,OFFSET CZCZF JMP END1 OPENC: MOV DX,OFFSET OPENZF JMP END1 CREATC: MOV DX,OFFSET CREATZF JMP END1 DWJC: MOV DX,OFFSET DWJZF JMP END1 XWJC: MOV DX,OFFSET XWJZF END1: MOV AH,9 INT 21H END2: MOV AX,4C00H INT 21H RET ; DPB PROC NEAR PUSH ES PUSH SI PUSH DI PUSH CX PUSH BX PUSH AX MOV AH,30H INT 21H CMP AL,4 SBB SI,SI MOV AH,52H INT 21H MOV BX,ES:[BX] MOV CX,DPBGS MOV DI,OFFSET DPBOFFSET DPBL1: MOV AX,ES:[BX+SI+13H] CMP AX,04E9H JZ DPBL3 DPBL6: MOV BX,ES:[BX+SI+19H] CMP BX,0FFFFH JZ DPBL2 LOOP DPBL1 DPBL2: JMP DPBL4 DPBL3: OR RESISTTZ,4 DPBL4: POP AX POP BX POP CX POP DI POP SI POP ES RET DPB ENDP ; READDISK PROC NEAR PUSH AX PUSH BX PUSH CX PUSH DX PUSH SI RD0: MOV BX,NEWESZC MOV SI,BX MOV DISKTZ1,0 MOV DL,80H MOV DH,00H MOV CH,00H MOV CL,01H MOV AH,02H MOV AL,01H PUSHF CALL INT13ZF ; INT 13H MOV DISKCWM,AH JNB RD2 CMP DISKCWM,9 JNZ RD1 ADD NEWESZC,200H JMP RD0 RD1: MOV DX,OFFSET ERR1 CALL XXZFSC OR DISKTZ1,1 JMP RD9 RD2: MOV CX,4 ADD SI,1EEH RD3: CMP BYTE PTR [SI],80H JZ RD4 SUB SI,+10H LOOP RD3 MOV DX,OFFSET ERR5 CALL XXZFSC OR DISKTZ1,4 JMP RD9 RD4: MOV DX,[SI] MOV CX,[SI+02] CMP DX,BOOTWZ1 JNZ RD5 CMP CX,BOOTWZ2 JZ RD6 RD5: OR DISKTZ1,8 MOV DX,OFFSET ERR7 CALL XXZFSC JMP RD9 RD6: MOV BX,NEWESZC ADD BX,200H MOV AX,0201H PUSHF CALL INT13ZF ; INT 13H MOV DISKCWM,AH JNB RD9 RD7: CMP DISKCWM,9 JNZ RD8 ADD NEWESZC,200H JMP RD0 RD8: MOV DX,OFFSET ERR3 CALL XXZFSC OR DISKTZ1,2 RD9: POP SI POP DX POP CX POP BX POP AX RET READDISK ENDP ; WRITDISK PROC NEAR PUSH AX PUSH BX PUSH CX PUSH DX PUSH SI MOV BX,NEWESZC MOV SI,BX MOV DISKTZ2,0 MOV CX,4 ADD SI,1EEH WD0: CMP BYTE PTR [SI],80H JZ WD1 SUB SI,+10H LOOP WD0 MOV DX,OFFSET ERR6 CALL XXZFSC OR DISKTZ2,4 JMP WD8 WD1: MOV DL,80H MOV DH,00H MOV CH,00H MOV CL,01H MOV AH,3 MOV AL,01H PUSHF CALL INT13ZF ; INT 13H JNB WD3 MOV DX,OFFSET ERR2 CALL XXZFSC OR DISKTZ2,1 JMP WD8 WD3: MOV BX,NEWESZC ADD BX,200H MOV DX,[SI] MOV CX,[SI+02] CMP DX,BOOTWZ1 JNZ WD7 CMP CX,BOOTWZ2 JNZ WD7 MOV AX,0301H PUSHF CALL INT13ZF ; INT 13H JNB WD8 MOV DX,OFFSET ERR4 CALL XXZFSC OR DISKTZ2,2 JMP WD8 WD7: MOV DX,OFFSET ERR8 CALL XXZFSC OR DISKTZ2,8 WD8: POP SI POP DX POP CX POP BX POP AX RET WRITDISK ENDP ; CLOFIL PROC NEAR MOV BX,WJH MOV AH,3EH INT 21H RET CLOFIL ENDP ; WJZZS PROC NEAR MOV BX,WJH MOV AX,4200H MOV CX,0 MOV DX,0 INT 21H RET WJZZS ENDP ; WJZZM PROC NEAR MOV BX,WJH MOV AX,4202H MOV CX,0 MOV DX,0 INT 21H RET WJZZM ENDP ; XXZFSC PROC NEAR MOV AH,9 INT 21H RET XXZFSC ENDP ENDADD DB 0 RESIST ENDP SEG_B ENDS END START