arbear
驱动小牛
驱动小牛
  • 注册日期2004-12-02
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分281分
  • 威望64点
  • 贡献值0点
  • 好评度14点
  • 原创分0分
  • 专家分0分
阅读:1881回复:19

请问一下,这个功能大概怎么实现?特殊的虚拟磁盘

楼主#
更多 发布于:2005-02-22 13:31
我要做一个咚咚,来保护系统访问的保密性。
类似于Deep Freeze那样的。
比如说,我的程序启动以后,会在我现有的存储系统上加上一层过滤,比如我的系统有三个分区:C,D,E
当我家在我的程序之后,仍然是这三个分区,但是实际上是虚拟的,
即此时所有的文件操作看起来是在C,D,E三个分区上,而实际上则是在一个虚拟的存储空间上(比如内存,或者文件),并没有真正写入到实际的分区上,这样,一旦我退出系统,那么我的虚拟存储系统也立即失效,所有的数据,操作都将被删除。
这样,保证了一些特定操作不在系统中留下任何痕迹,即所有的操作都是在一个虚拟的存储系统上完成,但是用户态是感知不到这一点的,看起来仍像是在真实分区上一样。而只要关闭系统,那所有的历史纪录就都丢失了。

这个框架怎么实现? Deep Freeze可以做到,但是没有源代码。
不清楚机制
求救!

最新喜欢:

rhinocerosrhinoc...
管理员
驱动中牛
驱动中牛
  • 注册日期2004-04-23
  • 最后登录2010-06-17
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望67点
  • 贡献值0点
  • 好评度26点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-03-01 10:40
请参考致定贴子里面提供的信息
tooflat
论坛版主
论坛版主
  • 注册日期2002-07-08
  • 最后登录2014-03-11
  • 粉丝2
  • 关注0
  • 积分1007分
  • 威望551点
  • 贡献值3点
  • 好评度476点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-02-27 13:03
请问READ/Write IRP或当前stack的参数中是否含有磁盘位置(如扇区)信息?


当然
hook418
驱动牛犊
驱动牛犊
  • 注册日期2003-12-28
  • 最后登录2009-12-24
  • 粉丝0
  • 关注0
  • 积分191分
  • 威望28点
  • 贡献值0点
  • 好评度10点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-02-26 19:07
请问READ/Write IRP或当前stack的参数中是否含有磁盘位置(如扇区)信息?
tooflat
论坛版主
论坛版主
  • 注册日期2002-07-08
  • 最后登录2014-03-11
  • 粉丝2
  • 关注0
  • 积分1007分
  • 威望551点
  • 贡献值3点
  • 好评度476点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-02-25 14:49
请问呢如何获知是哪一个分区呢?
是c: 还是 d:
如何获知哪一个扇区呢?


盘符是可以改变的,所以通过盘符来判断没有意义
获知是哪个分区,可以分析分区链表,当然,这只是其中一种方法
arbear
驱动小牛
驱动小牛
  • 注册日期2004-12-02
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分281分
  • 威望64点
  • 贡献值0点
  • 好评度14点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-02-25 14:30
请问呢如何获知是哪一个分区呢?
是c: 还是 d:
如何获知哪一个扇区呢?
tooflat
论坛版主
论坛版主
  • 注册日期2002-07-08
  • 最后登录2014-03-11
  • 粉丝2
  • 关注0
  • 积分1007分
  • 威望551点
  • 贡献值3点
  • 好评度476点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-02-25 12:04
是在IRP_MJ_READ IRP_MJ_WRITE中重定向吗?


hook418
驱动牛犊
驱动牛犊
  • 注册日期2003-12-28
  • 最后登录2009-12-24
  • 粉丝0
  • 关注0
  • 积分191分
  • 威望28点
  • 贡献值0点
  • 好评度10点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2005-02-25 11:32
是在IRP_MJ_READ IRP_MJ_WRITE中重定向吗?
tooflat
论坛版主
论坛版主
  • 注册日期2002-07-08
  • 最后登录2014-03-11
  • 粉丝2
  • 关注0
  • 积分1007分
  • 威望551点
  • 贡献值3点
  • 好评度476点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2005-02-24 09:14
第一次读源扇区呢?
怎么从映射扇区里面读?


第一次当然要从源扇区读,总之你要确保你读到的数据是最新的数据
如果数据没有修改,那当然读源扇区了
arbear
驱动小牛
驱动小牛
  • 注册日期2004-12-02
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分281分
  • 威望64点
  • 贡献值0点
  • 好评度14点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2005-02-23 21:32
