gpt4 book ai didi

c++ - Lua,我可以禁用 C++ 中的部分语言吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:06:52 26 4
gpt4 key购买 nike

假设我在 C++ 应用程序中嵌入了 Lua。这个问题听起来可能很奇怪,但我很感兴趣,是否有一种标准方法可以从 C++ 端禁用 Lua 功能?

例如,我想禁用新变量的创建,除了一些已定义的变量,如下所示:

local time = 10
local size = 20
function test()
return time * size
end

如果我定义了 timesizetest 函数以外的任何东西,我想让 Lua VM 失败。这可能不破解 VM 本身吗?

或者例如我想禁用循环(forwhile 语句)。

最佳答案

限制可以创建或访问的 global 变量的名称很容易:只需将您的脚本加载到具有适用于 __index__newindex 的元方法的环境中

限制本地变量的名称需要一些深入的黑客攻击,而且可能不值得,因为它们不会影响宿主程序。

限制关键字不能开箱即用,但可以通过一些简单的 hack 来完成:

要去除一些关键字,只需在llex.c中的luaX_tokens中的相关字符串中添加一个空格即可。这些关键字将可用于变量名,相应的语法结构将不可访问并会引发错误。例如,要删除循环,请禁用 forwhilerepeat。您可以保留 inuntil,但它们不会执行任何操作。如果您想动态执行此操作,请参阅 this lua-l message .

关于c++ - Lua,我可以禁用 C++ 中的部分语言吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28365431/

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