如何使Lua脚本不可反编译?

如何使Lua脚本不可反编译?,lua,decompiler,grand-theft-auto,Lua,Decompiler,Grand Theft Auto,我有很多Lua脚本(用于多人游戏mod Multi-Theft Auto),出于很多原因,包括防盗,都已经编译好了。事实上,这只是一种防盗装置,就像Luadec一样(http://luadec51.luaforge.net/)可以轻松地反编译脚本。有没有人对如何使我的脚本不可反编译有什么建议?加密;这是唯一可行的办法。当然,由于您的程序必须对它们进行解密,因此它们可以直接从内存中获取解密后的数据 所以不,你无能为力。在某种程度上,任何方法都将“只是一种防盗装置”。即使编译成实际的汇编程序也只是一

我有很多Lua脚本(用于多人游戏mod Multi-Theft Auto),出于很多原因,包括防盗,都已经编译好了。事实上,这只是一种防盗装置,就像Luadec一样(http://luadec51.luaforge.net/)可以轻松地反编译脚本。有没有人对如何使我的脚本不可反编译有什么建议?

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

所以不,你无能为力。在某种程度上,任何方法都将“只是一种防盗装置”。即使编译成实际的汇编程序也只是一种威慑,因为它可以反编译成与原始源代码并不完全不同的东西


问题只是你想给用户带来多少麻烦。加密可能会给你带来最大的好处。这将迫使他们必须遍历可执行文件,以找出如何从内存中提取数据。大多数临时用户都不想这样做。

如果你真的想认真点,你可以更改lua vm生成和使用的操作码,那么它就不能通过现成的软件进行反编译。尽管这可能会给您带来更多的问题,但您必须支持自己的lua版本,而且您可能无法使用luajit之类的东西

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

[更新]


从源代码看,这可能相当简单,有两个文件lopcode.c和lopcode.h,如果您只需更改其中操作码的顺序,就可以完成。如果你最终这样做了,它是否有效,请发帖。

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


您最好希望反编译的代码对人来说尽可能难以理解。

Multi-Theft Auto现在支持脚本加密。您可以在线编译或下载独立编译器。

也可以通过更改VM指令中操作数的顺序来增加编译难度。请注意,如果您可以访问字节码列表器(如
luac
提供的列表器),则此方法可能无法完全工作,因为您可以进行反向工程命令。但这将是一种痛苦,可能会让大多数人望而却步。或者是对有动机的黑客的挑战。:-)事实上,没有任何东西可以用十六进制转储来阻止这个专用的黑客。如果您按照下面Nicol的建议将其包含在加密中,并首先通过lua模糊器运行它,则只剩下真正专用的。