c++ - 什么是沙盒

标签 c++ windows kernel sandbox

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

这样的沙盒难写吗?

最佳答案

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

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

关于c++ - 什么是沙盒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6233566/

相关文章:

java - 服务器端收到 UDP 错误数据

windows - 在 Windows 7 上安装 Haskell 模块

kernel - Beaglebone Black 的 SPIDEV、设备树和 .dtbo 名称出现问题

c++ - 二叉搜索树递归插入

c++ - 使用索引元素进行操作时,Range for 循环不起作用

c# - 在构建时自动将 C++ 库复制到 C# 项目? ( Visual Studio 2010)

c - 未定义的函数在内核linux中插入新模块

windows - 获取父文件夹的相对路径

c# - DISM.exe 返回代码?

linux - 使用 kprobes 获取函数参数