【问题标题】:What is a Sandbox什么是沙盒
【发布时间】:2011-09-08 04:19:54
【问题描述】:

当防病毒软件在称为“沙盒”的虚拟环境中运行某些应用程序时,从 Windows 内核的角度来看,这个沙盒是如何精确工作的?

这样的沙盒难写吗?

【问题讨论】:

    标签: c++ windows kernel sandbox


    【解决方案1】:

    在高层次上,此类沙箱是内核驱动程序,它拦截对 API 的调用,并使用挂钩修改这些 API 返回的结果。不过,整个沙盒解决方案是如何在幕后工作的,可以轻松填满几本书。

    至于难度,它可能是你写的最难的东西之一。您不仅必须为操作系统内核提供的大多数内容提供挂钩,而且您必须防止应用程序访问其他进程的内存空间,您必须有一种方法来保存程序所做更改的状态,所以该程序没有意识到它在沙箱下运行。您必须在内核模式下完成所有这些工作,这有效地限制了您使用 C,并迫使您处理不同类型的内存,例如分页池和非分页池。哦,您必须非常快速完成所有这些操作,这样用户才会觉得在您的沙箱中运行应用程序是值得的。大多数用户无法容忍 50% 以上的性能下降。

    【讨论】:

    • 在性能方面——不仅仅是用户应用程序,一些 AV 程序使用的一种策略是在环境的虚拟副本上执行正在检查的代码,并寻找可疑活动。当然,这也有性能要求,尤其是在一次扫描大量文件时,但被测代码的 UI 响应性无关紧要。
    • @Steve:这是实现 A/V 工具的一种方式,但这不是沙箱。这是一个基于主机的入侵防御系统 (HIPS)。这些比真正的沙盒要简单得多。
    • 小伙伴们,有没有这类题材的书?
    • @James:不太可能。我所知道的唯一一个甚至尝试过这样的事情的群体是 Sandboxie 人——如今,现代虚拟机管理程序几乎消除了对沙箱的大部分需求。 (毕竟,代码可能能够突破沙箱,因为它在运行时拥有 CPU;但它不能突破管理程序,因为管理程序一直拥有 CPU)
    猜你喜欢
    • 2016-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-21
    • 2016-11-19
    • 2020-06-16
    • 2011-09-27
    • 2016-01-24
    相关资源
    最近更新 更多