我有一个在C ++编译的程序(TG)运行的Lua脚本。我的C ++程序tdbot。该Lua的脚本编写在Lua 5.2。有什么办法,我可以在我的Lua文件添加到这个C ++程序?
我想实现这个保护我的许可证代码。
怎么样使用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代码中嵌入该代码,你可以考虑从内存而不是文件加载Lua代码/字节码luaL_loadbuffer
。还需要预先嵌入过程字节码。