中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > ASM汇编
硬盘加密--解析二
作者:kingcaiyao 时间:2001-12-09 11:28 出处:互联网 责编:chinaitpower
              摘要:硬盘加密--解析二

在对硬盘主引导记录熟悉之后,就可以编出很多种硬盘加密程序(完全取决于你自已的需要),随着硬盘容量越来越大,其实我们可以将硬盘分为两个盘,一个是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处,即可以进行热启动。

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有