硬盘加密--解析二

王朝other·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

在对硬盘主引导记录熟悉之后,就可以编出很多种硬盘加密程序(完全取决于你自已的需要),随着硬盘容量越来越大,其实我们可以将硬盘分为两个盘,一个是C盘,一个是D盘,平时将C盘重要的文件拷贝至D盘,并将D盘加锁,这样当C盘受到破坏时,就可以解锁D盘,将D盘上存储的文件恢复过来,我下面的程序就是以这一原理来编写的,请看代码:

Announcement:You can use any editor to edit source codes,such as Notepad,QE,Edit and so on.

Source Codes:

data segment

FQB DB 512 dup(0);To define a buffer,which will be used to store harddisk's MBR

MESSAGE1 DB 0DH,0AH,"C------------LOCK C"

DB 0DH,0AH,"D------------LOCK D"

DB 0DH,0AH,"E------------Exit"

DB 0DH,0AH,"Enter your selection!$"

MESSAGE2 DB 0DH,0AH,"OK!$"

MESSAGE3 DB "NOT FOUND DRIVE D!$"

ERROR DB "ENTER ERROR!$"

IOERROR DB "HARDDISK I/O ERROR!$"

CXD DW 0

data ends

stack segment

DB 512 dup(0)

stack ends

code segment

assume cs:code,ds:data,ss:stack

START:

mov AX,0201

mov BX,OFFSET FQB

mov CX,0001

mov CXD,CX

mov DX,0080

INT 13;Read Main Boot Record,which is in 0 Header,0 Cylinder,1 Sector

JB ERR

MOV DX,OFFSET MESS1

MOV AH,9

INT 21

AA0: ;Accept user's enter

MOV AH,1

INT 21

CMP AL,'E';Exit

JZ EXIT

CMP AL,'e';Exit

JZ EXIT

CMP AL,'C';Lock Drive C

JZ LockC

CMP AL,'c';Lock Drive C

JZ LockC

CMP AL,'D'

JZ LockD;//Lock Drive D

CMP AL,'d'

JZ LockD;//Lock Drive D

LEA DX,ERROR;Enter Error

MOV AH,9

INT 21

JMP EXIT

LockC:

MOV AH,55H

CLD

MOV SI,OFFSET FQB

MOV DI,SI

MOV CX,01FE

AA1:

LOADSB

XOR AL,AH

ROL AH,1

STOSB;//Encrypt Partition-Table

LOOP AA1

AA3:

MOV AX,0301

MOV BX,OFFSET BUF

MOV CX,CXD

MOV DX,0080

INT 13

JB ERR

LEA DX,MESSAGE2

MOV AH,9

INT 21

MOV AX,0040;Reset

MOV DS,AX

MOV AX,1234

MOV SI,0072

MOV [SI],AX

JMP FFFF:0000

INT 20

LockD:

CMP BYTE PTR [BUF+1D0],0

JNZ AA2

MOV DX,MESSAGE3;No Drive D

MOV AH,9

INT 21

JMP EXIT

AA2:

MOV AX,0201

MOV BX,OFFSET BUF

MOV CX,WORD PTR [BUF+1D0];Read Logic Drive D Partition-Table

MOV DX,0080

INT 13

JB ERR

JMP LockC

ERR:

MOV DX,OFFSET IOERROR

MOV AH,9

INT 21

EXIT:

MOV AH,4CH

INT 21

code ends

end start

上面的程序适合于只有两个分区的硬盘,不过程序也可以改进成多个分区的硬盘。在注释RESET处是热启动的代码,即交1234送至偏移地址0040:0072处,然后再跳转到FFFF:0处,即可以进行热启动。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航