6

我有一个用 C++ 编写的程序(一个小游戏),它从 Lua 文件中获取配置(它们基本上是程序的模块)。例如,程序从 Lua 文件中获取它的名称、版本、它可以做什么和不可以做什么以及玩家可以做什么。问题是当我开始将这个小游戏分发给几个人时,他们可以配置我不想发生的 Lua 文件,所以我考虑过加密它们,然后在程序启动时解密它们,但我就是无法理解如何实际去做,以什么方式去做。总而言之,这是一个像我想象的那样简单的任务吗?

我怎么看是这样的:用某种程序以某种加密方法加密lua文件。将 C++ 代码写入程序,首先解密 Lua 文件,然后开始读取它们。这个概念正确吗?加密本身可以尽可能弱,只要它有效。

4

3 回答 3

5

通过使用 luac,我终于能够完成所有工作。

我用这个短语来编译它luac(在那里,tester.lua是输出文件的名称test.lua,是编译的文件):

luac -o tester.lua test.lua

无论是否编译,它都会自动运行。现在的问题是,任何人都可以将已编译的 lua 文件与非编译版本一起放置,并且它仍然可以工作,因为 dofile 可以读取正常和已编译的 lua。你们会建议什么作为解决方案,以便 dofile 只能读取已编译的 lua 文件而不是未编译的文件?

于 2013-11-07T22:09:17.423 回答
4

是的,基本上就是这样。

假设此刻你有类似的东西

runLuaFromFile("config.lua");

你想做

  • 将文本文件“config.lua”加载到内存中(例如作为字符串)
  • 解密你的字符串
  • runLuaFromMemory(myString);

显然runLuaFromFileandrunLuaFromMemory不是真正的函数,它们只是你正在使用的任何 Lua 系统的占位符

于 2013-11-07T15:15:37.210 回答
3

分发预编译的 Lua 文件而不是源代码可能足以满足您的目的。见luac

于 2013-11-07T16:23:26.870 回答