【发布时间】:2019-10-06 04:57:56
【问题描述】:
我使用的是LuaJIT 2.1,当我需要隐藏源代码时,我先将其混淆以防止脚本被反编译,然后再编译。
我们知道我们可以通过重新定义来挂钩 LUA 中的任何函数:
local __load = load
load = function(data, ...)
-- some stuff, e.g. you can unpack the data var to a file
return __load(data, ...)
end
如果有人将我的脚本与他们的脚本一起加入(例如上面),他们可以真正挂钩我脚本中的任何内置和全局函数,以及访问我自己定义的全局变量和函数(这就是为什么我总是将所有函数和变量定义为本地函数)。
所以,问题是我如何调用它们的原始函数或至少将它们恢复到它们的原始块。如果这是可能的话。
可能没有帮助的答案:
-
_G['function_name']包含新函数的地址。 - 用
pcall(string.dump, function_name)检查函数是件好事,但它也可以被钩住。
如果你听不懂我说的话:
- “加入脚本”是指使用
load或loadstring将它们相互组合,之后这些脚本可以相互访问。
【问题讨论】: