随笔-211  评论-26  文章-8  trackbacks-0
本文通过对硬盘还原卡与还原精灵的工作原理的深入分析,以联想慧盾保护卡为例,剖析在Windows 98/Me/2000/XP系统下如何融会贯通使用“七剑式”解除硬件还原卡和软件还原卡对系统的保护。

一、还原卡的工作原理:
众所周知,学校、事业机关等单位计算机中心为了简化系统维护,保护硬盘数据不被恶意修改,删除,多数喜欢采用保护卡来保护硬盘。保护卡也称还原卡,还原卡分为两种:一种是软件还原卡,如:还原精灵;另一种是硬盘还原卡,如联想慧盾。其原理基本相同,不同的只是取得控制权的先后不同。要想破解还原卡,就需要深入了解他的工作原理。本文重点讨论硬盘还原卡的原理及破解,并用C语言的语法格式来讲解,软件还原卡的原理及破解与此相似。下面我就谈谈它的工作原理。
硬盘还原卡是一种硬件芯片,利用的是网卡的架构来做的。把它插在主板上与硬盘的MBR协同工作,启动时进行保护设置的代码都被“烧”在硬盘还原卡的BootRom(启动ROM芯片)中,它修改了引导区,引导区又被称为MBR。 硬盘的0磁道属于隐藏磁道,该磁道的63个扇区属于隐藏扇区。无论是操作系统,还是一般的应用软件,都不能访问0磁道的63个扇区。高级格式化程序FORMAT只能格式化逻辑驱动器,对0磁道也无能为力。分区程序FDISK在运行时只操作0磁道的第一个扇区,向扇区内写入主引导记录和主分区表,对其他的62个扇区不进行操作。它位于硬盘的0头0柱1扇区,在扩展INT13中没有头、柱、扇区这个概念,它只有逻辑扇区,在扩展的INT13中MBR位于是0扇区,如果BIOS中设置的是硬盘启动的话,系统会首先载入这个扇区到内存,然后运行这个代码。还原卡就是在ROM中写了一段HOOK INT 3的程序代码,屏蔽了一些功能调用,如AH=3,AH=5等,在中断向量表中INT13的SEG,OFFSET描述为[13H*4+2],[13H*4],将此中的程序先保存后,再替换为自己的代码,当你AH=2时,它便会CALL原始INT13地址来完成操作。
这个原理与引导型病毒一样,都是利用了BIOS程序对0头0道1扇的程序的信任性的漏洞,但病毒的目的是破坏,而它的目的是保护,就如武器在坏人手里有破坏力一样,这个代码接管了INT13中断。
安装了硬盘还原卡,在启动机子时BIOS程序首先扫描到硬盘还原卡,并把控制权交给硬盘还原卡,将原来的0头0道1扇保存在一个其他的扇区,将核心代码写入硬盘0头0道1扇,将用户设置信息写入别的扇区,等到重新启动机子还原卡夺取控制权,添加或修改一些BIOS中断程序。然后,原来的0头0道1扇才夺取控制权来引导系统。所以一切对硬盘0头0道1扇的读写操作都是访问的是备份的0头0道1扇,即原来的0头0道1扇。另外,用户也不可能格式化真正的硬盘,还是因为被接管的INT13,所有对硬盘的操作都要通过INT13。

二、如何解除还原卡的保护
通过以上原理分析,我们发现保护程序是通过修改中断向量来达到保护硬盘不被真正写入的,其中int13是关键,它拦截了int13的处理程序,将自己的程序挂到上面,这也是无法写进数据的原因所在,有的卡同时还修改了时钟中断来达到反跟踪,利用早已被它修改过的时钟中断定时检查中断向量表,一旦发现修改为别的值。就会一一还原。从表面看还原卡把自己隐藏的很好,但是我们可以通过最底层的I/O端口读写0道,找到原始INT13入口,一切问题便迎刃而解。由于Windows 98/Me和Windows 2000/XP的启动方式和工作原理不同,下面分别讲述破解方法:
对于Windows 98/Me系统,下面是找INT13入口的方法,我姑且称它们为“独孤七剑”:
剑式一: 手工运行Debug
开机按F8,进入纯DOS环境,出现提示符C:\\>,键入debug,敲回车键,显示如下。

