我有一个在C ++编译程序(tg)上运行的Lua脚本。我的C ++程序是tdbot。 Lua脚本是用Lua 5.2编写的。有什么方法可以将Lua文件添加到此C ++程序中?
我想实现此目的以保护我的许可证代码。
答案 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代码/字节码。还需要对嵌入字节码进行预处理。