lua的加密方式有不少,其中以luac和string.dump为例,首先到官网下载lua源码包,http://www.lua.org/ftp/,建议不要选最新的几个,他有个etc文件夹是没有了的,看了一下没看到整合到哪里去了,暂时不管因为和目的无关。
下载好了之后打开一个vs命令行工具
其中x86是32位的,x86_64是64位的,一般选64,在命令行中使用cd 进入lua目录(刚才解压后的目录),然后输入 "etc\luavs.bat" 回车
会编译生成一个文件在src目录下,有个luac.exe文件,可设置为环境变量,略
cmd,如果没设置环境变量则cd到目录下,键入 luac -o 生成luac文件后目录 需要的lua文件目录
确认无误回车,不报错这显示空一行,文件生成是不是很简单呢?可能会有一个问题是运行会报错,说是未编译,可以尝试改用32编译.
无意中博猪还看到string.dump()这个函数,用例见下
local p=loadfile("close2.lua") --这是需要被加密的文件
local f=io.open("text.lc","wb") --新建一个文件
f:write(string.dump(p)) --把需要加密的文件用string.dump处理,生成的文件就是二进制文件啦
f:close()
另外,要读取运行这个二进制文件也是很简单的
local ff =loadfile("text.lc","b") --加载文件
ff =io.open("text.lc","r")
local jk=ff:read("*a")
ff:close()
local thefunc=loadstring("jk") --这里要注意的是有些版本似乎loadstring被取消了,旧版本的lua里才有,可以
改用load
thefunc() --运行加密文件
编译好了的确可以运行,但是我想了一下,用另一个.lua文件来ruquire这个luac文件,发现会报错,也就是无法require加密文件,后面各种改也没办法,不知道是真的不行还是我没找对方法,有方法的希望留言,感谢。