影子系统及其实现原理_453013800的空间_百度空间
"影子系统"是一种常见的单点还原保护系统.
当系统重启后, 做过的修改会全部还原回来,
类似网吧的还原精灵, 有去过网吧上网的同学可能很清楚.
听某个人说, 影子系统在国外卖得很不错.
08年的时候, 我做过测试, 影子系统的安全性不是很好,
不能防住邪恶的ring3穿透, 不知道{zx1}版有没有提高安全性
影子系统, 经过我几天的摸索,实现原理, 我大致明白.
核心思想就是"重定向".
在了解原理之前, 先了解一下windows的驱动模型
在windows驱动体系中, 存在几种类型的驱动, 功能驱动, 过滤驱动等.
功能驱动用于实现硬件或则其他一些设备的功能,
过滤驱动的作用是为了增加系统功能, 或者修改原有的功能, 过滤驱动挂接在功能驱动上面.
当windows下发IO请求时, 过滤驱动比功能驱动提前收到请求.
因此过滤驱动可以提前完成这些请求(不把请求往下发), 也可以什么都不做, 往下发请求, 等等,
这就起到一个过滤的作用.
另外, 还需要明白的是windows驱动是分层设计,
在磁盘层, 只有相对扇区的操作, 不存在有文件系统层面上的东西.
影子系统创建了这样一种过滤设备挂到磁盘设备上, 监视磁盘数据操作.
现在假设系统要写第5000号扇区, 为了实现还原操作,
当接收到系统的请求时, 影子系统会把这个写操作重定向到系统未使用的扇区,这里假设为6000.
那什么样的扇区是未使用的呢, 通常MS文件系统会维护一个位图, 位图中置一的表示扇区已使用, 为0的表示未使用.
当系统读5000号扇区内容时, 影子系统过滤驱动提前截获到系统的请求, 再次重定向,使读转向6000号扇区.
这样数据不会实际写到5000号扇区, 只是写到了系统未使用的扇区. 重启以后, 系统还是原来的状态.
这里读者可能会有疑问, 如果系统要写6000号扇区, 怎么办?
因为影子系统是磁盘过滤驱动, 会提前收到系统请求, 因此再做一次重定向就好.
上面的情况是最简单的情况, 实际上系统读写请求, 一般不会是单独一个扇区.
在一次读写请求中, 读写扇区范围可能包含需要重定向和不需要重定向的扇区, 这时候操作比较复杂.
因此, 在开发还原系统时, 算法和数据结构非常重要.
国内还有一个挺出名的"雨过天晴"多点还原系统, 原理复杂N倍.
题外话, 说说什么叫ring3下穿透? 通常系统读写磁盘走正常的路线时, 还原系统可以拦截到读写请求, 实现过滤.
存在PassThrough指令, 当使用这些指令时, 可以绕过还原系统的监控, 把数据真正写入磁盘中.
使用这些PassThrougth只需要win32程序就可以实现, 因此称为ring3下穿透.


郑重声明:资讯 【影子系统及其实现原理_453013800的空间_百度空间】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——