首页
社区
课程
招聘
[讨论]硬件还原卡的真正原理!?
发表于: 2012-3-3 11:58 14813

[讨论]硬件还原卡的真正原理!?

2012-3-3 11:58
14813
硬件还原卡的原理可能很多人都看过相关资料,恐怕大多是说在BIOS引导时就获得了硬盘的控制权;而它过滤硬盘读写的手段,据说是 Hook  int 13h;

这有个问题, BIOS中断例程 int 13h 是实模式的, 而windows系统启动后是保护模式的;所以,windows系统在启动并初始化完毕后,不会再用 int 13h来读写硬盘, 再说了,系统在初始化时,会重新分配中断向量表;

所以说, windows系统中, 并没有 int 13h 能读写硬盘这一回事;windows读写硬盘应该是通过 .._> ... ->atapi.sys->pciide(pciidex),如果支持DMA的话 -> HAL(读写端口)

那么,硬件还原卡如何拦截硬盘的读写操作? Hook IO端口?(CPU功能) , 我们知道硬件还原卡(至少以前的一些还原卡)并没有这个功能,Hook IO端口也不适合用来过滤硬盘读写;

还想到一个可能,硬件还原卡注入了系统? 这就搞笑了, 如果是这样,要硬件何用? 直接软件实现就行了,还省去了硬件的生产成本;(可能后来想通了,现在是软件还原作为主流)

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (14)
雪    币: 468
活跃值: (52)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
在bios阶段和dos实模式阶段,是hook了int 13h,在xp系统下面,由于不在使用int 13h,而是使用xp自带的磁盘驱动程序,这种情况下,硬盘还原卡实际不起作用了,是通过一个xp系统下的磁盘过滤驱动实现映射ntfs文件系统的功能,实际就是和一个还原软件差不多。
2012-3-3 12:36
0
雪    币: 120
活跃值: (160)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
按这样来说的话,一切还原都是浮动了。直接IO硬盘端口是件非常容易的事。。

我也觉得不可能拦截对ATA端口的in out。。。

哪位机器上有硬件还原的,我想做个程序测试一下。
2012-3-3 12:59
0
雪    币: 3
活跃值: (28)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
感谢你的回答;

  我也想到这个可能,就是待系统启动后,通过注入系统来实现硬盘读写的拦截;但是我就是想不明白, 如果是这种方式拦截的话,为什么还需要硬件。难道是为了: 一、防止清除(因为毕竟有硬件插在主板上,软件病毒不可能能把它拔出来);二、先于系统启动,并且有硬件辅助,为了更“强悍”地注入系统;三、为了实现其它功能,如,硬盘对拷、保护/恢复COMS、备份/恢复MBR、...等;四、比较赚钱,如果网吧装,一台机必须要买一张卡,100台机就100张卡,如果是软件的话,只能卖一份,还要提供维护; 所以,硬件还原卡在短期内,利润高,收益快,后期服务支持几乎没有;
2012-3-3 13:08
0
雪    币: 3
活跃值: (28)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
直接PIO读写硬盘确实可以穿掉还原,但是windows下直接IO硬盘多会出问题;因为windows也在直接IO,如果你绕过windows系统来直接IO硬盘,80%的机率会有冲突;当然,肯定可以解决,但是比较难处理,稍有不慎就会卡屏、蓝屏、死机。。。。
2012-3-3 13:15
0
雪    币: 120
活跃值: (160)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
没关系的。程序要灵活些。。。如果是busy就不操作。
不过有可能windows会破坏掉程序造成的drq状态。
2012-3-3 14:21
0
雪    币: 468
活跃值: (52)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
为什么要硬件卡?因为九几年的时候还是dos,然后win98从dos中启动,那个时候是用int 13h来拦截的,所以做成网卡形式先于boot扇区就启动了,然后控制dos,所以就一直流传下来了。而现在的xp系统是靠驱动程序软件来还原。只是硬件卡可以防止你从dos启动来修改硬盘。
2012-3-3 14:57
0
雪    币: 3
活跃值: (28)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
我是这样理解的,你在等待BSY置0时,即驱动器空闲; windows也在同样在等待; 即你和系统在抢占这个资源; 看似没有什么问题,但问题还是有的,而且要解决的话还很麻烦。

