wangqiang
驱动牛犊
驱动牛犊
  • 注册日期2002-05-16
  • 最后登录2002-11-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1869回复:9

谁知道硬盘保护卡的工作原理,一定给分

楼主#
更多 发布于:2002-05-19 15:52
请告诉硬盘保护卡的工作原理和编程方法,一定给分
wangqiang
驱动牛犊
驱动牛犊
  • 注册日期2002-05-16
  • 最后登录2002-11-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-05-19 18:30
真可怜,没人里我,现在我宣布
谁说一句话就给分。
asmsys
驱动老牛
驱动老牛
  • 注册日期2002-03-29
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望17点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-05-19 18:45
大喊行吗?
angerl
驱动牛犊
驱动牛犊
  • 注册日期2002-03-02
  • 最后登录2004-08-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-05-19 19:06
有好多种保护方式,你问的是那种?
das
das
驱动牛犊
驱动牛犊
  • 注册日期2001-10-24
  • 最后登录2002-05-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-05-19 19:57
修改系统原有的中断向量表
wangqiang
驱动牛犊
驱动牛犊
  • 注册日期2002-05-16
  • 最后登录2002-11-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-05-19 21:32
系统启动第一次读硬盘以前就运行的那种。
kkman
驱动牛犊
驱动牛犊
  • 注册日期2002-03-13
  • 最后登录2002-06-16
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-05-29 15:50
我的学校用的就是这种保护卡.
我也很想知道它的原理.
cch
cch
驱动牛犊
驱动牛犊
  • 注册日期2001-10-10
  • 最后登录2005-04-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-05-30 09:39
按我的理解,硬盘保护卡一定是改了int 13的中断向量,系统在引导的时候首先加载bios中的代码,包括int 13中断处理例程,而后硬盘保护卡修改了原int 13的中断地址。当以后系统进行硬盘读写时,由硬盘保护卡先处理读写内容,过滤后在传给原int 13的中断例程,所以你要先找到原int 13的中断地址,把它改回去。
至于工作原理,应该是硬盘保护卡对要保护的区域不进行写,如果开机后系统改动保护区的内容,硬盘保护卡会将其写到一个镜象中去,该镜象与保护区中改动的内容有联系关系,这层关系由硬盘保护卡中的int 13中断过滤函数进行维护,改动量越多,镜象越大,该镜象只在开机时有效,所以开机后你改动了保护区中的内容,你看到的是改动后的内容。如果系统重新启动,镜象维护内容消失,系统重新去读原保护区内容,所以保护区内的东西保持不变,你每次改动在开机后都会不起作用。
雪花飘飘 北风萧萧
zhaoyan
驱动小牛
驱动小牛
  • 注册日期2001-04-12
  • 最后登录2013-02-20
  • 粉丝2
  • 关注0
  • 积分5分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-06-23 21:24
硬盘保护卡的软硬件设计

  摘 要:从软、硬件两方面阐述了目前流行的硬盘保护卡的设计原理,剖析了软件方面的关键技术,给出了最简单的硬件电路原理图。
 1 问题的提出

  微机运行过程中存在如下不安全因素:病毒感染;误操作;操作者出于好奇而有意无意的破坏。在公用机房,熟练顺畅地安装WIN95系统及应用软件至少耗时2小时,更烦恼的是刚维护好的系统不一会又死机了。于是管理员成天忙于杀病毒、装软件,在万般无奈的情况下只好对上机者实施限制,因而设备利用率低。为了改善这种现状,硬盘保护卡应运而生。硬盘保护卡作为扩充ROM板插在主板扩展槽中并在操作系统引导前取得控制权,对硬盘引导扇区、系统及应用软件、CMOS数据等实施保护。

2 技术关键

  硬盘保护卡的技术关键是要解决“写”的问题,可以将硬盘至少划分为C:和D:两部分。C:中装系统和应用软件,只读不写,D:自由读写。一般情况下是以C:盘开机引导并运行C:上的应用程序,肯定会有写盘动作并且某些写盘动作一定要在C:上进行。虽然可以在WIN95下将数据文件的生成路径设置在D:盘上,但很多情况下不让写C:盘是行不通的,如某些安装程序和加密软件等。
  大家知道,“写”有三个层次:写文件;写扇区;写I/O端口,前者是操作系统完成的,后两者是BIOS完成的,写文件分解成写扇区最终由I/O端口写入硬盘。写文件是绝大多数,直接写扇区偶尔有之,而直接I/O端口写只有极少数工具软件采用。现今硬盘容量是海量的,硬盘保护卡在规划硬盘(分区)时在C:和D:之间预留一块与C:同等大小的空间作为C:盘的“映射区”。对此映射区,操作系统不会赋予盘符也不会承认其容量,只是在写扇区这一层次上可以对其读写。凡系统对C:盘扇区的写都让其写在映射区的“映射扇区”上,所谓“映射扇区”是与原扇区有相同的磁头号和扇区号但不同柱面号的扇区,这便是“写映射”。硬盘保护卡对系统的控制是在BIOS读/写扇区这一层上,具体技术细节见本文3.2节。

