还原精灵与还原卡的工作原理

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

还原精灵与还原卡的工作原理分析:

还原精灵的工作原理:它修改了引导区,引导区又被称为MBR,它位于硬盘的0头0柱1扇区,在扩展int 13中没有头、柱、扇区这个概念,它只有逻辑扇区,在扩展的int 13中MBR位于是0扇区,如果BIOS中设置的是硬盘启动的话,系统会首先载入这个扇区到内存,然后运行这个代码,还原精灵就是用的是自己的引导代码,这个方法与引导型病毒一样,病毒的目的是破坏,而它的目的是保护,就如武器在坏人手里有破坏力一样,这个代码接管了INT13中断,每当我们向硬盘写入数据时,其实还是写入到硬盘中,可是没有真正修改硬盘中的FAT。由于INT13被接管,当还原精灵发现是写操作,如果没有激活管理身份,便将原先数据目的地址重新指向它自己定义的一段连续的空磁盘空间,并将先前背份的第二份FAT中的被修改的相关数据指向这片空间。当我们读取数据时,和写操作相反。所以还原精灵需要被保护的磁盘上有较大的空闲空间,它就需要利用这段空间!

另外,用户不可能格式化真正的硬盘,还是因为被接管的INT13,所有对硬盘的操作都要通过INT13。还原卡的原理也和还原精灵软件的方法类似,不做详细解释

如何解除还原精灵与还原卡的保护呢?

通过分析原理,我们发现保护程序是通过修改中断向量来达到保护硬盘不被真正写入的,其中int13是关键,它拦截了int13的处理程序,将自己的程序挂到上面,这也是无法写进数据的原因所在,有的卡同时还修改了时钟中断来达到反跟踪,它会利用早以被它修改过的时钟中断定时检查中断向量表,它一旦发现修改为别的值.就会一一还原。

所以我们从编程的角度来看,就有了下面这样一些解决方法(用qbasic在理论上都能使用下面的破解方法!)

1、既然它拦截了int13的处理程序,将自己的程序挂到上面,那么我们只要把bios的int13的程序地址,在dos下填入中断向量表不就大功告成了,不过对于有的卡不方便用,而且需要你对汇编有一定的基础。最重要的是这个方法用编程的方法来破解很有难度。

2、破解密码,这个方法比上一个我认为要简单,还原精灵把自己的密码放在0头0柱8扇区的位置,如何知道是这个位置呢?对于硬盘的0头0柱的63个扇区只有1扇区被使用,我们可以写个代码来分析这些扇区是否被改动,在安装还原精灵前,先保存这63个扇区,然后安装,再读取这些扇区与保存的比较,就可以找到存放真正MBR的扇区与存放密码的扇区,然后我们改动一下密码,再比较存放密码的扇区有什么不同,这样通过分析来找出密钥,很多还原卡也是把密码保存在前63个扇区里,不过扇区的位置和密钥不一定都一样,这个是肯定的!

(凡是密码进行判断肯定有一段代码会把真假密码进行比较,可以使用一些调试工具来破解,如果加密技术不强也可以用什么能查看内存的软件来搜索,这种方法不大适合编程,只适合手动破解!)

相关编程资料:

中断INT13 读硬盘扇区功能用法 INT 13H,AH=02H读扇区说明:

调用此功能将从磁盘上把一个或更多的扇区内容读进存贮器。因为这是一个

低级功能,在一个操作中读取的全部扇区必须在同一条磁道上(磁头号和磁道号

相同)。BIOS不能自动地从一条磁道末尾切换到另一条磁道开始,因此用户必须

把跨多条磁道的读操作分为若干条单磁道读操作。

入口参数:

AH=02H指明调用读扇区功能。

AL置要读的扇区数目,不允许使用读磁道末端以外的数值,也不允许

使该寄存器为0。

DL需要进行读操作的驱动器号。

DH所读磁盘的磁头号。

CH磁道号的低8位数。

CL低5位放入所读起始扇区号,位7-6表示磁道号的高2位。

ES:BX读出数据的缓冲区地址。

返回参数:

如果CF=1,AX中存放出错状态。读出后的数据在ES:BX区域依次排列。

经过分析,还原精灵把主引导扇区的内容保存在0头0柱9扇区,把本身的密码保存在0头0柱8扇区偏移4FH的位置,用A5H作为密钥经过XOR运算加密!

要破解还原精灵你可以读密码或者把第9扇区的内容恢复倒MBR,

注: 还原精灵密码的算法和保存位置都不是我研究的,我只是根据资料写了个QB版本的. 我听说有人愿出5000RMB买这个程序!就是这么几行代码!哈哈,我免费公开!

网络的精神就是自由与共享!

'---------------获得还原精灵密码的原程序-----------------------------

'程序语言:QBasic4.5,WIN98系统的MSDOS方式下运行通过,还原精灵5。0版本!

'启动QB请加参数 QB/L,程序不能在WINXP,win2000,winNt下运行

'程序功能:获得还原精灵密码的程序作者:湖北-枝江qb45

'$INCLUDE: 'qb.bi'

DIM reg%(9)

dta$ = SPACE$(512)

'读硬盘0头0道8扇区的数据

reg%(0) = &H201

reg%(1) = SADD(dta$)

reg%(2) = 8

reg%(3) = &H80

reg%(9) = VARSEG(dta$)

CALL INT86XOLD(&H13, reg%(), reg%())

PRINT "Pass Word = ";

'进行解密输出

FOR i = 1 TO 8

pass$= CHR$(ASC(MID$(dta$, &H4F + i, 1)) XOR &HA5)

if pass$=chr$(0) then exit for

PRINT pass$;

NEXT i

3、INT13实际上是通过BIOS程序提供的标准服务,而BIOS的这个服务是建立在IO读写的基础上的,所以我们也可以直接用IO来读写硬盘,这样就绕过了INT13中断,无论是保护

相关文档
最新文档