假设系统正在读写硬盘,在一次传输中,驱动器的会有无数次在空闲至忙这两个状态中转换,比如PIO读,先放置好参数,再放置读命令, 然后驱动器开始读,这时变为忙状态, 读完一块后,驱动器会变为空闲状态, 然后等host取走数据, 然后驱动器继续读,变为忙状态,读完一块,又变为空闲状态。。。  如此循环, 具体可看ATA/ATAPI规范; 虽然这之间的周期是极短的,以 ns 来计算, 但是如果另一方在一直等待驱动器空闲的话,比如,不停地检测 bsy 位,在这期间,它还是可以等到的,如果此时以为驱动器已空间了,接着就搞相关的寄存器进行操作,则破坏原来的传输,让系统产生不可预料的错误;

再说了,即使不是上面这种情况,还可能是: 驱动器空闲的时候,双方都检测到了这个情况,结果就悲剧了。。。

就是说,双方在不断地抢占这个资源的话,双方都无法确定这个资源是否真的空闲;从而冲突;

即使你抢占到资源后,挂起整个windows系统,这个问题仍然会存在;

windows系统的设计本身就不允许有人跟系统来抢硬件, 要操作硬件就都需要或多或少地依赖系统本身;就是说,操作硬件至少要让系统知道, 直接 in  out  硬件端口,系统完全不知情,可能出问题;
2012-3-3 15:43
0
雪    币: 3
活跃值: (28)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
我做过相关测试,直接IO硬盘时, 如果当时系统读写硬盘比较少,不频繁的话, 工作很正常,什么问题也不会发生;   如果系统正在持续大量频繁地读写硬盘的话, 系统崩溃的机率80%;    可能就是这个原因导致的: 当以为驱动器空闲了的时候,其实它并没有空闲, 而是正在被系统使用中;从而产生了冲突;

当然, 这些都是以个人有限的技术作出的有限的分析,还请指教;
2012-3-3 15:56
0
雪    币: 120
活跃值: (160)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
可以看看还原卡的驱动,在那里面应该找的到答案。。
不管是它接管了ntfs驱动。还是hook。。硬件应该完全可以拿掉的。
有很多硬件访问相关的程序,之所以需要硬件,是因为应用程序启动时可以从PCI的配置空间中找到它厂家的设备,从而使它的硬件作为一个数据中转用(或者防盗版加密)。
2012-3-3 16:20
0
雪    币: 1689
活跃值: (379)
能力值: ( LV15,RANK:440 )
在线值:
发帖
回帖
粉丝
11
学校安装还原卡,还有一个好处是可以很方便的批量传系统……
2012-3-3 16:43
0
雪    币: 107
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
这个我赞同
现在都是驱动过滤
不过硬件可以第一时间获得控制权
2012-3-3 17:36
0
雪    币: 135
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
话说,你有没有发现硬件还原卡安装硬件以后不安装驱动程序是不能实现还原功能的~
机器狗一代可以穿N多当时的硬件还原,机器狗一代的原理就是断开磁盘过滤设备链~
实模式下靠int 13h hook,Win下靠磁盘过滤驱动,跟普通的软件还原没区别,二者互不干涉~
还原卡也就是用个传系统功能~
2012-3-3 18:01
0
雪    币: 135
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
其实我在,想要是把一个Bootkit封装到一个类似还原卡的硬件上该多给力~还原卡在实模式下的的原理跟Bootkit的原理是一样的~
2012-3-3 18:04
0
雪    币: 113
活跃值: (28)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
还原都是软件功能,还原卡只是在启动时自动安装修复还原软件
穿透起来和软件的没区别
2012-3-4 06:09
0
游客
登录 | 注册 方可回帖
返回
//