在命令提示符“-”下,键入如图所示内容:
- a 100 <Enter> //进入汇编模式
- 0B2A:100 xor ax,ax //输入一条汇编指令
- 0B2A:102 int 13 //调用int 13中断
- 0B2A:104 int 3 //调用int 3中断
- 0B2A:105 //此处直接回车
- t //此处直接回车
然后输入t回车,不断的重复,直到显示的地址形如 F000:xxxx,后面的指令一般为
mov dl,80,记下这一地址,按q 回车退出。这些操作步骤的作用是寻找原始的INT13入口(即
INT13中断程序开始的地方)。在(0:13H*4)=0:4cH 处填入这个地址。例如得到的地址是F000:9854,再次运行debug,输入:
-e 0:4c 54 98 00 F0 //将数据“54 98 00 F0”写入地址0:4c开始的4个字节中,破解完成
-q
在提示符C:\\>下键入“win”
C:\\>cd windows <Enter>
C:\\windows>win <Enter>
注意:破解完成后,不要重新启动,而是直接进入Windows系统,这次在Windows系
统中的一切操作都会被还原卡存储起来。但下一次再进入系统时,还需要重写地址0:4c,才
可以让还原卡存储以上内容。并且填的时候要仔细,填错的话会死机。通过T命令得到的
地址在写入内存0:4c时,反写获得的地址(如地址是F000:9854,就应该反写成54 98 00 F0)。

剑式二:
在采用方法一的基础上,执行T命令时,如果在跟踪过程中发现如下代码 CMP DL,80,将其修改成CMP DL,FF 别的都不要修改,也可以破解硬盘还原卡的保护。另外,不能在Windows的虚拟DOS窗口中使用这种方法。如果在Windows的虚拟DOS窗口运行的话,请使用下一种方法。

剑式三:
- Debug
- S F000:0 FFFF 80 fa 80
你可能会发现有好几处。试验一下: 如果U F000:xxxx地址后发现代码类似
-u F000:xxxx <Enter>
PUSHF
CMP DL,80
JZ ....
的话,填入向量表,通常破解就完成了。
例如得到的地址是F000:9854,则
- e 0:4c 54 98 00 F0 <Enter>
- q
我曾经发现经过以上中断还原后,仍不能写盘的情况。经跟踪发现Int8H,Int 1CH,Int1
5H等向量对 Int13H进行了向量保护。解决办法:把Int8H,Int1cH,Int15H 也改回原始
中断点(也是 BIOS中断)。尝试写盘:
copy c:\\command.com test.com <Enter>
1 file Copied.
如果想获得保护卡密码的话,可以参考以下步骤:
1.找到Int13h原始点设回中断向量表。
2.读出MBR
可以分析这份MBR,找到存放加密密码的扇区得出解密算法……

剑式四:
同上例。
C:\\>debug
- a 100
- 0213:100 XOR AX,AX
- 0213:102 INT 13
- 0213:104 INT 3
- 0213:105
- d 0:4c

假设返回值是鼠标箭头所指的白色区域5D 04 12 02,则
- A 0212:045D
- 0212:045D JMP f000:9854
- 0212:0454
- q
通过以上步骤之后就可以解除还原卡的保护了,但下次进入系统时,还需重写地址0:4C,才能让还原卡存储以上内容。
C:\\>cd windows <Enter>
C:\\windows>win <Enter>
则进入操作系统,那么这次在Windows 98系统中的一切操作都会被还原卡存储起来。

