硬盘写保护方案

来源:互联网 发布:12321网络举报中心 编辑:程序博客网 时间:2024/04/19 02:46

硬盘写保护方案

摘 要: 各种硬盘分区写保护方案以及各种方案的优缺点。

关键词: 硬盘写保护 TSR程序 写保护

  在大专院校的公共机房以及政府、公司、企业的重要部门的计算机管理中,往往采用硬盘分区写保护的方法来保护系统及数据。在各种方案中,有的基于软件,有的基于硬件,有的则采用软硬结合的方法。本文旨在介绍各种方案及其利弊,以供参考。

1 基于中断驻留程序的写保护方案

  这种方案实现起来较简单,全部内容就是1个TSR程序,加在自动批处理文件中,开机即被执行,接管INT 13并驻留内存。当程序访问硬盘时,写保护程序先判断操作是读还是写,若是写则还要判断是否写合法分区,若不是则中断返回或给出提示信息。程序流程见图1所示。

硬盘写保护方案 - 兴华颖挚 - 兴华颖挚

图1 接管后的ITN 13

  实际使用时,一般把计算机硬盘分为2个以上的分区,系统以及重要的数据安装在C分 区上,用户数据保留在扩展分区上,写保护软件只对C分区写保护。这种方法对Windows9x也有效(但最好把虚拟内存设置在扩展分区上)。因为操作系统 往往设置有较大的磁盘缓冲区,用户可以对写保护的分区进行正常的读写操作,比如删除或拷贝文件,甚至是格式化和分区,表面上操作很正常,但重新开机,写保 护分区又复原了。

在机房管理中,为尽量减少写保护软件对系统及使用者的影响,也可以把操作系统和应用软件安装在未写保护的分区上,比如D盘,再备份到C分区上,然后对 C盘写保护。这样一旦D盘的系统被损坏,可以从C盘快速恢复。这种方案简单易行,除了可以防止人为操作失误外,也可以防止一般病毒的破坏。缺点是不够隐 蔽。有些病毒程序专门对付这种保护软件,通过设置单步中断等方法跟踪到原来的INT 13入口,通过长调用绕过写保护程序。因此,对病毒的防范不是很理想。

2 修改硬盘BOOT区的写保护软件

  硬盘BOOT区包含BOOT区程序和硬盘分区表。BOOT区程序搜索可启动操作系统分区的标志80H,搜索成功则读取引导分区内的操作系统的引导扇区,并把控制权交给引导扇区程序。

为实现硬盘写保护,改写BOOT的程序,使之完成以下工作:

1.修改INT 13入口,使之指向写保护驻留程序;

2.驻留写保护程序;

3.执行正常的BOOT程序功能。

这里有几个关键问题要注意:

1.因为BOOT区程序先于DOS启动,不能用MS-DOS提供的INT 21 AH=35H及INT 21 AH=25来取得和设置中断服务程序,因此,必须直接修改中断向量表。

2.要使中断服务程序安全运行,就必须使中断服务程序常驻内存,以免被其它程序覆盖。但写保护程序先于DOS启动,无法利用INT 21 AH=31H来驻留程序。因此必须另辟蹊径。方法是将BIOS数据区0040:0013H记载内存大小的数据减少2KB,使DOS以为常规内存的底端由 638KB(或小于640KB的其它值,取决于写保护程序大小)开始,而把硬盘写保护程序搬至638K至640K之间即可。情形如图2所示。

硬盘写保护方案 - 兴华颖挚 - 兴华颖挚

图2 写保护程序加载情况

  3.完成以上代码往往大于512B,因此一般把程序分布在0磁道的多个扇区中,并由BOOT区的程序启动时装配。

4.保护程序运行时,以前的分区表信息和BOOT区程序仍然需要,应把它们放在0磁道的某个扇区中。新的INT 13服务程序把访问0磁道BOOT区的操作都定向到以前的BOOT区内容的备份扇区中,使操作系统及用户感觉不到BOOT区信息有什么异常(但 Windows 9x知道)。

新的写保护程序先于操作系统加载,因此这种方案较前一种更为隐蔽。同时,BOOT区已不再是以前的正常信息,即使用软盘启动,也因无法看到分区表信息 而无法看到硬盘,提高了安全性。这种方案的缺点是仍无法挡住有针对性的病毒的攻击,对一些恶意攻击者来说,也较容易攻破。

3 固化的写保护程序

  这种方案是对前2个方案的进一步改进。改方案是把写保护程序烧在EPROM中,并 以接口卡的形式安装在扩展槽内,成为扩展的BIOS,因此,除具有前者的所有优点以外,安全性更高,用软盘启动,也无法写受保护的硬盘分区。缺点是仍然无 法挡住有针对性的病毒及人为的攻击。

4 直接修改主板上的BIOS

  这种方案是把BIOS代码从EPROM中读出来,找到其中关于磁盘读写的代码,直 接修改INT 13的处理程序,使其具有硬盘分区写保护的功能。因为不同的机型的BIOS代码差别较大,不同的机型要进行相应的修改,因此这种方案有相当的难度,而且兼 容性很难保证,但效果较好,某些跟踪INT 13原始入口的病毒也无法攻破。

这种方案并不是攻不破的,有些病毒程序有自己的INT 13,具有直接写端口的能力,它能直接读写与硬盘有关的1F0~1F7端口,对于这种病毒,任何基于软件的写保护程序都形同虚设。因此,必须寻找基于硬件的硬盘写保护方案。

5 基于硬件写保护的硬盘写保护卡

  这种方案实实在在地给硬盘加上了写保护。其思路是,不论高层如何访问硬盘,最终都 归结为对端口1F0~1F7的读写。可以通过硬件过滤对这些端口的读写,当发现有写磁盘命令,并且是写受保护的分区时,拦截该信号,并给硬盘控制器1个伪 造的命令,比如寻道命令。这样,无论什么样的病毒或人为的破坏,都无法攻破。对于需外接多功能卡的主板(如486以下的机型),从总线扩展槽上能获得所有 对硬盘的读写操作信号,可以设计如图所示的硬卡插在扩展槽中,实现硬盘分区写保护。其原理见图3。

硬盘写保护方案 - 兴华颖挚 - 兴华颖挚

图3 第一种基于硬件的硬盘写保护方案

  对于486以上的计算机,多功能卡制作在主板上,硬盘读写信号不再出现在总线扩展槽中。可以对前1种方案稍加改进,并从IDE接口电缆上获得硬盘读写信号。其原理见图4。

硬盘写保护方案 - 兴华颖挚 - 兴华颖挚

图4 第二种基于硬件的硬盘写保护方案Y

6 进一步的设想

  从以上各种方案来看,基于软件的硬盘写保护方案成本低,但安全性较差;基于硬件的硬盘写保护方案,成本高,但安全性很强。从技术的角度来看,仍然有基于软件的方案可以达到类似于硬件的写保护效果。笔者初步的想法如下:

80386以上的CPU都支持保护模式。保护模式中可以设置IO空间保护。方法是在EFLAGS寄存器中设置IOPL字段,同时在TSS中设置相应的 I/O许可位图。从而控制对硬盘所有端口的访问。也可以控制访问CMOS端口70H、71H,防止人为地破坏CMOS信息,迫使用户只能从C盘启动。在方 案2的基础上,让写保护软件首先启动并进入保护模式,设置相应的系统表,然后加载操作系统,从而实现硬盘写保护。著名的调试软件SOFT-ICE就利用了 类似的方案来截获对端口的访问。当然,这一方案的编程难度较大。

原创粉丝点击