硬盘加密----解析三 (转)

本文深入解析了硬盘分区加密的过程,包括多个分区的加密方法。通过汇编语言代码展示了如何读取分区信息,并对选定分区进行加密操作。适用于对硬盘安全感兴趣的读者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

硬盘加密----解析三 (转)[@more@]

硬盘加密--解析三
上一篇文章解析了硬盘上有两个分区的加密过程,下面的程序将允许有N个分区的加密过程:
source Codes:

data segment
  FQB db 512 dup(0);a buffer that will be used to store partition-table
  FIRSTP DB 40 dup(0);storing the first partition information
  SECONDP DB 00,01,00,00
  DB 512 dup(0)
  INFO1 DB "My Computer has the following drives:!$"
  INFO2 DB 0DH,0AH,"Please enter the drive needed to be locked!$"
  INFO3 DB 0DH,0AH,"Invalid Enter!$"
  ERROR DB 0DH,0AH,"Harddisk I/O error!$"
data ends
code segment
  assume cs:code,ds:data
  START:
  MOV AX,1000H
  MOV DS,AX
  MOV SI,OFFSET SECONDP;
  MOV DI,OFFSET FIRSTP;
  SUB DI,4
  READP:
  MOV AX,0201
  MOV BX,OFFSET FQB
  MOV CX,word PTR [SI+1]
  MOV DX,0080
  INT 13
  JB ERROR
  ADD SI,4
  ADD DI,4
  ;The first partition
  ADD BX,1BE
  MOV AX,WORD PTR [BX+1]
  MOV [DI],AX
  MOV AX,WORD PTR [BX+3]
  MOV [DI+2],AX
  ;The second partition
  ADD BX,10H
  MOV AX,WORD PTR [BX+1]
  MOV [SI],AX
  MOV AX,WORD PTR [BX+3]
  MOV [SI+2],AX
  CMP WORD PTR [SI+1],0;DeteRmine whether the header,sector is 0 or not
  JNZ READP
  LEA DX,INFO1
  MOV AH,9
  INT 21H
  MOV DL,43H
  MOV DI,OFFSET FIRSTP
  DISP:
  CMP WORD PTR [DI+1],0
  JZ ENCRYPT
  MOV AH,02
  INT 21H
  MOV CL,DL
  CMP BYTE PTR [DI+3],0
  JNZ NLOCK
  JMP ENCRYPT
  NLOCK:
  MOV DL,','
  INT 21
  MOV DL,CL
  INC DL
  ADD DI,4
  JMP DISP
  ENCRYPT:
  MOV AH,9
  LEA DX,INFO2
  INT 21
  MOV AH,1
  INT 21
  CMP AL,'A'
  JB ERROR1
  CMP AL,'Z'
  JA ERROR1
  SUB AL,43H
  XOR AH,AH;AH=0
  SHL AX,1
  SHL AX,1
  MOV SI,OFFSET SECONDP
  ADD SI,AX
  MOV AX,0201
  MOV BX,OFFSET FQB
  MOV CX,[SI+1];Sector,Cylinder
  MOV DH,[SI];Header
  MOV DL,80H;The first harddisk:80,the second:81
  INT 13
  JB ERROR
  ADD BX,1C1H
  MOV AX,[BX]
  XCHG [BX-20],AX
  MOV [BX],AX
  MOV AX,0301
  MOV BX,OFFSET FQB
  MOV CX,[SI+1]
  MOV DH,[SI]
  MOV DL,80H
  INT 13
  JB ERROR
  MOV AX,0040
  MOV DS,AX
  MOV SI,0072
  MOV AX,1234
  MOV [SI],AX
  JMP FFFF:0
  INT 20H
  ERROR1:
  LEA DX,INFO3
  MOV AH,9
  INT 21H
  JMP EXIT
  ERROR:
  LEA DX,INFO2
  MOV AH,9
  INT 21
  EXIT:
  MOV AH,4CH
  INT 21H
 code ends

  end start 

 

 
 


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10752043/viewspace-992530/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10752043/viewspace-992530/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值