3 软件设计

  硬盘保护卡的功能是由固化在卡上EPROM中的软件来实现的。
3.1 WIN95下硬盘的DOS兼容方式
  WIN95是一个运行在保护模式下的32位的操作系统,它不提供诸如DOS下的INT13H来读写硬盘扇区,也没有直接访问扇区的API函数。即便能利用虚拟设备驱动程序(VXD)来处理中断,那也要在WIN95系统引导成功后才能实现。要想在WIN95系统引导前就能接管并监控WIN95对硬盘扇区的读写,就要迫使WIN95工作在16位的文件系统方式下(称为DOS兼容方式),在此方式下WIN95实际上是在用BIOS的INT13H来读写磁盘扇区。
  PC开机自检完成后且操作系统引导前,硬盘保护卡以扩充ROM的形式取得了系统控制权,它修改BIOS建立的INT13H中断向量,使其指向基本内存高端,同时将0:0413H处的内存容量减少若干K字节,在内存高端保存新的INT13H服务程序。这样就将INT13H向量“固定”在基本内存中,于是WIN95认为内存中驻留有16位的驱动程序,出于兼容性考虑只好工作在DOS兼容方式下了。新的INT13H程序取得了对硬盘扇区的读写控制权从而可以实现硬盘保护卡的功能。
3.2 写映射技术
  由本文第2节可知,映射扇区和原扇区只是柱面号不同。映射扇区的柱面号相对于原扇区有一个固定的增量,此增量便是C:盘的柱面总数。例如:在4柱6头1扇区处写入8个扇区,若C:盘有40H个柱面,则此8个扇区就写到44H柱6头1扇区处去了。
  在写映射技术中还要解决“读”的问题,在读C:盘时,新INT13H必须判断是读原区还是读映射扇区。显然,若映射扇区被写过则应该去读映射扇区,否则读原扇区,因为映射扇区的内容是新写入的,读出的内容才是正确的。在新INT13H中,对C:盘的每一个扇区都设置一个“映射标志”,当某一扇区有“写映射”发生时,该扇区的映射标志置“1”,否则为“0”,当读C:盘扇区时,检测映射标志,该标志为1时读映射扇区,否则仍然读原扇区。我们用一个二进制位作为映射标志,在DOS兼容方式下,系统能管理的硬盘空间最大为2GB,共1023柱*64头*63扇=4124736个扇区,每个扇区对应一个二进制位,最多需要花费512K字节作为映射标志。而新INT13H 驻留内存高端,这将使新INT13H几乎占满了基本内存。显然行不通,怎么办?我们只在新INT13H中安排8K区域作映射标志,其余的以扇区(称为“标志扇区”)为单位保存在硬盘的隐藏扇区中(在硬盘保护卡对硬盘分区时预留2个柱面作为隐藏扇区)。对每一个标志扇区用一个字节作为其“载入标志”(载入标志约占1K内存),当载入标志是FFH时表示本次所读扇区所在的标志扇区已从硬盘载入到了内存,可以检测其映射标志;当载入标志为00时则要先将所在的标志扇区载入到内存后再检测其映射标志。
3.3 CMOS数据保护
  CMOS数据也是硬盘保护卡必须保护的重要数据。CMOS保护要靠保存在硬盘中的正确数据,那么当CMOS数据中硬盘类型被破坏或被改成“NONE”怎么办呢?这里我们采取“二次连接硬盘”的方法,当开机读不到001扇区时则在CMOS的几个相应字节中填写一种小硬盘(比如40M硬盘)的参数,紧接着用几条指令迫使系统再启动,此时便可以读出隐藏扇区中保存的CMOS数据并校正之,迫使系统再启动一次就正常了。

