gpt4 book ai didi

lua - 如何去混淆 Lua 脚本?

转载 作者:行者123 更新时间:2023-12-03 15:53:47 26 4
gpt4 key购买 nike

我有一些我怀疑被混淆的 Lua 代码。我该如何去混淆它?
我相信代码被混淆了,因为它看起来与普通的 Lua 代码非常不同,但我知道它是有效的 Lua 代码,因为 Lua 解释器仍然会编译和运行代码。
我对去混淆代码有合法的兴趣,并且不打算违背作者的意愿分发它或修改它以规避任何 DRM 机制。

最佳答案

Lua源码的混淆一般有两种方式:

  • 直接混淆代码,主要是通过重命名变量,引入牵引和重组代码,使其更难遵循
  • 对源代码进行编码并将其作为字符串嵌入到 Lua 文件中,该文件仅对编码后的真实程序进行解码、加载和运行。

  • 实际上,经常使用两者的组合:程序被混淆,然后编码并包装在一个字符串中。最后,加载和运行字符串的代码通常会再次混淆。

    用于使 Lua 代码更难遵循的典型机制包括:
  • 重命名标准函数,例如 string.gsub , table.concat
  • 将变量重命名为无意义
  • 用括号表示法替换表索引的点和冒号表示法
  • 对文字字符串使用十六进制表示法(通常与 3 结合使用。)

  • 一般来说,手动去混淆这些代码的步骤通常非常相似:重新格式化代码以使其更容易遵循控制流,然后弄清楚每个变量代表什么并重命名它们。为此,通常需要对语言有很好的理解,因为人们需要了解混淆所利用的所有规则,使代码更难理解。需要注意的一些此类规则:
  • 局部变量阴影:两个不同的变量可以在不同的作用域(甚至在同一作用域)中具有相同的名称。
  • 句法糖,例如点符号和冒号符号
  • 函数环境和 getfenvsetfenv
  • 元表,并且所有字符串与 __index 共享一个元表设置为 string
  • 空格在 Lua 中通常是无关紧要的,在某些情况下只需要分隔语句,这也可以用 ; 来完成。 .

  • 有关对特定 Lua 代码片段进行反混淆的详细帮助,您可以在以下其他在线社区中提问:
  • The Lua subreddit
  • The Lua Scripters Discord Server
  • The Lua Forum

  • 但请记住: Don't ask to ask, just ask
    请注意,这些不是官方社区。有关更多选项,请参阅 Community Lua 官方网站上的页面。

    关于lua - 如何去混淆 Lua 脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66121229/

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