【发布时间】:2011-09-08 04:19:54
【问题描述】:
当防病毒软件在称为“沙盒”的虚拟环境中运行某些应用程序时,从 Windows 内核的角度来看,这个沙盒是如何精确工作的?
这样的沙盒难写吗?
【问题讨论】:
标签: c++ windows kernel sandbox
当防病毒软件在称为“沙盒”的虚拟环境中运行某些应用程序时,从 Windows 内核的角度来看,这个沙盒是如何精确工作的?
这样的沙盒难写吗?
【问题讨论】:
标签: c++ windows kernel sandbox
在高层次上,此类沙箱是内核驱动程序,它拦截对 API 的调用,并使用挂钩修改这些 API 返回的结果。不过,整个沙盒解决方案是如何在幕后工作的,可以轻松填满几本书。
至于难度,它可能是你写的最难的东西之一。您不仅必须为操作系统内核提供的大多数内容提供挂钩,而且您必须防止应用程序访问其他进程的内存空间,您必须有一种方法来保存程序所做更改的状态,所以该程序没有意识到它在沙箱下运行。您必须在内核模式下完成所有这些工作,这有效地限制了您使用 C,并迫使您处理不同类型的内存,例如分页池和非分页池。哦,您必须非常快速完成所有这些操作,这样用户才会觉得在您的沙箱中运行应用程序是值得的。大多数用户无法容忍 50% 以上的性能下降。
【讨论】: