我怀疑一些 Lua 代码被混淆了。我该如何去混淆它?
我认为代码被混淆了,因为它看起来与普通的 Lua 代码非常不同,但我知道它是有效的 Lua 代码,因为 Lua 解释器仍然会编译和运行代码。
我有对代码进行去混淆的合法权益,并且不打算违背作者的意愿分发它或修改它以规避任何 DRM 机制。
Lua源码混淆一般有两种方式:
直接混淆代码,主要是通过重命名变量、引入干扰和重构代码以使其更难理解
对源代码进行编码并将其作为字符串嵌入到 Lua 文件中,该文件仅解码、加载和运行编码后的 real 程序。
在现实中,经常使用两者的组合:程序被混淆,然后编码并包装在一个字符串中。最后,加载和运行字符串的代码经常被再次混淆。
用于使 Lua 代码更难遵循的典型机制包括:
string.gsub
、table.concat
等一般来说,手动去混淆此类代码的步骤通常非常相似:重新格式化代码以使其更容易遵循控制流,然后弄清楚每个变量代表什么并重命名它们。为此,通常需要对语言有很好的理解,因为需要了解混淆利用的所有规则,使代码更难理解。需要注意的一些规则:
getfenv
和setfenv
__index
设置为 string
;
来完成。有关反混淆特定 Lua 代码片段的更多详细帮助,您可以在以下其他在线社区中提问:
但记住:不要问,只要问
请注意,这些不是官方社区。有关更多选项,请参阅 Lua 官方网站上的 Community 页面。