0

我正在尝试在我的游戏中保护 LUA(玩家可以在 LUA 中创建脚本)。我已经删除了许多函数来创建各种沙箱(os.execute例如,AKA 删除函数。)但是,我的游戏确实使用从其他位置加载脚本来减少编码冗余。又名:

require("Scripts/Additional/Crafting")在文件的顶部。

对我来说,这很好,但我不知道将 require/load/file.read() 保留为没有限制的影响,或者如果可能覆盖它,以便他们无法从外部加载或读取文件服务器。

现在我正在使用 NLUA (C#) 和 LUA5.2。我在创建 LUA 状态时删除了这些功能。

我想做的是保留 LOAD/REQUIRE/etc,但事先通过初始检查覆盖它,以确保它们位于 SCRIPT 目录中。新函数本身不可编辑(因为我将使用 NLUA 在 C# 中对其进行硬编码,或者在他们无法访问的文件夹之外创建一个单独的文件)。

或者,我可以通过 C# 对这些函数的脚本进行快速检查,并使用 REGEX 验证它们使用的目录,但我想知道 LUA 是否可以自己处理它。

抱歉,如果没有正确解释。

4

1 回答 1

0

Lua >=5.2 具有_ENV对沙盒环境有用的功能环境,就像你的情况一样。见http://lua-users.org/wiki/EnvironmentsTutorial

于 2020-02-21T16:42:43.383 回答