讨论硬盘保护卡原理及攻破方法!!!!

loveyour10000 2003-05-01 03:17:43
看了几个帖子,不全面
...全文
91 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
novo 2003-05-01
  • 打赏
  • 举报
回复

现在硬盘保护卡日益盛行,网吧,学校随处可见,本人就遇到几种类型和品牌的,小哨兵是其中技术比较完善的一种.早期在学校机房遇到的看门狗,就存在严重的技术缺陷,只要修改cmos中的硬盘参数即可pj,所以这里我想着重谈谈小哨兵的解法,当然对付看门狗的方法在这里是行不通的,为此我琢磨了很长时间,直到我前几天在网上看到一篇pj硬盘保护卡的文章,给我一个崭新的pj思路,但事实上按原文的方法还是不可pj小哨兵,但离成功仅一步之遥,这篇文章就算是一个补充说明,希望能对大家有点帮助.
首先本人通过阅读那篇文章后,得知保护卡是通过修改中断向量来达到保护硬盘不被真正写入的,其中int13是关键,同时还修改了时钟中断来达到反跟踪,恢复中断向量表的目的.小哨兵拦截了int13的处理程序,将自己的程序挂到上面,这也是无法写进数据的原因所在,知道了这个,你一定会说我们只要把bios的int13的程序地址,在dos下填入中断向量表不就大功告成了,其实不然,小哨兵早以想到了这一点,它会利用早以被它修改过的时钟中断定时检查中断向量表,它一旦发现0000:4c+3处为f0即会修改为别的值.原文章的建议是将时钟中断一一还原,本人觉得太过烦琐,而且出错的可能性大,不可取.经过尝试将原中断处理程序的第一条语句改为0255:0148(此不一定) jmp f000:xxxx即可.
这里还要谈谈xxxx的获取,这一步也是关键,我一开始用debug t跟踪了几次都出现了死机,通过观察每次死机地址都不同,怀疑小哨兵利用时钟中断反跟踪,但每次跟踪都给了一段时间后才死机,所以在进入int13后你要在这段时间内,以最快的速度,t到f000:xxxx
处,当屏幕上t出第一个f000为段的地方时,后面的偏移量即为我们要找的xxxx.记住它,相信这时你已经死机了,重新启动,f8进dos.

debug
-d 0:4c
0000:004c 48 01 55 02
-a 0255:0148
-0255:0148 jmp f000:xxxx
-q

c:\>cd windows

c:\windows>win


OK,现在改个桌面,拷个游戏进去,再重新启动试一下,还在吧,游戏可要藏好哟,祝你愉快!



  PS:操作系统:windows98 ,载时windows2000 还没有办法。。
  硬盘保护卡:华超。
  东北财经大学。测试成功。。。
由于学校装有硬盘保护卡。。平时想装的软件也不容易。。

后来在黑白看见了用debug 破解方法。。虽然成功过。。

但在
-a100
-xor ax,ax
-int 13
-int 3
-t
一直按t 查找 f000:XXXX形式很容易死机。。

后来想到用强行追踪方法。方法如下:

c:\Windows>debug
-s f000:0 ffff 80 fa 80》》回车。

然后会出现请多形如。
f000:2177
f000:21f7
f000:2200
f000:3f53d(等等呀) 下面是:
- (这个地方写q就行了)

之后我们只要找到。。如:f000:**** PS:第一个*大于8 的数就记下来。。PS:地址很多的。。


然后再接着用。
debug
-e 0:4c 记下来的那个数 :注反写。(例如:地址为f000:f492 就应该写成》》-e 0:4c 92 f4 00 f0) 成功时会听到机器出一点声音。
-q 》》按q 退出。。

然后用win进入win98 :)你就可以~~~~

虽然说列出的地址:f000多一些。但也比一直按T找int13 地址总死机好。。
novo 2003-05-01
  • 打赏
  • 举报
回复
目前市面上的復原卡的基本運作原理大都不脫離瞬間復原及備份復原這兩種做法,由於要做到瞬間復原必須確定所有硬碟動作均會經過BIOS的第13號中斷(INT 13h),由於這種限制,復原卡的廠商們只能做到DOS、WIN 95/98瞬間復原,而WIN NT、OS/2、FreeBSD.....等就沒輒了,因此才發展出另一套解決的辦法"備份復原",由於備份復原的原理是將您要保護的分區完整的備份一份在同一顆硬碟中,因此會佔用硬碟相當大的空間,當要將資料復原回來時,在將備份的資料拷回原來的磁軌中,因此復原速度上會變得很慢。市面上還有一種號稱網路型復原卡的產品,就是利用備份復原的原理,只是備份的資料放在server罷了,所以可想而知,復原的速度一定很慢。

novo 2003-05-01
  • 打赏
  • 举报
回复
硬盘保护卡的破解

本来以前就要写这一篇的,有事耽误了,现在写出来竽充数吧!
还原卡也称硬盘保护卡,学校等单位采用较多,可以保护硬盘数据不被恶意修改,删除。保护卡是一种硬件芯片,插在主板上与硬盘的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,推算出密码

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