禁写引导区程序
cureboot.asm
编译成COM文件既可;
cureboot.asm常驻内存,监视int 13H中断当程序对引导区进行写操作时,反回,达到保护的效果!
编译方法!!!
TC下编译
TASM CUREBOOT;
TLINK/T CUREBOOT;
使用方法:直接运行就保护好了磁盘,如果想解除保护,CUREBOOT/E
代码:
CODE SEGMENT
ORG 100H
ASSUME CS:CODE,DS:CODE
START:JMP INIZ
OLD13HND LABEL DWORD
OLD13OFF DW ?
OLD13SEG DW ?
NEW13H PROC NEAR
CMP AH,03H
JNZ EXIT
CMP CX,0001H
JNZ EXIT
CMP DH,00H
JNZ EXIT
IRET
EXIT:JMP DWORD PTR CS:OLD13HND
NEW13H ENDP
INIZ:
MOV AX,3513H
INT 21H ;读INT 13H 中断的向量
CMP BYTE PTR CS:[80H],0
JE INST度 ;命令行没有参数则跳转
CON1:AND BYTE PTR CS:[82H],5FH
CMP BYTE PTR CS:[82H],'E'
jne inst
CMP BX,OFFSET NEW13H
JZ MMMM
MOV AH,09
MOV DX,OFFSET DDDDD
INT 21H
INT 20H
MMMM:MOV AH,09
MOV DX,OFFSET LINEPRO1
INT 21H
CMP BX,OFFSET NEW13H
JNE INIZ_EXIT
LDS DX,ES:OLD13HND
MOV AX,2513H
INT 21H
MOV AX,2513H
INT 21H
MOV AH,49H
INT 21H
JMP INIZ_EXIT
INST:
CMP BX,OFFSET NEW13H
INE SETV
MOV AH,09
MOV DX,OFFSET ERR1
INT 21H
INIZ_EXIT:
PUSH CS
POP DS
MOVAX,4C00H
INT 21H
SETV:
PUSH CS
POP DS
MOV OLD13OFF,BX
MOV OLD13SEG,ES
MOV DX,OFFSET NEW13H
MOV AX,2513H
INT 21H
MOV AH,09H
MOV DX,OFFSET PARA
INT 21H
MOV AH,31H
MOV DX,(OFFSET INIZ+15)
MOV CL,4
SHR DX,CL
INT 21H
ERR1 DB '错误,错误,不听寂寞的话!!!'
para db '磁盘引导区保护成功!$'
LINEPRO1 DB '磁盘引导区解除保护!'
DDDDD db '引导区未被保护,不用解除了!!$'
CODE ENDS
END START