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

我有一个 Lua 脚本,它在一个已编译的 C++ 程序(tg)上运行。我的 C++ 程序是 tdbot。Lua 脚本是用 Lua 5.2 写的。有没有办法将我的 Lua 文件添加到这个 C++ 程序中?

我想实现这个来保护我的许可证代码。

点赞
用户2683320
用户2683320

使用 Lua 字节码怎么样?与嵌入 Lua 代码不同,它不那么容易被反向工程分析。当然,它并不是100%安全,但比 Lua 文本代码要困难得多。

如果你不熟悉 字节码,它是一种虚拟机的汇编语言。概念上,“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 代码/字节码而不是文件。还需要进行字节码的预处理。

2019-02-07 05:11:22