硬盘还原卡的破解

文章出处:OICQ:65886983 发布时间:2002-02-09 点击:0 本来以前就要写这一篇的,有事耽误了,现在写出来竽充数吧! 还原卡也称硬盘保护卡,学校等单位采用较多,可以保护硬盘数据不被恶意修改,删除。保护卡是一种硬件芯片,插在主板上与硬盘的MBR协同工作。在说明原理前,我想先提一种技术“BIOS映射地址搬移”。这种技术在前几年,大行其道,但均秘而不喧。诸位以前玩解密的时候可能都用过龚成宾的SIMU97吧。它能在只读的BIOS地址区实现写入,因而能拦截到CALL F000:EC59等调用。这种调用在以软盘为载体的加密方案中,有重要意义,后来为了躲过它,王江民没办法使用了UPD765。不过,根据我的分析UPD765读写软盘时照样可以拦截。刚才提的那种拦截方式的原理是这样的[跟踪所得],通过调用Int15h子功能,其他方法也可以,只要能切入保护模式,切入保护模式后,改掉BIOS所在段的段描述符。这种方法可以实现BIOS段的重定位,当然就可以让它可写入了。用Int13H读软盘时Int13H会调用F000:EC59,这是拦截Int13h 的一种高级手段。其实围绕硬盘保护的加密解密关键就看谁拦截的位置更底层。但对与硬盘保护卡来说,只要恢复Int13的BIOS级中断向量就够了。具体如何破解呢?找到Int13h的原始BIOS中断向量值,填入中断向量表。这样修改以后其他对Int13H 的钩子通常就被绕过了 [有些部份如果觉得简单请跳过看 ^_^] 下面是找Int13入口的方法,我常用的几种: 1。手工运行Debug,最好在纯DOS下:   Debug - a100 - xor ax,ax 注意: 前面要加上功能号以选择Int13H内部的流程,避免进入其他不经过原始入口的流程 - int 13 - int3 然后输入t回车,不断的重复,直到显示的地址形如 F000:xxxx。记下这一地址,按q 回车退出。 这里假设了第一个F000:xxxx就是要找的入口,实际上可以在第2,3,4,。。。。出现,要自己判断一下,通常认为就是第一个。 在(0:13H*4)=0:4cH 处填入这个地址。 例如得到的地址是F000:1234 运行debug -e 0:4c 34 12 00 F0 =======>把得到的原始入口填入Int13H的中断向量表 -q 注意: 填的时候要仔细,填错的话会死机。有些经过针对性处理的机器,要进一步鉴别。如在Int13内部调    用Int1ch. 如果在trace过程中发现如下代码 CMP DL,80[意思是判断是否针对硬盘操作] ,可以尝试修改成不存在的硬盘号,比如改成CMP DL,FF。其他的都不要修改.试试    硬盘可写吗?如果可以的话就万事大吉了。另外,不能在Windows的虚拟DOS窗口中使用这种方法。如果在Windows的虚拟DOS窗口运行的话,请使用下一种方法。 2。Debug - s F000:0 ffff 80 fa 80 强行搜索BIOS区,通过比较入口代码找到原始入口点 你可能会发现有好几处。根据我的多次破解经验,通常这个地址在F000:8000以后。试验一下: 如果U F000:xxxx地址后发现代码类似     -u F000:xxxx PUSHF CMP DL,80 JZ ....  .  .  . [有些不是这样,要注意鉴别。] 的话,填入向量表试试。通常破解就完成了。 我曾经发现经过以上中断还原后,仍不能写盘,或者死机的情况。经跟踪发现Int8H,Int 1CH,Int15H等向量对 Int13H进行了向量保护。解决办法:把Int8H,Int1cH,Int15H 也改会原始中断点(也是BIOS中断)。尝试写盘成功    如果想获得保护卡密码的话,可以参考以下步骤: 1。找到Int13h原始点设回中断向量表。 2。读出MBR 3,分析读出的MBR,找到密码算区和加密算法 4,推算出密码
进入DOS。 输入: DEBUG -A 100 -XOR AX,AX -INT13 -INT3 ;到这里为止,按多一下回车,回到基本调试截面 -T ;从这里开始进行单步追踪。在T回车后,会出现寄存器的内容。不用管,只要看左边最下的字就可以了。 (不停的T,一直T到出现第一个 F000:XXXX 马上记录下XXXX的数字) 中途如果死机,就表示有反追踪。唯一的方法就是在死机之前把F000:XXXX找出来,三茗是用死循环的。自己按实际情况而定。 接着上面。输入: -D 0:4C ;去到入口 0000:0040 56 01 34 02 ;数字应情况而有所不同 -A 0234:0156 -0234:0156 JMP F000:XXXX ;XXXX就是上面追查数字 -Q ;全部结束,进入WIN吧。别重启哦。 C:\WIN 进去后,自己想做什么就做什么把。然后重启。 看,是不是所有改过的的东西都没被改回来啊!那就成功了。 这里主要注意的地方是: 1.是否能准确的找到正确的F000:XXXX。 2.在D 0:4C 那里,看的的0040的数回因不同的情况而不同。所以不必太过在意我写出来的。 3.出现的数字在填写的时候是反过来的。也就是说,你在0040的地方看到的是 56 01 34 02 那么在填写的时候就要写 0234:0156 (我开始就是在这里没搞清楚,了我好读时间) 4.这方法不是永久破解,只是当时有效,重启后会记录你所做过的修改,但如果你想在重启后再做修改,只能重复做一次上面的步骤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值