第一次读源扇区呢?
怎么从映射扇区里面读?
tooflat
论坛版主
论坛版主
  • 注册日期2002-07-08
  • 最后登录2014-03-11
  • 粉丝2
  • 关注0
  • 积分1007分
  • 威望551点
  • 贡献值3点
  • 好评度476点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2005-02-23 18:01
但是我要打开原来的文件呢?
比如说windows\\system32\\driver\\etc\\hosts文件
第一次打开,转向了,那岂不是找不到这个文件了?


怎么会找不到?
如果你修改了源扇区,就把该操作转向到其他扇区(映射扇区),
然后每次读源扇区的时候,你都要从映射扇区读啊
arbear
驱动小牛
驱动小牛
  • 注册日期2004-12-02
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分281分
  • 威望64点
  • 贡献值0点
  • 好评度14点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2005-02-23 15:13
但是我要打开原来的文件呢?
比如说windows\\system32\\driver\\etc\\hosts文件
第一次打开,转向了,那岂不是找不到这个文件了?
tooflat
论坛版主
论坛版主
  • 注册日期2002-07-08
  • 最后登录2014-03-11
  • 粉丝2
  • 关注0
  • 积分1007分
  • 威望551点
  • 贡献值3点
  • 好评度476点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2005-02-23 12:47
是啊
怎么镜像呢?
要保护原有系统,但也要保证原有系统的文件可被访问,只是在退出的时候才恢复原状。
而在退出之前,对所有的文件访问一切照常,这个怎么做到?

好像仅仅依靠捕获转向是不够的


捕获转向足够满足你的要求了,
因为你把所有的写操作都转向了,所以磁盘上原有的数据不会被破坏
arbear
驱动小牛
驱动小牛
  • 注册日期2004-12-02
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分281分
  • 威望64点
  • 贡献值0点
  • 好评度14点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2005-02-23 11:46
是啊
怎么镜像呢?
要保护原有系统,但也要保证原有系统的文件可被访问,只是在退出的时候才恢复原状。
而在退出之前,对所有的文件访问一切照常,这个怎么做到?

好像仅仅依靠捕获转向是不够的
hook418
驱动牛犊
驱动牛犊
  • 注册日期2003-12-28
  • 最后登录2009-12-24
  • 粉丝0
  • 关注0
  • 积分191分
  • 威望28点
  • 贡献值0点
  • 好评度10点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2005-02-23 10:35
我也有与搂主相同的的问题.如楼上所说,是否先将磁盘所用内容进行镜像备份?
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
15楼#
发布于:2005-02-22 22:53
哪里有类似的代码可供学习呢?
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
arbear
驱动小牛
驱动小牛
  • 注册日期2004-12-02
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分281分
  • 威望64点
  • 贡献值0点
  • 好评度14点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2005-02-22 20:50
哪里有类似的代码可供学习呢?
tooflat
论坛版主
论坛版主
  • 注册日期2002-07-08
  • 最后登录2014-03-11
  • 粉丝2
  • 关注0
  • 积分1007分
  • 威望551点
  • 贡献值3点
  • 好评度476点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2005-02-22 17:14
tooflat你做过类似的工作码?我对这个也很高兴去,能不能详细的说说,谢谢。


写个磁盘过滤驱动,对每次读写操作都作重定向,

比如我们要对C盘保护,首先我们分析磁盘数据,获得哪些扇区是文件系统已经占用的信息(需要知道该分区的类型,再根据分区类型分析磁盘数据,我以前做的支持fat和ntfs),记录下来,比如1,3,5扇区被文件系统占用,那么当文件系统写1扇区的时候,我们把数据写到2扇区,并记录这种影射关系,然后操作系统读1扇区的数据的时候,我们把操作定向到2扇区,如果操作系统写2扇区,那就把操作重定向到其他扇区,就可以了。

为了性能和占用的内存,你可以将扇区分组,比如32个扇区为一组,对组进行影射
paladinii
驱动中牛
驱动中牛
  • 注册日期2003-10-28
  • 最后登录2012-03-09
  • 粉丝0
  • 关注0
  • 积分282分
  • 威望74点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2005-02-22 14:40
tooflat你做过类似的工作码?我对这个也很高兴去,能不能详细的说说,谢谢。
Ideas for life!
tooflat
论坛版主
论坛版主
  • 注册日期2002-07-08
  • 最后登录2014-03-11
  • 粉丝2
  • 关注0
  • 积分1007分
  • 威望551点
  • 贡献值3点
  • 好评度476点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2005-02-22 14:00
写个磁盘过滤驱动,过滤所有读写操作,将这些操作定向到未使用的扇区中
游客

返回顶部