我在Google上找不到任何加密/混淆lua文件的工具,所以我决定在这里问一下。也许某个专业人士知道怎么做?(免费)。
我现在已经用lua做了一个简单的游戏,我不想让人们看到代码,否则他们很容易作弊。如何才能将.lua文件中的整个文本转换为随机的字母和内容?
我曾经用C#编程,我有一个叫做SmartAssembly的.NET混淆程序,它工作得很好。当有人尝试检查我的应用程序的代码时,它只是一堆字母和数字以及中文字符之类的东西。
有谁知道可以为lua做这件事的程序吗?只需加载要加密的文件,单击encrypt或soemthing,然后!它成功了!?
例如:
print('Hello world!')会变成像这样的东西
sdf9sd@@@&/sdfsdd9fd0f0fsf/&发布于 2014-03-29 23:25:16
只需预编译您的文件(块)并加载二进制块即可。luac允许您剥离调试信息。如果这还不够,可以在编译后的lua上定义自己的转换,尽可能去掉名称。不过,对lua混淆器的需求并不是很大。
此外,您还失去了使用嵌入式脚本语言的主要优点之一:可扩展性。
发布于 2014-03-30 02:08:25
最简单的混淆选项是像其他人建议的那样编译Lua代码,但是它有两个主要问题:(1)字符串在编译后的代码中仍然很容易看到,(2) Lua解释器的编译代码不可移植,所以如果你针对不同的架构,你需要有不同的编译块。
第一个问题可以通过使用预处理器来解决,该预处理器(例如)将字符串转换为数字序列,然后在运行时将它们连接起来。
如果不更改解释器就很难解决第二个问题,但是如果您可以选择解释器,那么LuaJIT将生成可移植的字节码,该字节码将在其所有平台上运行(运行相同版本的LuaJIT);请注意,LuaJIT字节码与Lua字节码不同,因此它不能由Lua解释器运行。
一种更复杂的选择是加密代码(可能在编译代码之前),但您需要权衡任何额外的机制(并在您的部分工作),以防止任何可能给用户带来的不便,以及有人破解保护带来的任何损失。我个人会使用一些足够简单的东西来阻止大多数好奇的用户,因为你可能无论如何都不会有机会对抗一个专注的黑客。
发布于 2014-03-30 01:11:47
您可以使用loadstring获取一个块,然后使用string.dump,然后应用一些转换,如循环字节、交换段等。转换必须是可逆的。然后保存到一个文件。
请注意,任何可以访问您的“加密器”Lua模块的人都知道如何解密您的文件。如果你用C/C++制作你的加密模块,任何有权访问源代码的人也会这样做,或者访问Lua加密模块的二进制文件,他们也可以require模块并取消代码的使用。使用解释型语言很难做到这一点:你可以通过上面的技术提高标准,但将其提高到需要大量工作(唯一的短期威慑)是非常困难的AFAIK。
如果你嵌入Lua解释器而不是C语言,这将使它变得非常困难(假设发布版本中所有符号都被剥离),人们将不得不习惯于单步执行汇编,但只需要一个有能力的人来破解算法,然后他们就可以将代码提供给其他人。
你还有兴趣做这件事吗?:)
https://stackoverflow.com/questions/22732908
复制相似问题