我如何使Lua脚本无法反编译?

我有许多编译过的 Lua 脚本(用于多人模式 Mod Multi Theft Auto),出于许多原因,包括防盗。实际上,这只是一种防盗手段,因为 Luadec (http://luadec51.luaforge.net/) 可以轻松地反编译脚本。有人有什么提示吗?如何使我的脚本不可反编译?

原文链接 https://stackoverflow.com/questions/8499839

点赞
stackoverflow用户734069
stackoverflow用户734069

加密

加密是唯一可行的方法。当然,由于您的程序必须对其进行解密,因此它们可以直接从内存中夺取解密后的数据。

所以,您无能为力。任何方法都只能在一定程度上起到“防盗”作用。即使编译成真正的汇编语言,这也只是一种威慑,因为可以将其反编译成与原始源代码不完全相似的内容。

问题仅在于您想要给用户带来多少麻烦。加密可能是最划算的方法。这将迫使他们必须浏览可执行文件,以找出如何从内存中插取数据。大多数普通用户都不会这样做。

2011-12-14 05:37:41
stackoverflow用户416047
stackoverflow用户416047

如果您想要变得非常严肃,您可以更改Lua虚拟机生成和使用的操作码,然后它就无法被现成的软件反编译。虽然这可能会给您带来更多问题,因为您必须支持自己的Lua版本,并且可能无法使用像luajit这样的东西。

要反编译它们,他们必须找出您想出的操作码映射并进行翻译。这可能不会太难做到,但我可能不会这样做。

[更新]

查看源代码可能相当容易,有两个文件lopcodes.c和lopcodes.h,也许如果您只更改它们中操作码的顺序,您就完成了。如果您最终这样做了并且它起作用或者不起作用,请发布。

2011-12-14 05:46:50
stackoverflow用户312586
stackoverflow用户312586

我认为这是不可能的。这种生物的本质(一个在非常小的VM上工作的非常简单的语言)基本上禁止了它。

你所能希望的最好的结果就是反编译代码对于人类来说尽可能难以理解。

2011-12-14 12:16:20
stackoverflow用户615405
stackoverflow用户615405

Multi Theft Auto 现在支持脚本加密。您可以在 http://luac.mtasa.com/ 上在线编译它们,也可以下载独立编译器。

2013-09-27 11:46:21