首页 > 代码库 > 沙盘工作原理浅谈

沙盘工作原理浅谈

最近在研究游戏多开原理时,发现多种实现多开的方法,其中一种方法:使用沙盘,引起我的注意,而且这种方法应用于实现多开可谓是小牛试刀。

沙盘实际上是一种安全软件,它可以让进程之间被逻辑隔离,在沙盘中执行的程序不实际修改或防止被修改系统的数据内容,如注册表、硬盘数据等。

以下是转载内容,是对沙盘的简单介绍:

 

因为有人问沙盘是什么,可能有些新人对沙盘还搞不清是什么东西,所以草草写了这篇小文,仅向新人简单介绍一下沙盘。

  沙盘英文名sandbox,也叫沙箱,顾名思义可以看做是一种容器,里面所做的一切都可以推倒重来,军事上常用沙盘来进行一些战争区域的地形模拟,这个你见过吧?不用了可以把沙子推平重来。

  我们所说的沙盘是一种安全软件,可以将一个程序放入沙盘运行,这样它所创建修改删除的所有文件和注册表都会被虚拟化重定向,也就是说所有操作都是虚拟的,真实的文件和注册表不会被改动,这样可以确保病毒无法对系统关键部位进行改动破坏系统。另外现在沙盘一般都有部分或完整的类似HIPS的程序控制功能,程序的一些高危活动会被禁止,如安装驱动,底层磁盘操作等。目前沙盘主要有两大类,一是采用虚拟技术的传统沙盘,另一个就是采用策略限制的沙盘。

  传统沙盘的典型代表之一就是sandboxie。看看它是怎么描述自己的,你就知道什么是沙盘了。

什么是sandboxie?

  当你运行一个程序时,程序会读取硬盘上的数据,这时数据由硬盘流向程序,然后数据经过处理很显示后再由程序写回到硬盘中。

 

  如果你运行一个游戏程序,它会先读取保存在硬盘中的数据记录,然后在你玩游戏的过程中显示出来,最后再写回硬盘以待下次使用。

  sandboxie的作用就是改变了程序写入数据的地点,不让它写回到硬盘中,而是写到由sandboxie创造的一个虚拟区域。

 

  上图展示了sandboxie的关键特性:一个虚拟的存储区域,或者称为沙盘。在读取数据时,数据由硬盘穿过沙盘到达程序,这个不受影响。但是在程序写入数据时,这些数据都被保存在沙盘中而不会写入到硬盘。

  如果你在沙盘环境下运行一个游戏,sandboxie会从硬盘读取数据并保存,然后游戏读取沙盘中的数据来满足它的需要。但是当游戏想写入数据时,sandboxie会拦截写入并把数据转移到沙盘中。

sandboxie的应用

  sbie会在一个被称为sandbox(沙盘)的隔离的虚拟区域运行程序。程序在此区域内运行不会受到影响,但是不能对系统做出永久的实际改变,程序所做的所有对文件和注册表的改动都仅仅在沙盘中有效。

  关于sandboxie的详细介绍请参考置顶教程帖中相关文章。

  除了sandboxie这种利用虚拟技术的沙盘,还有另外一种采用策略限制的软件也可以称之为沙盘,因为它也具有可以恢复所有程序所生成的文件和注册表键值的功能,称之为ROLLBACK(回滚),而对于修改和删除操作和传统沙盘不同的是采用的是策略限制。典型代表有defensewall。

  DW这种沙盘没有采用虚拟技术,因为虚拟技术目前还有一些缺陷的地方,如可能造成沙盘内程序的不稳定或资源占用升高等问题。所以在DW中运行的程序所生成的文件和注册表键值都是实机生成,DW会对它们进行追踪,所有这些生成的东西都受到策略限制。如在DW内的一个程序生成了一个可执行文件,当运行这个可执行文件时,这个文件会被DW追踪到自动加入非信任区,受到策略限制,这样一来确保了该文件不会对你的系统造成损害。而对系统重要文件和注册表键值的修改和删除同样会受到策略限制,禁止非信任程序进行操作。而传统沙盘对修改删除的操作是采用的虚拟化重定向技术,也就是说所有的修改删除操作都是在虚拟区域中完成,真正的文件和注册表是没有被修改或删除的。从技术上说DW更接近于传统HIPS,只是增加了对生成项的追踪限制功能,所以它是一个比较另类的沙盘。

  有关defensewall的详细机制的介绍请参考置顶教程帖中相关文章。

  目前比较主流的沙盘有sandboxie, defensewall, safespace, bufferzone, geswall.

 

文章转自:http://news.sanhaostreet.com/NewsData/2008/3/200834105419516.shtml

沙盘工作原理浅谈