将Lua文件添加到C ++程序

时间:2019-02-06 03:15:45

标签: c++ lua

我有一个在C ++编译程序(tg)上运行的Lua脚本。我的C ++程序是tdbot。 Lua脚本是用Lua 5.2编写的。有什么方法可以将Lua文件添加到此C ++程序中?

我想实现此目的以保护我的许可证代码。

1 个答案:

答案 0 :(得分:0)

使用lua字节码怎么办?与嵌入lua代码不同,对其进行反向工程并不是一件容易的事。当然它不是100%安全的,但是比lua文本代码难得多。

如果您不熟悉 bytecode ,则它是虚拟机的一种汇编语言。从概念上讲,“ C代码”-“汇编代码”的关系类似于“ lua代码”-“ lua字节码”。

让我告诉你如何做。

首先将您的a.lua文件编译为 lua字节码

$ luac -o a.luac a.lua

现在您有了a.luac,它是lua字节码。它是二进制格式。您可以以相同的方式使用luaL_loadfile。它会自动检测它是文本代码还是字节代码。例如:

#include "lauxlib.h"
#include "lua.h"
#include "lualib.h"

int main() {
  lua_State* L = luaL_newstate();
  luaL_openlibs(L);

  luaL_loadfile(L, "a.luac");
  lua_pcall(L, 0, 0, 0);

  lua_close(L);

  return 0;
}

如果您确实需要将此代码嵌入C代码中,则可以考虑使用luaL_loadbuffer,它从内存而不是文件中加载lua代码/字节码。还需要对嵌入字节码进行预处理。