gpt4 book ai didi

C++:有什么方法可以到达 'jail function' 吗?

转载 作者:搜寻专家 更新时间:2023-10-31 00:48:44 26 4
gpt4 key购买 nike

嗯,这是一种网络服务器。

我加载 .dll(.a) 文件并将它们用作程序模块。

我递归地遍历目录并将这些库中的“_main”仿函数放入名称下的 std::map 中,该名称包含在特殊的“.m”文件中。

主目录下每个主机都有几个目录。

问题是我需要阻止使用“fopen”或任何其他文件系统函数来处理此主机目录之外的目录。

我能看到的唯一方法 - 为 stdio.h 编写一个 warp(我的意思是,编写具有文件名检查的 s_stdio.h)。

它可能是一个守护进程,捕获系统调用并识别某些东西?

添加

那么,如果是这样的情况呢:我只上传souses,查了之后直接在我的服务器上编译?好吧,这是我找到的唯一方法(所有内容仍然在一个地址空间内)。

最佳答案

由于 C++ 是低级语言,并且 DLL 被编译为机器代码,因此它们可以做任何事情。即使您包装了标准库函数,代码也可以直接执行系统调用,重新实现您包装的功能。

可能有效沙箱化此类 DLL 的唯一方法是某种虚拟化,因此代码不是直接运行,而是在虚拟机中运行。

更简单的解决方案是对应该沙盒化的可加载模块使用某种高级语言。一些高级语言在沙盒方面表现更好(Lua、Java),其他则不太好(例如 AFAIK 目前还没有针对 Python 实现的官方受限环境)。

关于C++:有什么方法可以到达 'jail function' 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2351794/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com