4 硬件设计

  硬盘保护卡的硬件设计非常简单,若不考虑自身版权安全的需要只须二块芯片即可。一片27256芯片,其中固化着硬盘保护卡的软件。为了避 免在上位内存中与其他插件发生地址冲突,U2的地址必须是可变的。另一片是74LS688,即U1,是8位数字全等比较器。仅当8位输入P0~P7与8位输入Q0~Q7全等时,其19引脚上才有低电平输出,用以选通U2的片选脚。U3是一个4位的跳线开关,由开关的开合可以实现U1的Q1~Q4的高低电平的设定,当跳线断开时Q端处于高电平,反之低电平。这样Q1~Q4的电平状态可以与来自CPU的地址线A18~A15上的电平信号(高平有效)进行比较,当二者对应相等时,U1的19脚输出一个低电平,U2被选通,27256中的数据被读出。感兴趣的读者不难计算出由跳线的变化而使U2的地址发生变化的范围。由于硬盘保护卡插在主板的ISA槽中,它的地址、数据、控制、电源等信号均来自ISA槽的62条引脚。

5 进一步研究

  以上设计的硬盘保护卡还有二点需要进一步研究和改进,一是“映射区”占用了与C:盘同等大小的硬盘空间,这对于早期小硬盘不太适用;二是安装时要对硬盘重新分区,破坏了原有数据。
  对硬盘重新分区是出于开辟映射区的需要,可以不必在C:和D:之间开辟映射区。当我们在C:盘中将被保护的软件安装完成后插上硬盘保护卡,在C:盘剩余空间中以“簇”的形式开辟映射区。即是在文件分配表(FAT)中将部分“簇”设置为“坏簇”(其标志为FFF7H),由这些坏簇组成映射区。对这种映射区,文件系统不能使用但INT13H却可以读写。其空间大小安排在几十兆到数百兆范围内(视C:盘大小和每次读写的数据量大小而定)。这样一来映射扇区与原扇区不再只是柱面号不同,其对应关系相对来说,要复杂得多,硬盘保护卡软件的算法也复杂了许多,但这些都可以实现。
  由于映射扇区的个数大大少于原扇区(因为映射区小了),这必然限制了每次开机后对C:盘写入数据的多少,这就要求我们在开辟映射区时适当安排其大小。另外,当用户在开机时想要保留上次写入的数据时则还要给用户一个机会用以选择是否将上次写入的数据转储(真正写入)到C:盘或其他盘上,从而使映射区可以重新写入数据。为了安全,当映射区写满时还应能给予响铃报警并停机。
  这种进一步研究设计的硬盘保护卡称之为“智能型硬盘保护卡”。
zhaoyan
驱动小牛
驱动小牛
  • 注册日期2001-04-12
  • 最后登录2013-02-20
  • 粉丝2
  • 关注0
  • 积分5分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2002-06-23 21:25
硬盘保护技术



摘 要:阐述了硬盘及CMOS保护卡的原理和软硬件设计。
关键词:硬盘及CMOS保护 存储器 译码 GAL设计 中断

  随着微型计算机的飞速发展,硬盘作为其中的主要配置之一,同样也得到飞速发展。硬盘的发展极大地促进了基于硬盘的软件的发展。然而,计算机病毒的发展却威胁着硬盘的正常使用。硬盘保护成了人们关注的问题,也走了一个从软保护到硬保护的过程。人们使用Kill、Scan、CPAV及KV300等检查杀毒软件,从原来只能检测一种或几种计算机病毒到现在的检测几千种,查毒杀毒软件的水平也在不断的提高。但是,在杀病毒软件的应用过程中,人们逐渐发现了软件杀病毒的弱点:这种弱点不在于杀病毒软件,而在于软件本身。从病毒的原理讲,只要是软件就有被病毒感染的可能。杀毒软件运行时,涉及到很多其它程序,一旦被感染,将会带来很多意想不到的问题。虽然杀毒软件设计者使用了各种防止被感染的方法,但都不够理想。另外,上机人员有意无意的错误操作(如格式化硬盘,删除系统文件和数据,修改CMOS配置等)都给微机管理人员带来很多麻烦。
  于是,人们开始设计硬盘保护卡,即采用通道写保护技术,将逻辑C盘(双硬盘时为C、D盘)当作固化盘保护起来。硬盘保护卡可以插在PC系列机的任何一个扩展槽上,不占内存空间,使用方便,也使管理人员不必经常费时费力地进行系统的恢复。硬盘保护程序固化在硬盘保护卡上的EPROM里,从而避免了被病毒感染的可能性。硬盘保护卡可带开关锁,使用者只需将DOS及系统软件安装到C盘后将锁上锁,即可保护BOOT区、分区表不受侵犯,确保C盘中的DOS及系统软件不被病毒感染或人为破坏(删除、改写、格式化),并可确保系统配置(CMOS)不被修改与破坏,同时又不影响各种软件的正常运行。
  本文将介绍硬盘保护卡的软硬件设计方法,并给出硬件原理图及软件程序框图。

