首页 | 程式人生 | 原创下载 | 技术文档 | 留言我们 | 关于我们

About Hidden Protected Area (一)

作者: phanrider        2007-01-16

Hidden Protected Area 即被隐藏的保护空间,简称HPA。现在的一键恢复、系统保护之类的软件,很多都利用到了HPA空间,该空间是通过设立磁盘最大可以访问空间小于磁盘实际空间来得到一块可以利用,而一般文件系统无法看到的空间。

一、具体步骤如下
0)通过IDENTIFY DEVICE得到82word或者85word的第10bit是否被设置为1来确定磁盘是否支持HPA
1)通过READ NATIVE MAX ADDRESS得到磁盘的实际空间
2)通过SET MAX ADDRESS设定用户可以访问的磁盘空间
3)第一步的值减去第二步的值的差就是我们可以利用HPA空间

二、利用方法
0)通过IDENTIFY DEVICE得到磁盘当前被设立的用户可以访问的空间
1)通过READ NATIVE MAX ADDRESS 得到磁盘的实际空间
2)通过SET MAX ADDRESS设定用户可以访问的空间等于第一步的结果
3)在HPA空间读写数据
4)通过SET MAX ADDRESS重新设定用户可以访问的空间等于第零步的结果

三、利用方法的技术细节
0)通过发送ECh命令到端口177h或1F7h得到磁盘初始参数
1)通过发送F8h命令到端口177h或1F7h得到磁盘的实际空间
2)通过发送F9h命令并且171h或1F1h等于零到端口177h或1F7h设立用户可以访问的空间
3)用户自定义操作
4)再次通过发送F9h命令并且171h或1F1h等于零到端口177h或1F7h设立用户可以访问的空间

四、磁盘的寄存器种类
0)状态返回寄存器
1)数据传输寄存器
2)命令读写寄存器
3)数据读写寄存器

对于本文仅仅从读写数据角度来说,IDE1接口从1F1h至1F7h分别为状态返回寄存器,数据传输寄存器,命令读写寄存器,当然从不同角度来说,这些寄存器在不停地转换角色。
--1F1h 状态返回寄存器
--1F2h-1F6h 数据传输寄存器
--1F7h 命令读写寄存器
另外,还有一个数据读写寄存器,存放读写出的扇区数据。
--1F0h 数据读写寄存器

五、操作系统的限制
对于DOS,因无权限之说,只接读写端口即可,WIN9X系统来说,需进入RING0,用驱动是很容易进去的。WINNT/WIN2000/WINXP来说,要进入RING0,驱动是常用也是最基本的方法。目前来说,驱动是万能的,当然在WINXP以上的系统,用系统隐藏的函数ZwSystemDebugControl也可以达到目的。


六、参考资料
0)《ATA/ATAPI-4》 revision 18 (final draft)
1)《ATA-ATAPI-5》 revision 3 (final draft)


→返回←

红蜻蜓工作室版权所有
Copyright © 1999-2025 Reddragonfly & Studio All Rights Reserved.
如有任何问题及建议请留言红蜻蜓工作室