【问题标题】:What to do if there are no functions left?如果没有剩下的功能怎么办?
【发布时间】:2019-11-03 14:02:12
【问题描述】:

如果没有剩余功能怎么办?

是否有无法重新定义的函数,或者至少有办法将函数恢复到原始状态?

例如:

for k, v in pairs(_G) do _G[k] = nil end
print("testing") -- error: attempt to index global '_G' (a nil value)

我知道删除所有函数然后尝试调用它们没有任何意义,但想象一下你根本没有任何函数和库。那你会怎么做呢?

【问题讨论】:

  • 你现在有了一个理想的沙箱 :) 开个玩笑,只是在擦除全局环境之前将稍后需要的函数复制到局部变量中。
  • 从头开始编写自己的库?
  • return 42 -- or whatever the answer is 返回列表是函数唯一可以产生的效果。

标签: lua luajit


【解决方案1】:

使用局部变量来存储你仍然需要的函数,然后将环境表中的所有内容都设置为nil。例如,最好删除 debug 库之类的东西,也许还有一些 IO 函数;不过,print 之类的东西可能很适合保留。

【讨论】:

  • 感谢您的回答,但不幸的是这无济于事,因为黑客可以在脚本加载之前复制任何函数
猜你喜欢
  • 1970-01-01
  • 2012-06-19
  • 1970-01-01
  • 1970-01-01
  • 2021-07-29
  • 1970-01-01
  • 1970-01-01
  • 2019-12-24
  • 1970-01-01
相关资源
最近更新 更多