5

我有许多编译的 Lua 脚本(用于多人模式 Multi Theft Auto),原因有很多,包括防盗。实际上,这只是一种防盗措施,因为 Luadec (http://luadec51.luaforge.net/) 可以轻松反编译脚本。有没有人有关于如何使我的脚本不可反编译的任何提示?

4

4 回答 4

6

加密; 这确实是唯一可行的方法。当然,由于您的程序必须解密它们,因此它们可以直接从内存中抢走解密的数据。

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

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

于 2011-12-14T05:37:41.883 回答
2

如果你想变得非常认真,你可以更改 lua vm 生成和使用的操作码,那么现成的软件无法对其进行反编译。虽然这可能会给你带来更多的问题——你必须支持你自己的 lua 版本,而且你可能无法使用像 luajit 这样的东西。

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

[更新]

查看源代码可能相当容易,有两个文件 lopcode.c 和 lopcode.h 也许如果您只是更改这些操作码的顺序,您就可以完成。如果您最终这样做并且它是否有效,请发布。

于 2011-12-14T05:46:50.567 回答
2

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

于 2013-09-27T11:46:21.693 回答
1

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

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

于 2011-12-14T12:16:20.130 回答