本来以前就要写这一篇的，有事耽误了，现在写出来竽充数吧！ <br>还原卡也称硬盘保护卡，学校等单位采用较多，可以保护硬盘数据不被恶意修改，删除。保护卡是一种硬件芯片，插在主板上与硬盘的MBR协同工作。在说明原理前，我想先提一种技术“BIOS映射地址搬移”。这种技术在前几年，大行其道，但均秘而不喧。诸位以前玩解密的时候可能都用过龚成宾的SIMU97吧。它能在只读的BIOS地址区实现写入，因而能拦截到CALL F000:EC59等调用。这种调用在以软盘为载体的加密方案中，有重要意义,后来为了躲过它，王江民没办法使用了UPD765。不过，根据我的分析UPD765读写软盘时照样可以拦截。刚才提的那种拦截方式的原理是这样的[跟踪所得]，通过调用Int15h子功能，其他方法也可以，只要能切入保护模式，切入保护模式后，改掉BIOS所在段的段描述符。这种方法可以实现BIOS段的重定位，当然就可以让它可写入了。用Int13H读软盘时Int13H会调用F000:EC59,这是拦截Int13h 的一种高级手段。其实围绕硬盘保护的加密解密关键就看谁拦截的位置更底层。但对与硬盘保护卡来说，只要恢复Int13的BIOS级中断向量就够了。具体如何破解呢？找到Int13h的原始BIOS中断向量值，填入中断向量表。这样修改以后其他对Int13H 的钩子通常就被绕过了 [有些部份如果觉得简单请跳过看 ^_^] <br><br>下面是找Int13入口的方法，我常用的几种： <br>1。手工运行Debug,最好在纯DOS下： <br><br>　 Debug <br>- a100 <br>- xor ax,ax 注意： 前面要加上功能号以选择Int13H内部的流程，避免进入其他不经过原始入口的流程 <br>- int 13 <br>- int3 <br>然后输入t回车，不断的重复，直到显示的地址形如 F000:xxxx。记下这一地址,按q 回车退出。 这里假设了第一个F000:xxxx就是要找的入口，实际上可以在第2，3，4，。。。。出现，要自己判断一下，通常认为就是第一个。 <br>在(0:13H*4)=0:4cH 处填入这个地址。 <br><br>例如得到的地址是F000:1234 <br><br>运行debug <br>-e 0:4c 34 12 00 F0 =======&gt;把得到的原始入口填入Int13H的中断向量表 <br>-q <br><br>注意： <br><br>填的时候要仔细，填错的话会死机。有些经过针对性处理的机器，要进一步鉴别。如在Int13内部调　　　 用Int1ch. 如果在trace过程中发现如下代码 CMP DL,80[意思是判断是否针对硬盘操作] ，可以尝试修改成不存在的硬盘号，比如改成CMP DL,FF。其他的都不要修改.试试 　　 硬盘可写吗？如果可以的话就万事大吉了。另外，不能在Windows的虚拟DOS窗口中使用这种方法。如果在Windows的虚拟DOS窗口运行的话，请使用下一种方法。 <br><br><br>2。Debug <br>- s F000:0 ffff 80 fa 80 强行搜索BIOS区，通过比较入口代码找到原始入口点 <br><br>你可能会发现有好几处。根据我的多次破解经验，通常这个地址在F000:8000以后。试验一下: 如果U F000:xxxx地址后发现代码类似 <br>　　　 -u F000:xxxx <br>PUSHF <br>CMP DL,80 <br>JZ .... <br>　. <br>　. <br>　. <br>[有些不是这样，要注意鉴别。] <br><br>的话，填入向量表试试。通常破解就完成了。 <br><br><br><br>我曾经发现经过以上中断还原后，仍不能写盘，或者死机的情况。经跟踪发现Int8H,Int 1CH,Int15H等向量对 <br>Int13H进行了向量保护。解决办法：把Int8H,Int1cH,Int15H 也改会原始中断点（也是BIOS中断）。尝试写盘成功 <br>　　 <br>如果想获得保护卡密码的话，可以参考以下步骤： <br><br>1。找到Int13h原始点设回中断向量表。 <br>2。读出MBR <br>3，分析读出的MBR，找到密码算区和加密算法 <br>4，推算出密码 <br>