1 硬盘保护卡的原理

  PC系列微机的ROM BIOS为总线上的带有扩展ROM程序的适配卡进行系统提供了方便。在主机启动时的上电自检(POST)期间,将为BIOS各调用程序建立中断向量,在缺省向量被设置好之后,对扩展的ROM模块进行扫描。此时,适配器板上的ROM程序可以获得控制权,该程序可以通过设置中断向量将它们自身挂到系统中。
  为了寻找有效的适配器插件板上的扩展ROM,要对绝对地址C8000H~E0000H以2K为单位进行扫描,即以C8000+m×800H为始地址进行搜索。一个有效的ROM块应满足如下定义:
  字节0:55H
  字节1:AAH
  字节2:长度指标器。它表示ROM中以512个字节为一块的信息块个数(长度/512)。为测试ROM模块的完整性,需要求一个检查和。在定义的ROM中,每一个字节按模100H求和,其和必须为0,该模块才被认为有效。
  当系统的ROMBIOS找到一个有效的ROM时,它对ROM的字节3(将是一个可执行代码)作一次远调用(far call),适配器现在可以执行它的加电初始化任务。执行完初始化工作后,适配器插件板上的ROM应通过一条远返回(far return)指令,将控制权交还给ROMBIOS程序,完成系统的启动。
  由此可见,硬盘保护卡就是这样一个适配器插件板:把自编软件固化在板上的EPROM里作为可访问的ROM组件。当系统POST时,它能修改中断向量将其自身挂在系统上,而挂在系统上的程序则可通过对文件执行的实时跟踪检测,以达到保护C盘的目的。

2 硬盘保护卡的硬件设计

  1 PC扩展槽
  在PC机的扩展槽中,其中62芯的插槽由62条信号线组成,分成两排,即A排和B排,排列在插槽的两面。这些信号线中包括地址线、数据线、+5、GND、读写信号等,在这里只对本文中用到的一些信号进行简单的介绍。
  A0~A19(地址位0~19):这些信号用来对系统中的存储器与I/O设备寻址(20条地址线至多可访问1MB的存储器,它们均为高电平有效)。
  D0~D7(数据位0~7):这些信号用于微处理器、存储器与I/O端口之间传送数据(均为高电平有效)。
  AEN:用于端口译码器的控制(高电平有效)。
  MEMR:存储器读信号(低电平有效)。
  MEMW:存储器写信号(低电平有效)。
  2 硬件线路的设计
  硬件部分主要包括译码和存储器两部分。
  选择一片2764(8KB)的EPROM用于存储程序。由于2764是只读存储器,再选择一片6264(8KB RAM)或6115(2KB RAM)用于存储中间结果和变量。RAM存储器的选择可以根据需要来决定,这里使用开关位SW4来控制选择6264或6116。如果程序量大,可以采用分页的方法把大量的存储器映射到少量的存储空间上。
  译码部分选用GAL16V8(通用阵列逻辑)来实现。GAL16V8是一个可由用户组态而执行一定逻辑功能的电可擦除的、可重编程的PLD器件。它的每个输出是输入的“乘积和”函数,阵列中输入线和输出线的交点是用逻辑元件连接起来,其基本结构如图1所示。



图1 GAL基本结构

  3 硬盘保护卡所占的内存空间
  硬盘保护卡所占的内存空间如下表所示。
  4 硬盘保护卡的电路原理图(见下页图2)
  5 GAL16V8设计源程序文件
  根据硬盘保护卡所占的内存空间和2764、6264(或6116)的片选情况,使用Fast Map编译软件格式编写出如下.PLD文件:

硬盘保护卡所占的内存空间
 

  19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
ROM地址空间 1 1 0 1 0 × 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  1 1 0 1 0 × 0 1 1 1 1 1 1 1 1 1 1 1 1 1
RAM地址空间 1 1 0 1 0 × 1 0 0 0 0 0 0 0 0 0 0 0 0 0
  1 1 0 1 0 × 1 1 1 1 1 1 1 1 1 1 1 1 1 1


  PLD16V8
  HardC U03
  DESIGNED 10:36:11 5/8/1998
  HardC
  A12 A13 A14 A15 A16 A17 A18 A19 AEN GND /
游客

返回顶部