剑式五:
最简单。以Award BIOS 6.0为例,开机时,按“DEL”健,进入BIOS系统设置程序,移动高亮条到第二项“Advanced BIOS Features(高级BIOS功能设定)”,将“First Boot Device(设置首先检测哪个设备启动)”的值设为“Floppy(软驱)”,然后按F10,弹出“Save & Exit Setup(存储后退出设置程序)”对话框,直接按回车或者键入Y键,再按回车,保存退出。在软驱中放入DOS启动盘启动,进入DOS界面如下,键入C:后按回车:
A:\\>c: <Enter>
C:\\>cd windows <Enter>
C:\\Windows>win <Enter>
则直接进入Windows系统,跳过还原卡保护程序的装载,则可以解除还原卡的保护,但下次启动还是会受到还原卡的保护。只有将系统配置文件config.sys中有关还原卡保护程序加载的项删除,并修改注册表,这样才能达到解除还原卡保护的目的。

剑式六:
以联想慧盾还原卡为例(Restore Card 32 Bit driver for Widnows 95/98 Ver:6.0),操作系统是Windows 98,开机显示。
根据以上信息可知还原卡优先于系统取得控制权,所以可以在开机时按F8键,出现启动菜单:(Microsoft Windows 98 Startup Menu)

normal
Logged(\\BOOTLOG.TXT)
Safe Mode
Step-by-step confirmation //这是关键
……
用上下光标健选择第四项或者在中括号中输入Step-by-step confirmation,按回车。然后系统按加载顺序逐个加载:
Process the system registry[Enter=Y,Esc=N]?Y //输入Y或者直接按回车键
Create a startup log file(BOOTLOG.TXT)[Enter=Y,Esc=N]?Y //输入Y或者直接按回车键
Process your startup device drivers(CONFIG.SYS) [Enter=Y,Esc=N]?Y //输入Y或者直接按回车键
FILES=50[Enter=Y,Esc=N]?Y //输入Y或者直接按回车键
……
一直敲回车,直到看到以下项目: //关键
INSTALL=C:\\LTDRV\\95DRV.EXE[Enter=Y,Esc=N]?N //输入N或者按ESC键取消装载95DRV程序的运行,这是还原卡程序
Process your startup Command file(AUTOEXEC.BAT) [Enter=Y,Esc=N]?Y //输入Y或者直接按回车键
然后不断的敲回车默认,进入Windows 98系统。这样还原卡的保护就解除了,该次在Windows系统中的操作均会被还原卡存储起来。不过下次开机,还原卡程序还会优先于系统装载,所以还需修改配置文件config.sys中的一些内容:
进入系统后,在开始——>运行框中输入“msconfig(系统配置实用程序)”,启动系统配置实用程序,选择Config.sys选项卡,将Install c:\\Ltdrv\\95drv.exe前的√取消并保存,或者在C盘根目录下找到Config.sys文件,在Install c:\\Ltdrv\\95drv.exe项前添加“:”,重新启动后,就能真正解除还原卡对硬盘的保护。该方法是根据Windows 98的启动特性来间接绕开还原卡的保护。

剑式七:
最后一剑是杀手锏,迫不得已,不得使用。那就是直接拆开机箱,拔除还原卡,还原卡也就拿你没辙了。
由于Windows 2000与Windows XP系统是基于NT的纯32位操作系统,其工作方式与Windows 98或者Windows Me有所不同,所以“独孤七剑”除了第七剑,其他六剑在该系统上基本无效,但我们可以使用在Windows窗口下运行的第三方破解工具,如packofdisk.exe(硬盘还原卡保护破解)。

打开硬盘还原卡破解程序后,选择硬盘和欲操作的方式,点击确定,重新启动,看看有什么发现!该程序不但可以破解多种硬件还原卡或软件还原卡对硬盘的保护,甚至能完全格式化硬盘,是还原卡或还原程序的真正克星。
以上就是还原卡破解的“独孤七剑”,在Windows 98/Me/2000/XP下都测试通过
posted on 2007-06-07 13:37 dragon 阅读(1043) 评论(0)  编辑  收藏 所属分类: 信息技术